您好,登錄后才能下訂單哦!
這篇文章主要介紹“javaweb購物車功能的實(shí)現(xiàn)方法”,在日常操作中,相信很多人在javaweb購物車功能的實(shí)現(xiàn)方法問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”javaweb購物車功能的實(shí)現(xiàn)方法”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
本文實(shí)例為大家分享了javaweb購物車案列的具體代碼,供大家參考,具體內(nèi)容如下
一、項(xiàng)目目錄結(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:書的實(shí)體類
package com.domain; //書的實(shí)體類 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){ //看購物車中有沒有,要添加的書對應(yīng)的購物項(xiàng) 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:購物項(xiàng)
package com.domain; //用于代表某個商品,以及商品出現(xiàn)的次數(shù)(購物項(xiàng)) 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); } //刪除購物車中的購物項(xiàng) public void deleteCartItem(String id, Cart cart) { cart.getMap().remove(id); } //清空購物車 public void clearCart(Cart cart) { cart.getMap().clear(); } //改變購物項(xiàng)的數(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; //刪除指定的購物項(xiàng) 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 > <h2>書籍列表</h2> <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("您確認(rèn)刪除嗎??"); if(b){ window.location.href="${pageContext.request.contextPath }/servlet/DeleteItemServlet?id=" rel="external nofollow" +id; } } function clearcart(){ var b = window.confirm("您確認(rèn)清空嗎??"); 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ù)字?。?quot;); input.value = oldvalue; return; } */ //檢查用戶輸入的數(shù)量是不是一個正整數(shù) if(quantity<0 || quantity!=parseInt(quantity)){ alert("請輸入正整數(shù)??!"); input.value = oldvalue; return; } var b = window.confirm("您確認(rèn)把書的數(shù)量修改為:" + quantity); if(b){ window.location.href="${pageContext.request.contextPath}/servlet/ChangeQuantityServlet?id=" rel="external nofollow" + id + "&quantity=" + quantity; } } </script> </head> <body > <h2>購物車列表</h2> <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>小計(jì)</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 }" 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> <!-- 去掉超鏈接默認(rèn)行為 --> </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>
到此,關(guān)于“javaweb購物車功能的實(shí)現(xiàn)方法”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。