이전 기사에서 Mode1 모델은 제품 탐색을 실현하는 데 사용되었습니다. 이전 기사를 기반 으로이 기사는 MVC 아키텍처를 사용하여 제품 구매를 실현합니다.
실행 결과 :
이전 기사와 비교할 때 더 많은 쇼핑 카트가 있습니다. 품목을 구매할 때 쇼핑 카트는 구매 한 품목 및 수량에 대한 속성이 필요하기 때문에 맵 키 값을 사용하여 구매 한 품목을 저장합니다.
물론 총 가격도 있습니다. 쇼핑 카트 방법은 제품을 추가하고 제품을 삭제하여 총 가격을 계산하는 것 입니다. 총 가격은 제품을 추가하고 삭제할 때마다 재 계산해야합니다. 쇼핑 카트 제품 컬렉션은 쇼핑 카트가 초기화 될 때만 한 번만 인스턴스화 할 수 있습니다.
패키지 엔티티; java.util.hashmap import; 공공 클래스 카트 {// 쇼핑 카트 제품 컬렉션 개인 해시 맵 <아이템, 정수> 카트; // 총 금액 개인 이중 총 가격; public cart () {cart = new hashmap <항목, integer> (); TotalPrices = 0.0; } public hashmap <Items, Integer> getCart () {return cart; } public void setcart (Hashmap <Items, Integer> cart) {this.cart = cart; } public double getTotalPrices () {return totalPrices; } public void settotalPrices (Double TotalPrices) {this.totalPrices = TotalPrices; } // 쇼핑 카트에 항목 추가 public boolean addtocart (항목 항목, int counts) {// 현재 항목이 추가 된 경우 (cart.containskey (item)) {cart.put (항목, cart.get (항목)+카운트); } else {cart.put (항목, 카운트); } // 가격을 다시 계산합니다. caltotalPrice (item.getPrice ()*counts); 진실을 반환하십시오. } // 쇼핑 카트에서 항목 제거 공개 부울 removefromcart (항목 항목) {if (cart! = null && cart.containskey (item)) {caltotalPrice (-ITEM.GETPRICE ()*cart.get (항목)); CART.REMOVE (항목); } true를 반환합니다. } // 총 금액을 계산합니다. }} cartservlet의 dogett 방법은 동작에 따라 해당 처리를 수행합니다.
if (request.getParameter ( "action")! = null) {action = request.getParameter ( "action"); if ( "add".equals (action)) {// 제품 추가 if (addgoodStocart (request, response)) {request.getRequestDispatcher ( "../ success.jsp"). forward (요청, 응답); } else {request.getRequestDisPatcher ( "../ dailit.jsp"). FORMPENT (요청, 응답); }} else if ( "show".equals (action)) {// 쇼핑 카트 표시 request.getRequestDispatcher ( "../ cart.jsp"). forward (요청, 응답); } else if ( "delete".equals (action)) {// item deletegoodfromCart (요청, 응답); request.getRequestDispatcher ( "../ cart.jsp"). forward (요청, 응답); }} 제품 인터페이스를 클릭하여 카트를 넣으면 현재 제품의 수는 카트의 서블릿 클래스 카트 서비스로 전송됩니다. 현재 항목을 처리하고 현재 항목을 카트에 넣기 시작합니다.
쇼핑 카트에 넣기 전에 먼저 쇼핑 카트를 만드는 것이 처음인지 결정하십시오 (확실히 하나의 쇼핑 카트 만 있지만 다수는 없음). 쇼핑 카트를 만드는 것이 처음이라면
현재 쇼핑 카트를 세션에 넣은 다음 itemsdao 객체를 통해 getitembyid (ID) 메소드를 호출하여 제품 객체를 얻습니다. 그런 다음 해당 제품 개체 및 제품 수량을 장바구니에 넣습니다.
// 쇼핑 카트에 제품 추가 개인 부울 AddGoodStocart (httpservletrequest request, httpservletResponse 응답) {String id = request.getParameter ( "id"); 문자열 counts = request.getParameter ( "num"); 항목 항목 = dao.getitembyid (integer.parseint (id)); // if (request.getSession (). getAttribute ( "cart") == null) {cart cart = new cart (); request.getSession (). setAttribute ( "cart", cart); request.getSession (). setAttribute ( "dao", dao); } cart cart = (cart) request.getSession (). getAttribute ( "cart"); // if (cart.addtocart (항목, integer.parseint (counts))) {return true; } else {return false; }} CartCartServlet보기를 클릭하면 카트 페이지로 리디렉션됩니다
<%@ page language = "java"import = "java.util.*"contenttype = "text/html; charset = utf-8"%> <%@ page import = "entity"%> <%@ page import = "entity.items"; String BasePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/"; %> <! doctype html public "-// w3c // dtd html 4.01 전환 // en"> <html> <head> <base href = "<%= basepath%>"> <title> 나의 jsp 'cart.jsp'시작 페이지 </titp-equiv = "pragma" "no-cache" "no-cache" "no-cache" http-equiv = "Cache-control"content = "no-cache"> <meta http-equiv = "chewors"content = "0"> <meta http-equiv = "keyword ="keyword1, keyword2, keyword2, keyword3 "> <meta http-equiv ="descript "> <" "rel rel rele"> type = "text/css"href = "styles.css"> -> -> <link type = "text/css"rel = "stylesheet"href = "css/style1.css"/> <script language = "javaScript"> function delcfm () {! 확인 ( "삭제 확인?"); }} </script> </head> <body> <h1> 내 쇼핑 카트 </h1> <a href = "goods.jsp"> home </a> >> <a href = "goods.jsp"> 제품 목록 </a> <hr> <hr> <div id = "쇼핑"> <form action = ""method = ""> <th> 제품 이름 <heproduce <th> <Th> 제품 가격 </th> <th> 구매 수량 </th> <th> 액션 </th> </tr> <% // 첫 번째 판단 If (request.getSession (). getAttribute ( "cart")! = null) {%> <% 카트 = (cart =) (cart); gettts request ( "); Hashmap <품목, 정수> goods = cart.getCart (); set <itele items = goods.keyset (); iterator <itilet> it = items.iterator (); while (it.hasnext ()) {항목 i = it.next (); %> <tr name = "products"id = "product_id_1"> <td> <img src = "im <span> <%= i.getPrice ()*goods.get (i)%> </span> <input type = "hidden"value = ""/> </td> <td> <%= goods.get (i)%> </td> <td> <a href = "servlet/cartservlet? action = delete = <%= <%>" onclick = "delcfm ();"> delete </a> </a> </td> </td> </tr> < %} %> <!-루프 끝-> </table> <div> <span id = "total"> total : < %= cart.getTotalPrices () %> ¥ </span> < %} %> <div> </form> </div> </body> </html> 제품 삭제를 클릭 할 때 Cartservlet 클래스는 제품을 삭제하는 메소드를 호출합니다.
// 쇼핑 카트에서 항목 삭제 개인 부울 DeleteGoodFromCart (httpservletrequest 요청, httpservletreponse 응답) {// 세션 카트에서 쇼핑 카트 객체를 가져옵니다. if (cart! = null) {int id = integer.parseint (request.getParameter ( "id")); if (cart.removefromcart (dao.getitembyid (id))) {return true; }} 거짓을 반환합니다. }논리 코드는 주로 위와 같습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.