이 기사는 참조를 위해 쇼핑 카트 모듈의 특정 코드를 공유합니다. 특정 내용은 다음과 같습니다
세션이나 쿠키가 아니라 테이블
> 쇼핑 항목을 추가하십시오
> 쇼핑 항목 수를 수정하십시오
> 항목을 삭제하십시오
> 항목의 배치 삭제
> 내 쇼핑 카트, 즉 사용자의 쿼리 항목
> 확인 된 항목을 쿼리하십시오
1. 데이터 테이블
코드 사본은 다음과 같습니다.`t_cartitem` (`cartitemid`,`quantity`,`bid`,`uid`,`orderby`) value에 삽입 ( 'B8939FC55131469CAB11E3924D40185B', 1, 'CE01F15D435A4C51B0AD8202A318DCA7', 'XXX', 11);
2. 입자
공개 클래스 CARTITEM {private String cartitemid; // 1 차 주요 키 개인 int 수량; // 수량 비공개 책 책; // 책 입력 개인 사용자 사용자에 해당하는 책; // 사용자를 추가하는 사용자 // 하위 운동 방법을 추가하는 사용자 공개 double getSubtotal () {/** 빅 데드*를 사용할 때 오류가 없을 때의 오류가 필요하지 않습니다*/ bigdecimal b1 = new bigdecimal (book.getCurrPrice () + ""); bigdecimal b2 = new bigdecimal (수량 + ""); bigdecimal b3 = b1. 다중 (b2); return b3.doublevalue (); } public String getCartItemid () {return cartitemid; } public void setcartitemid (String Cartitemid) {this.cartitemid = cartitemid; } public int getQuantity () {return retity; } public void setquantity (int reter) {this.quantity = voten. } public book getBook () {반환 서적; } public void setbook (Book Book) {this.book = book; } public user getUser () {return user; } public void setUser (사용자 사용자) {this.user = user; }}팁 : Java에서 Bigdecimal을 반올림하는 데 오류가 없습니다.
// 하위 운동 방법 추가 공개 Double GetSubTotal () {/** BigDecimal을 사용하면 오류가 없습니다.*/ bigdecimal b1 = new bigdecimal (book.getCurrPrice () + ""); bigdecimal b2 = new bigdecimal (수량 + ""); bigdecimal b3 = b1. 다중 (b2); return b3.doublevalue ();}3. 사용자를 통해 쇼핑 카트 항목을 확인하십시오
내 쇼핑 카트 항목의 각 항목은 그림책의 정가를 표시해야합니다. 즉, 여러 테이블이 필요합니다.
공개 목록 <Cartitem> findByUser (String UID)는 sqlexception {string sql = "select * from t_cartitem c, t_book b werthe c.bid = b.bid 및 uid =? order by c.orderby"; list <map <string, object >> maplist = qr.query (sql, new maplisthandler (), uid); return tocartitemlist (maplist);}4. 쇼핑 카트 항목 추가 ----- 추가
JSP
<div> <form id = "form1"action = "<c : url value = '/cartitemservlet'//>"method = "post"> <입력 유형 = "hidden"name = "method"value = "add"/> <입력 유형 = "hidden"name = "bid"value = "$ {book.bid}"/> 구매를 원합니다. <input id = "cnt" "tept" " value = "1"/> </form> <a id = "btn"href = "javaScript : $ ( '#form1'). 제출 ();"> </a> </div>Cartitemservlet
public string add (httpservletrequest req, httpservletreponse resp) servletexception, ioexception { / * * 1. 양식 데이터를 cartitem (bid, rater)에 캡슐화합니다. * / map map = req.getParameTermap (); cartitem cartitem = commonutils.tobean (map, cartitem.class); 책 책 = commonutils.tobean (지도, book.class); user user = (user) req.getSession (). getAttribute ( "sessionUser"); Cartitem.setbook (Book); Cartitem.setuser (사용자); CartitemService.add (Cartitem); return mycart (req, resp);}CartitemService
public void add (cartitem cartitem) {try { /** 1. UID를 사용하여 데이터베이스* / cartitem _cartitem = cartitemdao.findbyuidandbid (cartitem.getuser (). getuid (), cartitem.getbook (). if (_cartitem == null) {// 그러한 항목이없는 경우 arty cartitem.setCartitemId (commonutils.uuid ())를 추가하십시오. cartitemdao.addcartitem (cartitem); } else {//이 항목이있는 경우 숫자를 수정하십시오. // 원래 수량과 새로운 수량 int atretity = cartitem.getQuantity () + _cartitem.getQuantity ()로 사용할 새 항목 수를 사용하십시오. //이 오래된 항목의 수량을 수정합니다. Cartitemdao.updateQuantity (_cartitem.getCartitemId (), rater); }} catch (예외 e) {throw new runtimeexception (e); }}Cartitemdao
public void addCartitem (cartitem cartitem)은 sqlexception {string sql = "t_cartitem에 삽입 (cartitemid, 수량, bid, uid)" + "value (?, ?,?)"; Object [] params = {cartitem.getCartItemid (), cartitem.getQuantity (), cartitem.getbid (), cartitem.getUser (). getUid ()}; qr.update (SQL, Params);}5. 쇼핑 카트 모듈 페이지 JavaScript ---- 점검
총계를 계산하십시오
클릭 이벤트를 추가하여 모두 선택하십시오
모든 항목에 대한 확인란에 클릭 이벤트를 추가하십시오
마이너스 부호에 클릭 이벤트를 추가하십시오
클릭 이벤트를 플러스 부호에 추가하십시오
배치 삭제
list.jsp
<%@ page language = "java"import = "java.util.*"pageencoding = "utf-8"%> <%@ taglib prefix = "c"uri = "http://java.sun.com/jsp/jstl/core"%> <%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions"%> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <titlist.jsp </title> <meta http-equiv = "pragma"> <meta http-equiv = "cache-control"content = "no-cache"> <meta http-equiv = "chewors"content = "0"> <meta http-equiv = "keywords"content = "keyword1, keyword2, keyword2, keyword3, <meta http-equiv ="descript = "<! type = "text/css"href = "styles.css">->-> <script src = "<c : url value = '/jquery/jquery/jquery/jquery-1.5.1.js'/>"> </script> <scrc = "<c : url value = '/js/round.js'/>"> type = "text/css"href = "<c : url value = '/jsps/css/cart/list.css'//>"> <script type = "text/javaScript"> $ (function () {showTotal (); // 모든*/$를 선택하기 위해 클릭/* 클릭을 계산합니다 ( "#select all ()). bool = $ ( "#selectall"). attr ( "Checked"); /* 2. 모든 항목의 확인란을 선택한 모든 상태와 동기화*/ setitemcheckbox (bool); /* 3. 선택한 모든*/ setjiesuan (bool)과 체크 아웃 버튼을 동기화합니다. /* 4. 총*/ showtotal ()을 다시 계산합니다. }); /* 모든 항목의 확인란에 클릭 이벤트 추가*/$ ( ": checkbox [name = checkboxbtn]"). 클릭 (function () {var all = $ ( ": checkbox [name = checkboxbtn]". {// all $ ( "#selectAll"). attr ( "checked", true); // 확인란 확인 모든 확인란 setjiesuan (true); // 체크 아웃 버튼을 유효하게 만듭니다} else (select == 0) {// 어느 누구도 선택한 $ ( "#select"). Att ( "Checked", false); // 모든 setjiesuan (false); $ ( "#selectAll"). attr ( "Checked", False); // 모든 setjiesuan (false)을 취소; // 체크 아웃 취소} else {$ ( "#selectAll"). att ( "checked", false); // 모든 setjiesuan (true); // settlement} shartotal (); // recalculate total}); /* 마이너스 부호에 클릭 이벤트를 추가하십시오*/ $ ( ". jian"). 클릭 (function () {// get cartitemid var id = $ (this) .attr ( "id"). substring (0, 32); // 입력 상자에서 수량을 가져옵니다. 수량이지만 (수량 == 1) {확인 ( "항목을 삭제하고 싶습니까?") {goods/cartitemservlet? // Add click event $(".jia").click(function() { // Get cartItemId var id = $(this).attr("id").substring(0, 32); // Get the number in the input box var quantity = $("#" + id + "Quantity").val(); sendUpdateQuantity(id, Number(quantity)+1); });});// Request the server 수량을 수정하십시오. 함수 sendupdatequantity (id, rater) {$ .ajax ({async : false, cache : false, url : "/goods/cartitemservlet", data : {method : "updatequantity", cartitemid : id, 수량 : Quantity}, "post", datatype : "json"(결과) {// 1##############. "val. /* 1. 모든 확인 된 항목 확인란을 받으십시오! LOOP TRAVERSAL */$ ( ": CheckBox [name = checkboxBtn] [checked = true]"). 각 (function () {// 2. 체크 박스의 값을 얻습니다. // 4. 계산 총 += 숫자 (텍스트); // 5. 총 요소에 총계를 표시합니다. // 라운드 () 함수의 함수는 총 2 비트를 유지하는 것입니다.}/ * * 균일 한 모든 항목에 대한 검사 버튼을 균일하게 설정하십시오./function setitemcheckbox (bool) { ": checkbox [name = checkboxbtn]". attr ( "checked", bool); $ ( "#jiesuan"). RemoveClass ( "kill"). addClass ( "jiesuan"); $ ( "#jiesuan"). Unbind ( "click"); // 현재 요소의 모든 클릭 이벤트} else {$ ( "#jiesuan"). RemoveClass ( "jiesuan"). addClass ( "kill"); $ ( "#jiesuan"). 클릭 (function () {return false;}); }}/** 배치 삭제*/function batchdelete () {// 1. 선택한 모든 항목에 대한 확인란을 가져옵니다. // 2. 선택한 모든 확인란의 값을 배열에 추가하고 // 3에 위치를 CartitemerVlet으로 지정합니다. $ ( ": checkbox [name = checkboxbtn] [checked = true]"). 위치 = "/goods/cartitemervlet? method = batchdelete & cartitemidArray;}/** Checkout*/function jiesuan () {// 1. 선택한 모든 항목의 IDS를 가져 와서 배열 var array (); $ () [name = checkbox] [). cartitemidarray.push ($ (this) .val ()); checkbox 값을 배열에 추가 한 다음 val ( "#cartitemids $ ( "#hiddentotal"). val ($ ( "#total"). text ());이 양식을 제출합니다. <td align = "right"> <img align = "top"src = "<c : url value = '/images/icon_empty.png'///"/> </td> <td> <span> 카트에는 제품이 없습니다. CellPacing = "0"> <tr align = "center"bgcolor = "#efeae5"> <td align = "left"> <입력 유형 = "checkbox"id = "selectall"cheecked = "checked"/<label for = "select"> select </label> </td> <td colspan = "2"> 제품 이름 </td> <td> 수량 </td> <td> subtotal </td> <td> 작동 </td> </td> </td> </tr> <c : foreach items = "$ {cartitemlist}"var = "cartitem"> <tr align = "center"> <td align = "input value ="$ {cartiteM. 유형 = "checkbox"name = "checkboxBtn"checked = "checked"/> </td> <td align = "left"> <a href = "<c : url value = '/jsps/book/desc.jsp'/>"> <img align = "top"src = "<c : url value =/$ {cartitem.book.book.book.book.book.book.book.book.book.book.book.book.book.mage. </td> <td align = "left"> <a href = "<c : url value = '/jsps/book/desc.jsp'/>"> <span> $ {cartitem.book.bname} </a> </td> <td> <span $ {cartitem.book.currprice} </span> </td> id = "$ {cartitem.cartitemid} jian"> </a> </a> <input readonly = "readonly"id = "$ {cartitem.cartitemid} 수량"type = "text"value = "$ {cartitem.quantity}"/> <a id = "$ {cartitem.cartitemid} jia"> </td> </a </td> <span> ¥ <span id = "$ {cartitem.cartitemid} subtotal"> $ {cartitem.subtotal} </span> </span> </td> <td> <a href = "<c : url value = '/cartitemervlet? method = batchdelete & cartitemids = $ } '/> "> delete </a> </a> </td> </td> </td> </td> </c : foreach> <tr> <td colspan ="4 "> <a href ="javaScript : batchDelete (); "> batch delete </a> </td> <td colspan ="3 "</td> <</td> <</td> <</td> id = "total"> </span> </span> </td> </td> <td> <td colspan = "7"align = "right"> <a href = "jiesuan ();"jiesuan "> </a> </a> value = '/cartitemservlet'//> "method ="post "> <input type ="hidden "name ="cartitemids "id ="cartitemids "/> <input type ="hidden "name ="total "id ="input type = "hidden"name = "value ="method ""method " </c : 그렇지 않으면> </c : 선택> </body> </html>팁 : JS의 Round Round.js
// 5. 총 요소에 총계를 표시합니다.
6. 배치 삭제 함수 ---- 삭제
JSP
function batchdelete () {// 1. 선택한 모든 항목에 대한 확인란을 가져옵니다. // 2. 배열을 만들고 배열에 배열을 생성 // 3에 위치를 CartitemServlet, 매개 변수 메소드 = batchdelete, 배열 CartitemIds = toString ()로 지정합니다. $ ( ": checkbox [name = checkboxbtn] [checked = true]"). 위치 = "/goods/cartitemservlet? method = batchdelete & cartitemids =" + cartitemidarray;}하나를 삭제하십시오
if (수량 == 1) {if (확인 ( "항목을 삭제하고 싶습니까?")) {location = "/goods/cartitemservlet? method = batchdelete & cartitemids =" + id; }} 또 다른 {7. 수정 수 ----- 수정
JSP
// 서버를 요청하고 번호를 수정합니다. 함수 sendupdatequantity (id, rater) {$ .ajax ({async : false, cache : false, url : "/goods/cartitemservlet", data : {method : "updatequantity", cartitemid : id, rotentity}, "post", datatype : "json", modifice $ (result). "수량".서틀
public String updateQuantity (httpservletrequest req, httpservletResponse resp) servletexception, ioexception {String cartitemid = req.getParameter ( "cartitemid"); int quantity = integer.parseint (req.getParameter ( "수량")); cartitem cartitem = cartitemservice.updatequantity (cartitemid, reter); // 클라이언트로 json 객체를 반환 stringBuilder sb = new StringBuilder ( "{"); sb.append ( "/"Quantity/""). Append ( ":"). Append (cartitem.getQuantity ()); sb.append ( ","); sb.append ( "/"subtotal/""). Append ( ":"). Append (cartitem.getSubtotal ()); sb.append ( "}"); resp.getwriter (). print (sb); 귀환 null;}위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.