Realización del caso del carrito de compras web java

No hay muchas tonterías, aquí hay un pequeño sistema simple de un carrito de compras de libros.

Algunas imágenes de los resultados de ejecución muestran:
inserte la descripción de la imagen aquí
inserte la descripción de la imagen aquí

Por lo tanto, es necesario crear una clase de entidad, que debe incluir todo el contenido de un libro, completar sus métodos set, get y construcción, y llamar a su clase Book.java.

Luego, debe crear un Dome.java para reemplazar la base de datos, lo que significa que los datos de este Dome se utilizarán como base de datos. Luego está el modelo de tres niveles de Java web. El Dao Service Servlet aquí es todo simulación, porque Dome.java simula datos, por lo que no hay necesidad de conectarse a la base de datos, porque los datos en Dome son de tipo Libro, por lo que el Aquí se utiliza el tipo Map<String, Book> y los datos se agregan mediante el método map.put.

El siguiente es el código de la capa Dao que no requiere una base de datos, por lo que aquí es simple, simplemente cree un nuevo método directamente.
Cree el método GetAll() para obtener los libros de almacenamiento de la colección Map. Cree un método de búsqueda para obtener un libro de acuerdo con la palabra clave, es decir, el libro con un valor de id determinado en el momento de la adquisición.

Debido a que el carrito de compras es un todo, hay artículos de compras en el carrito de compras, que se pueden agregar o eliminar, así que cree un Cart.java, que es la clase del carrito de compras, y cree CartItem.java, que está en el carrito de compras. Artículo de compra,
el artículo de compra debe incluir Libro, la cantidad del libro y el precio. Cabe señalar que el precio de los cinco artículos debe ser igual a la cantidad del libro * el precio del libro. Por lo tanto, al complementar los métodos set y get, se debe reescribir el método getPrice.

El carrito de compras contiene el artículo de compras y el precio total del carrito de compras. Cree una colección de mapas Map<String, CartItem> aquí. El método de creación: addBook agrega el artículo de compras al carrito de compras. El método de creación: getPrice El precio total del carrito de compras es todo Sume los precios de los artículos de compras. Al agregar Book, es necesario determinar si el artículo de compras existe en el carrito de compras. Si no existe, se requiere un nuevo CartItem. El libro pasó por el usuario se usa como parámetro y la cantidad de artículos de compras se establece en 1. y luego use map.put para agregar el artículo de compras al carrito de compras.Si el artículo de compras existe, solo necesita agregar 1 a su configuración de cantidad, y luego modifique el método de getPrice para agregar el valor total del carrito de compras El precio es la suma de los precios de todos los artículos de compras

La capa Servicio es la llamada a la capa Dao, getAll(), findBook(), agregar y comprar libros. buyBook (String id, Cart cart), cuando hace clic en el botón Agregar en la parte frontal, la identificación del libro se pasará desde el sevlet, el servlet llama al servicio y el servicio luego llama a la capa dao, y el carrito está en el proyecto En realidad, se hizo clic una vez. Luego agregue el libro al carrito de compras. Luego está el método deletebook.deletebook(String id, Cart cart) necesita personalizar el método de clase de excepción aquí, porque existe la posibilidad, es decir, si su carrito de compras está vacío, lanzará directamente una excepción y mostrará Fuera su carrito está vacío. Luego elimine, primero obtenga todos los artículos de compras en el carrito de compras, luego busque uno de los Strings y elimínelo. Vacíe el carrito de compras: clearCart (carrito de carrito),
simplemente límpielo directamente con cart.getMap().clear. La cantidad del carrito de compras en realidad puede proporcionarle una barra en blanco para que la llene a voluntad. Debe configurarla aquí. Supongamos que completa los libros que desea comprar, pero cancela la compra y luego la cantidad desaparece. no cambia El precio No ha cambiado, por lo que los datos de back-end deben actualizarse a tiempo. updateCart(Carro carrito,String bookid,int cantidad), porque la identificación solo se puede obtener desde el front-end, y también hay un carro, por lo que todavía se necesita aquí, y el carro, la identificación y la cantidad se pasan desde el front-end, y el número solo se puede obtener del CartItem modificado entre.

La última es la conexión entre el servlet y el front-end, que realiza algunas pantallas muy comunes y básicas. Tan relativamente crudo.

Este es el código del libro para encapsularlo.

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

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

Escritura de código de la capa de Servicio:

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

El código del Servlet, aquí es para mostrar todos sus artículos de compras en el 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);
	}

}

El código jsp para mostrar todos los libros:

<%@ 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>

Supongo que te gusta

Origin blog.csdn.net/guoguozgw/article/details/100013871
Recomendado
Clasificación