废话不多说,在这里做的是一个图书购物车简单的小系统。
所以需要创建一个实体类,其中应该包括一个书本的所有内容,将其set,get,和构造方法补充完毕,将其类称为Book.java。
然后需要创建一个Dome.java来代替数据库,也就是说这个Dome里面的数据将作为数据库。接着就是Java web的三层模型,分别是Dao Service Servlet在这里做的都是模拟,因为是Dome.java模拟的是数据,所以也不用在连接数据库了,因为Dome里面的数据是Book类型的,所以在这里面使用了Map
下面就是Dao层的代码不需要数据库,所以这里 就简单了,直接创建新的方法就可以了。
创建GetAll()方法,获取存放书籍的Map集合。创建find的方法,根据关键字获取某本书籍,也就是获取的时候某一个id值 下面的book
因为购物车是一个整体,购物车里面放的是购物项,可以对其进行增加或者删除什么的操作,所以创建一个Cart.java这就是购物车类,创建CartItem.java这是购物车之中的购物项,
购物项中应该包括Book,以及这本书的quantity,还有价钱,需要注意的是该五项的价钱应该等于书的数量*这本书的价格。所以在补充set,get方法的时候,应该将其getPrice的方法重新在写一下。
购物车里面是购物项和购物车的总价格,在这里创建一个map集合Map
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 map=new LinkedHashMap<>();
public static MapgetAll(){
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 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" %>
显示所有书籍
书籍编号
名称
作者
详细信息
价格
购买
${me.key}
${me.value.name}
${me.value.author}
${me.value.description}
${me.value.price}
购买