Java Webショッピングカートの実現

あまりナンセンスではありませんが、ここに書籍のショッピング カートのシンプルで小さなシステムを示します。

実行結果のいくつかの写真は次のとおりです。
ここに画像の説明を挿入
ここに画像の説明を挿入

したがって、エンティティ クラスを作成する必要があります。エンティティ クラスには書籍のすべての内容が含まれ、その 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>

おすすめ

転載: blog.csdn.net/guoguozgw/article/details/100013871