java web购物车案例的实现

废话不多说,在这里做的是一个图书购物车简单的小系统。

运行结果部分图片显示:
在这里插入图片描述
在这里插入图片描述

所以需要创建一个实体类,其中应该包括一个书本的所有内容,将其set,get,和构造方法补充完毕,将其类称为Book.java。

然后需要创建一个Dome.java来代替数据库,也就是说这个Dome里面的数据将作为数据库。接着就是Java web的三层模型,分别是Dao Service Servlet在这里做的都是模拟,因为是Dome.java模拟的是数据,所以也不用在连接数据库了,因为Dome里面的数据是Book类型的,所以在这里面使用了Map<String,Book>的类型,将数据使用map.put的方法添加进去。

下面就是Dao层的代码不需要数据库,所以这里 就简单了,直接创建新的方法就可以了。
创建GetAll()方法,获取存放书籍的Map集合。创建find的方法,根据关键字获取某本书籍,也就是获取的时候某一个id值 下面的book

因为购物车是一个整体,购物车里面放的是购物项,可以对其进行增加或者删除什么的操作,所以创建一个Cart.java这就是购物车类,创建CartItem.java这是购物车之中的购物项,
购物项中应该包括Book,以及这本书的quantity,还有价钱,需要注意的是该五项的价钱应该等于书的数量*这本书的价格。所以在补充set,get方法的时候,应该将其getPrice的方法重新在写一下。

购物车里面是购物项和购物车的总价格,在这里创建一个map集合Map<String,CartItem>,创建方法:addBook将购物项加入到购物车里面,创建方法:getPrice购物车的总价就是所有购物项的价格加起来,addBook的时候,还需要判断购物车是否存在该购物项,如果不存在的话就需要new CartItem,将用户传递过来的书籍作为其中的参数,将购物项的数量设置为1,然后使用map.put,将购物项加入到购物车其中,如果该购物项存在的话,那么只需要将其的数量设置加1就可以了,然后对getPrice的方法进行修改,将购物车的总价就是所有的购物项的价格加起来

Service层就是对Dao层的调用,getAll(),findBook(),添加购买书籍。buyBook(String id,Cart cart),当你在前端点击添加这个按钮的时候,将会从sevlet中将这本书的id传过来,servlet调用service ,service进而调用dao层,Cart在该项目之中其实就被点击了一次。然后将其book添加到购物车之中。然后就是其中的deletebook的方法,deletebook(String id,Cart cart)在这里需要自定义异常类的方法,因为存在可能性,也就是说假如 你的购物车为空的话,就直接抛出异常,显示出你的购物车是空的。然后删除,先获取到这个购物车中所有的购物项,然后查找其中一个String,将其remove就可以了。清空购物车的东西:clearCart(Cart cart),
直接cart.getMap().clear直接清除掉 就可以了。购物车的数量其实是可以给你一个空条让你进行随意填入的,在这里就需要设置一下,假设你填入了你要买的书籍,但是你取消了购买,然后数目并没有改变,价格也没有改变,所以需要及时 的更新后端数据。updateCart(Cart cart,String bookid,int quantity),因为只能从前端中获取到id,还有一个cart,所以在这里还是需要,从前端那里传过来cart, id, quantity ,该数目只能从CartItem之中修改。

最后就是servlet和前端的对接,实现的都是一些很普通,基础的画面。所以比较简陋。

这是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 + "]";
	}
	
}

然后封装成Dome

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[]) {
	}
	
	*/
}

Service层的代码书写:

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);
	}
}

Servlet的代码,这里说明的是 将其所有的购物项展示到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
今日推荐