あまりナンセンスではありませんが、ここに書籍のショッピング カートのシンプルで小さなシステムを示します。
実行結果のいくつかの写真は次のとおりです。
したがって、エンティティ クラスを作成する必要があります。エンティティ クラスには書籍のすべての内容が含まれ、その set、get、および構築メソッドを完了し、そのクラス Book.java を呼び出す必要があります。
次に、データベースを置き換える Dome.java を作成する必要があります。これは、この Dome 内のデータがデータベースとして使用されることを意味します。次に、Java Web の 3 層モデルがあります。ここでの Dao Service Servlet はすべてシミュレーションです。Dome.java がデータをシミュレートするため、データベースに接続する必要はありません。Dome のデータは Book タイプであるため、ここでは Map<String, Book> の型を使用し、map.put のメソッドを使用してデータを追加します。
以下はデータベースを必要としない Dao レイヤーのコードです。ここでは単純で、新しいメソッドを直接作成するだけです。
GetAll() メソッドを作成して、書籍を格納する Map コレクションを取得します。キーワードに応じて書籍、つまり取得時に特定のID値の書籍を取得するfindメソッドを作成する
ショッピング カートは全体であるため、ショッピング カート内にはショッピング アイテムがあり、追加または削除できます。そのため、ショッピング カート クラスである Cart.java を作成し、ショッピング カート内の CartItem.java を作成します。ショッピング商品には
本、本の数量、価格が含まれており、5 つの商品の価格は本の数量 * 本の価格に等しいことに注意してください。したがって、setメソッドとgetメソッドを補足する場合は、getPriceのメソッドを書き換える必要があります。
ショッピング カートにはショッピング アイテムとショッピング カートの合計価格が含まれています。ここでマップ コレクション Map<String, CartItem> を作成します。作成メソッド: addBook はショッピング アイテムをショッピング カートに追加します。作成メソッド: getPrice 合計価格ショッピングカートのすべての商品の価格を合計します。本を追加する場合、ショッピング商品がショッピングカートに存在するかどうかを確認する必要があります。存在しない場合は、新しい CartItem が必要です。渡された本は、ユーザーがパラメーターとして使用され、ショッピング項目の数が 1 に設定されます。その後、map.put を使用してショッピング項目をショッピング カートに追加します。ショッピング項目が存在する場合は、そのショッピング項目に 1 を追加するだけです。数量を設定し、getPrice メソッドを変更してショッピング カートの合計金額を追加します。価格はすべてのショッピング アイテムの価格の合計です。
Service レイヤーは、Dao レイヤー、getAll()、findBook() の呼び出しであり、書籍の追加と購入を行います。buyBook(String id, Cart カート)、フロントエンドの追加ボタンをクリックすると、本の ID が sevlet から渡され、サーブレットがサービスを呼び出し、サービスが dao 層と Cart を呼び出します。はプロジェクト内にあります。実際に 1 回クリックされました。次に、本をショッピング カートに追加します。次に、deletebook メソッドがあります。deletebook(String id, Cart cart) は、ショッピング カートが空の場合、直接例外をスローして表示される可能性があるため、ここで例外クラス メソッドをカスタマイズする必要があります。カートを出したら空です。次に削除します。まずショッピング カート内のすべてのショッピング項目を取得してから、文字列の 1 つを見つけて削除します。ショッピング カートを空にするには、clearCart (カート カート)、
cart.getMap().clear を使用して直接クリアします。実際には、ショッピング カートの数量によって空白のバーが表示され、自由に入力できます。ここで設定する必要があります。購入したい本を入力したが、購入をキャンセルすると、数量が変更されるとします。価格は変わっていないため、バックエンドデータを適時に更新する必要があります。updateCart(Cart cart,String bookid,intquantity) は、ID はフロントエンドからのみ取得でき、カートもあるため、ここでも依然として必要であり、カート、ID、および数量は、フロントエンドであり、番号は変更された CartItem からのみ取得できます。
最後はサーブレットとフロントエンドの間の接続で、いくつかの非常に一般的で基本的な画面を実現します。比較的粗雑です。
これは、それをカプセル化するための Book コードです。
package org.awen.enetity;
public class Book {
private String id;
private String name;
private String author;
private String description;
private double price;
public Book(String id, String name, String author, String description, double price) {
super();
this.id = id;
this.name = name;
this.author = author;
this.description = description;
this.price = price;
}
public Book() {
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
@Override
public String toString() {
return "Book [id=" + id + ", name=" + name + ", author=" + author + ", description=" + description + ", price="
+ price + "]";
}
}
その後、ドームにカプセル化されます
package org.awen.enetity;
import java.util.LinkedHashMap;
import java.util.Map;
public class Domo {
static Book book1=new Book("1","java","zhongfucheng","好书",99);
static Book book2=new Book("2","javaweb","hhhh","不好的书",44);
static Book book3=new Book("3","ajax","xiaoming","一般般的书",23);
static Book book4=new Book("4","spring","xiaohong","好书",56);
private static Map<String ,Book> map=new LinkedHashMap<>();
public static Map<String ,Book>getAll(){
map.put("1", book1);
map.put("2", book2);
map.put("3", book3);
map.put("4", book4);
return map;
}
/*
public static void main(String args[]) {
}
*/
}
サービス層のコード記述:
package org.awen.service;
import java.util.Map;
import org.awen.dao.BookDao;
import org.awen.enetity.Book;
import org.awen.enetity.Cart;
import org.awen.enetity.CartItem;
import org.awen.exception.CartNotFoundException;
public class BusinessService {
static BookDao bookDao=new BookDao();
/***
* 列出来所有的书
*
*/
public static Map getAll() {
return bookDao.getAll();
}
/***
* 根据书的id获取书
*
*
*/
public Book findBook(String id) {
return bookDao.find(id);
}
/***
* 在购买书籍的时候,
*
*
* 把用户想买的书籍添加到当前用户的购物车上
*/
public void buyBook(String id,Cart cart) {
Book book=bookDao.find(id);
cart.addBook(book);
}
/***
* 删除购物车中的某一本书籍
* @throws CartNotFoundException
*
*/
public void deletebook(String id,Cart cart) throws CartNotFoundException {
if(cart==null) {
throw new CartNotFoundException("购物车为空");
}
//把购物项移出去集合就行了 得到这个 Map<String ,CartItem> map 然后从这个map中remove去除掉这个想删除的id
cart.getMap().remove(id);
}
/***
* 清空购物车的东西
* @throws CartNotFoundException
*
*
*/
public void clearCart(Cart cart) throws CartNotFoundException {
if(cart==null) {
throw new CartNotFoundException("购物车为空!");
}
cart.getMap().clear();
}
/***
* 更新购物车的数目 改变成 可以选择 填空的
* @throws CartNotFoundException
*
*/
public void updateCart(Cart cart,String bookid,int quantity) throws CartNotFoundException {
if(cart == null) {
throw new CartNotFoundException("购物车为空!!");
}
CartItem item=cart.getMap().get(bookid);
item.setQuantity(quantity);
}
}
サーブレットのコード。ここでは、JSP 上にすべてのショッピング アイテムを表示します。
package org.awen.Servlet;
import java.io.IOException;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.awen.service.BusinessService;
/**
* Servlet implementation class JSPServlet
*/
@WebServlet("/JSPServlet")
public class JSPServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
/***
* 调用service层的方法,获取得到存放书籍的Map集合
*
*
*/
BusinessService businessservice=new BusinessService();
Map books=businessservice.getAll();
/***
* 存放request域对象中,交给jap页面显示
*
*/
request.setAttribute("books", books);
/***
* 跳转到jsp页面中
*
*/
request.getRequestDispatcher("/WEB-INF/listBook.jsp").forward(request, response);
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
すべての書籍を表示するための JSP コード:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>显示所有书籍</title>
</head>
<body>
<table border="1px">
<tr>
<td>书籍编号</td>
<td>名称</td>
<td>作者</td>
<td>详细信息</td>
<td>价格</td>
<td>购买</td>
</tr>
<c:forEach items="${books}" var="me">
<tr>
<td>${me.key}</td>
<td>${me.value.name}</td>
<td>${me.value.author}</td>
<td>${me.value.description}</td>
<td>${me.value.price}</td>
<!-- 把想要买的书籍的id传过去给servelt,不然服务器不知道你想买的是哪一个 -->
<td><a href="BuyServlet?bookid=${me.key}">购买</a>
</tr>
</c:forEach>
</table>
</body>
</html>