javaweb購物車案列學習開發(fā)
本文實例為大家分享了javaweb購物車案列的具體代碼,供大家參考,具體內(nèi)容如下
一、項目目錄結(jié)構(gòu)

二、源代碼
dao包——dao層:BookDao.java
package com.dao;
import java.util.Map;
import com.DB.DB;
import com.domain.Book;
public class BookDao {
public Map getAll(){
return DB.getAll();
}
public Book find(String id){
return (Book) DB.getAll().get(id);
}
}
DB包:DB.java——模擬數(shù)據(jù)庫
package com.DB;
import java.util.LinkedHashMap;
import java.util.Map;
import com.domain.Book;
import com.sun.org.apache.bcel.internal.generic.NEW;
//代表數(shù)據(jù)庫
//代表數(shù)據(jù)庫
public class DB {
private static Map map = new LinkedHashMap();
static{
map.put("1", new Book("1","javaweb開發(fā)","老張",38,"一本好書"));
map.put("2", new Book("2","jdbc開發(fā)","老黎",18,"一本好書"));
map.put("3", new Book("3","ajax開發(fā)","老佟",328,"一本好書"));
map.put("4", new Book("4","jbpm開發(fā)","老畢",58,"一本好書"));
map.put("5", new Book("5","struts開發(fā)","老方",28,"一本好書"));
map.put("6", new Book("6","spring開發(fā)","老方",98,"一本好書"));
}
public static Map getAll(){
return map;
}
}
domain包:
Book.java:書的實體類
package com.domain;
//書的實體類
public class Book {
private String id;
private String name;
private String author;
private double price;
private String description;
public Book() {
super();
// TODO Auto-generated constructor stub
}
public Book(String id, String name, String author, double price,
String description) {
super();
this.id = id;
this.name = name;
this.author = author;
this.price = price;
this.description = description;
}
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 double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
Cart.java:購物車類
package com.domain;
import java.util.LinkedHashMap;
import java.util.Map;
//代表用戶的購物車
//代表用戶的購物車
public class Cart {
private Map<String,CartItem> map = new LinkedHashMap();
private double price; //記住購物車所有商品多少錢
public void add(Book book){
//看購物車中有沒有,要添加的書對應的購物項
CartItem item = map.get(book.getId());
if(item==null){
item = new CartItem();
item.setBook(book);
item.setQuantity(1);
map.put(book.getId(), item);
}else{
item.setQuantity(item.getQuantity()+1);
}
}
public Map<String, CartItem> getMap() {
return map;
}
public void setMap(Map<String, CartItem> map) {
this.map = map;
}
public double getPrice() {
double totalprice = 0;
for(Map.Entry<String, CartItem> entry : map.entrySet()){
CartItem item = entry.getValue();
totalprice += item.getPrice();
}
this.price = totalprice;
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
CartItem.java:購物項
package com.domain;
//用于代表某個商品,以及商品出現(xiàn)的次數(shù)(購物項)
public class CartItem {
private Book book;
private int quantity;
private double price;
public Book getBook() {
return book;
}
public void setBook(Book book) {
this.book = book;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
this.price = this.book.getPrice() * this.quantity;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
}
service包:service層
BusinessService.java:
package com.service;
import java.util.Map;
import com.dao.BookDao;
import com.domain.Book;
import com.domain.Cart;
import com.domain.CartItem;
//業(yè)務(wù)類,統(tǒng)一對web層提供所有服務(wù)
public class BusinessService {
private BookDao dao = new BookDao();
public Map getAllBook(){
return dao.getAll();
}
public Book findBook(String id){
return dao.find(id);
}
//刪除購物車中的購物項
public void deleteCartItem(String id, Cart cart) {
cart.getMap().remove(id);
}
//清空購物車
public void clearCart(Cart cart) {
cart.getMap().clear();
}
//改變購物項的數(shù)量
public void changeItemQuantity(String id, String quantity, Cart cart) {
CartItem item = cart.getMap().get(id);
item.setQuantity(Integer.parseInt(quantity));
}
}
web層:
ListBookServlet.java:顯示所有書籍
package com.web.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.service.BusinessService;
//獲取所有書籍
//獲取所有書
public class ListBookServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
BusinessService service = new BusinessService();
Map map = service.getAllBook();
request.setAttribute("map", map);
request.getRequestDispatcher("/WEB-INF/jsp/listbook.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
BuyServlet.java:處理購買請求
package com.web.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.domain.Book;
import com.domain.Cart;
import com.service.BusinessService;
//完成書籍購買
//完成書籍購買
public class BuyServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
BusinessService service = new BusinessService();
Book book = service.findBook(id);
//得到用戶的購物車
Cart cart = (Cart) request.getSession().getAttribute("cart");
if(cart==null){
cart = new Cart();
request.getSession().setAttribute("cart", cart);
}
//把書加到用戶購物車中,完成購買
cart.add(book);
//response.sendRedirect("/WEB-INF/jsp/listcart.jsp");
request.getRequestDispatcher("/WEB-INF/jsp/listcart.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
DeleteItemServlet.java:刪除某一種商品
package com.web.controller;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.domain.Cart;
import com.service.BusinessService;
//刪除指定的購物項
public class DeleteItemServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
Cart cart = (Cart) request.getSession().getAttribute("cart");
BusinessService service = new BusinessService();
service.deleteCartItem(id,cart);
//刪除成功
request.getRequestDispatcher("/WEB-INF/jsp/listcart.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
ClearCartServlet.java:清空購物車
package com.web.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.domain.Cart;
import com.service.BusinessService;
//清空購物車
public class ClearCartServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
Cart cart = (Cart) request.getSession().getAttribute("cart");
BusinessService service = new BusinessService();
service.clearCart(cart);
request.getRequestDispatcher("/WEB-INF/jsp/listcart.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
ChangeQuantityServlet.java:修改購物車中指定商品的數(shù)量
package com.web.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.domain.Cart;
import com.service.BusinessService;
//把購物車中的書修改為指定數(shù)量
public class ChangeQuantityServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String id = request.getParameter("id");
String quantity = request.getParameter("quantity");
Cart cart = (Cart) request.getSession().getAttribute("cart");
BusinessService service = new BusinessService();
service.changeItemQuantity(id,quantity,cart);
request.getRequestDispatcher("/WEB-INF/jsp/listcart.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
jsp頁面:
WebRoot/WEB-INF/jsp/listbook.jsp:顯示書籍列表
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>書籍列表頁面</title>
</head>
<body style="text-align: center">
<h1>書籍列表</h1>
<table width="70%" border="1">
<tr>
<td>書名</td>
<td>作者</td>
<td>售價</td>
<td>描述 </td>
<td>操作</td>
</tr>
<c:forEach var="entry" items="${map}">
<tr>
<td>${entry.value.name }</td>
<td>${entry.value.author }</td>
<td>${entry.value.price }</td>
<td>${entry.value.description } </td>
<td>
<a href="${pageContext.request.contextPath }/servlet/BuyServlet?id=${entry.value.id }" rel="external nofollow" target="_blank">購買</a>
</td>
</tr>
</c:forEach>
</table>
</body>
WebRoot/WEB-INF/jsp/listcart.jsp:顯示購物車列表
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>購物車列表</title>
<script type="text/javascript">
function deleteitem(id){
var b = window.confirm("您確認刪除嗎??");
if(b){
window.location.href="${pageContext.request.contextPath }/servlet/DeleteItemServlet?id=" rel="external nofollow" +id;
}
}
function clearcart(){
var b = window.confirm("您確認清空嗎??");
if(b){
window.location.href="${pageContext.request.contextPath}/servlet/ClearCartServlet" rel="external nofollow" ;
}
}
function changeQuantity(input,id,oldvalue){
var quantity = input.value; //得到要修改的數(shù)量 sdfsfs
/*
//檢查用戶輸入的數(shù)量是不是一個數(shù)字
if(isNaN(quantity)){
alert("請輸入數(shù)字!!");
input.value = oldvalue;
return;
}
*/
//檢查用戶輸入的數(shù)量是不是一個正整數(shù)
if(quantity<0 || quantity!=parseInt(quantity)){
alert("請輸入正整數(shù)??!");
input.value = oldvalue;
return;
}
var b = window.confirm("您確認把書的數(shù)量修改為:" + quantity);
if(b){
window.location.href="${pageContext.request.contextPath}/servlet/ChangeQuantityServlet?id=" rel="external nofollow" + id + "&quantity=" + quantity;
}
}
</script>
</head>
<body style="text-align: center">
<h1>購物車列表</h1>
<c:if test="${empty(cart.map)}">
您沒有購買任何商品?。?!
</c:if>
<c:if test="${!empty(cart.map)}">
<table width="70%" border="1">
<tr>
<td>書名</td>
<td>作者</td>
<td>單價</td>
<td>數(shù)量 </td>
<td>小計</td>
<td>操作</td>
</tr>
<c:forEach var="entry" items="${cart.map}">
<tr>
<td>${entry.value.book.name }</td>
<td>${entry.value.book.author }</td>
<td>${entry.value.book.price }</td>
<td>
<input type="text" name="quantity" value="${entry.value.quantity }" style="width:35px" onchange="changeQuantity(this,${entry.key},${entry.value.quantity})">
</td>
<td>${entry.value.price }</td>
<td>
<a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" onclick="deleteitem(${entry.key })">刪除</a> <!-- 去掉超鏈接默認行為 -->
</td>
</tr>
</c:forEach>
<tr>
<td colspan="3">總價</td>
<td colspan="2">${cart.price }元</td>
<td colspan="1">
<a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" onclick="clearcart()">清空購物車</a>
</td>
</tr>
</table>
</c:if>
</body>
</html>
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
簡單了解Java多態(tài)向上轉(zhuǎn)型相關(guān)原理
這篇文章主要介紹了簡單了解Java多態(tài)向上轉(zhuǎn)型相關(guān)原理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-12-12
SpringBoot整合Redis使用RedisTemplate和StringRedisTemplate
Spring?Boot?Data(數(shù)據(jù))?Redis?中提供了RedisTemplate和StringRedisTemplate,其中StringRedisTemplate是RedisTemplate的子類,兩個方法基本一致。本文介紹了SpringBoot整合Redis使用RedisTemplate和StringRedisTemplate的方法,需要的可以參考一下2022-12-12

