この記事では、参照用のショッピングカートモジュールの特定のコードを共有しています。特定のコンテンツは次のとおりです
セッションやクッキーではなく、テーブルです
>ショッピングエントリを追加します
>ショッピングエントリの数を変更します
>エントリを削除します
>エントリのバッチ削除
>私のショッピングカート、つまり、ユーザーによるアイテムのクエリ
>チェックされたエントリをクエリします
1。データテーブル
コードコピーは次のとおりです。「t_cartitem」( `cartitemid`、` quanty`、 `bid`、` uid`、 `orderby`)値に挿入( 'B8939FC55131469CAB11E3924D40185B'、1、 'CE01F15D435A4C51B0AD8202A318DCA7'、 'XXX'、11);
2.cartitem
public class cartitem {private string cartitemid; //プライマリキープライベートint数量。 bigdecimal(book.getCurrprice() + ""); BigDecimal B2 = new BigDecimal(Quantion + ""); BigDecimal B3 = B1.Multiply(B2); b3.doublevalue()を返します。 } public string getCartitemid(){return cartitemid; } public void setCartitemid(String Cartitemid){this.cartitemid = cartitemid; } public int getQuantity(){return Quantion; } public void setquantity(int Quantion){this.quantity = Quanty; } public Book getBook(){return book; } public void setbook(book book){this.book = book; } public user getUser(){return user; } public void setuser(user user){this.user = user; }}ヒント: JavaのBigDecimalを丸めるエラーはありません
// subtotalメソッドの追加public double getsubtotal(){/** bigdecimalを使用するとエラーはありません*文字列型コンストラクターを使用する必要があります*/ bigdecimal b1 = new bigdecimal(book.getCurrprice() + ""); BigDecimal B2 = new BigDecimal(Quantion + ""); BigDecimal B3 = B1.Multiply(B2); b3.doublevalue();}を返します3.ユーザーを介してショッピングカートエントリを確認します
私のショッピングカートのエントリの各エントリは、絵本のリスト価格を表示する必要があります。つまり、複数のテーブルが必要であることを意味します
パブリックリスト<Cartitem> FindByUser(String UID)Strows sqlexception {string sql = "select * from t_cartitem c、t_book bここでc.bid = b.bidおよびuid =?order by c.orderby"; List <Map <String、Object >> MapList = Qr.Query(SQL、new MapListhandler()、UID); tocartitemlist(maplist);}を返す4.ショッピングカートエントリを追加-----追加
jsp
<div> <form id = "form1" action = "<c:url value = '/cartitemservlet' //>" method = "post"> <input type = "hidden" name = "value =" add "/> <入力タイプ=" name = "bid" vid "bule =" $ {book.bid} "/>>私は購入したい: </form> <a id = "btn" href = "javascript:$( '#form1')。submit();"> </a> </div>cartitemservlet
public string add(httpservletrequest req、httpservletresponse rep)servletexception、ioexception { / * * 1。form data form dataulature incapsulate form data form data bid、Quants * / map map = req.getparametermap(); cartitem cartitem = commonutils.tobean(map、cartitem.class); book book = commonutils.tobean(map、book.class); user user =(user)req.getsession()。getattribute( "sessionuser"); cartitem.setbook(book); cartitem.setuser(user); cartitemservice.add(cartitem); mycart(req、rep)を返す;}cartitemservice
public void add(cartitem cartitem){try { /**1。uidを使用して入札して、このエントリがデータベースに存在するかどうかを照会します。 if(_cartitem == null){//そのようなエントリがなかった場合、エントリCartitem.setCartitemid(commonutils.uuid()); cartitemdao.addcartitem(cartitem); } else {//このエントリがある場合、番号を変更します//新しい数量= cartitem.getQuantity() + _cartitem.getquantity()として使用する新しいエントリの数を使用します。 //この古いエントリの数量を変更しますcartitemdao.updatequantity(_cartitem.getCartitemid()、数量); }} catch(Exception e){throw new runtimeException(e); }}cartitemdao
public void addcartitem(cartitem cartitem)はsqlexceptionをスローします{string sql = "t_cartitem(cartitemid、数量、bid、uid)" + "値(?、?、、?)"; object [] params = {cartitem.getCartitemid()、cartitem.getQuantity()、cartitem.getBid()、cartitem.getuser()。getUid()}; qr.update(sql、params);}5。ショッピングカートモジュールページJavaScript ----チェック
合計を計算します
クリックイベントを追加してすべてを選択します
すべてのエントリのチェックボックスにクリックイベントを追加します
マイナスサインにクリックイベントを追加します
Plus Signにクリックイベントを追加します
バッチ削除
list.jsp
<%@ page Language = "Java" Import = "Java.util。*" PageEncoding = "UTF-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core"%> <%@ haglib prefix = "fn" fn " uri = "http://java.sun.com/jsp/jstl/functions"%> <!doctype html public " - // w3c // dtd html 4.01 transitional // en"> <html> <head> <title> cartlist.jsp </titl> <meta htp-cach = "no-cache <Meta http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "content =" 0 "> <meta http-equiv =" keywords "content =" keyword1、keyword2、keyword3 "> <meta http-equiv =" type = "text/css" href = "styles.css"> - > <script src = "<c:url value = '/jquery/jquery-1.5.1.js'/>"> </script> <スクリプト> <src = "<c:url value = '/js/round.js'/> href = "<c:url value = '/jsps/css/cart/list.css' ///>"> <script type = "text/javascript"> $(function(){showtotal(); // total/*クリックイベントを追加してすべてを選択する*/$( "#selectal") $( "#selectal")。attr( "checked"); /*2。すべてのエントリのチェックボックスを選択したすべてのステータスと同期*/ setItemcheckbox(bool); /* 3。選択したすべての*/ setjiesuan(bool)とチェックアウトボタンを同期します。 /* 4。合計*/ showtotal()を再計算します。 }); /*すべてのエントリのチェックボックスにクリックイベントを追加*/$( ":name = checkboxbtn]") {// all $( "#selectal")。 $( "#selectal")。 /*クリックイベントをマイナスサインに追加*/ $( "。Jian") IF(confirm( "エントリを削除したいですか?") // click event $( "。jia")。クリック(function(){// get cartitemid var id = $(this).attr( "id")。サブストリング(0、32); //入力ボックスvar数量= $( "#" + id + "数量")。 量。 function sendupdatequantity(id、数量){$ .ajax({async:async:false、cache:false、url: "/goods/cartitemservlet"、data:{method: "updatequantity"、cartitemid:id、数量}、type: "post"、datatepe: "json:" + funcise( " +" + funcise( " + funcis) 「数量」)(result.quantity) /* 1。チェックボックスをチェックするすべてのチェックエントリを取得してください! loop traversal */$( ":checkbox [name = checkboxbtn] [checkboxbtn] [checkboxbtn] [checkboxbtn] [checked = true]")。各(function(){//2。チェックボックスの値を取得します。つまり、他の要素var id = $(this); // 3。 Total += number(text)}; //5。TotalElement $( "#Total")。テキスト(Round(Total、2))に合計を表示します。 // round()関数の関数は、合計2ビットを保持することです}/ * *均一なすべてのエントリのチェックボタンを設定します */function setitemcheckbox(bool){$( ":name = checkbolbtn])。 $( "#jiesuan")。removeclass( "kill")。addclass( "jiesuan"); $( "#jiesuan") $( "#jiesuan")。クリック(function(){return false;}); }}/** batch delete*/function batchdelete(){// 1。選択したすべてのエントリのチェックボックスを取得// 配列(); $( ":checkbox [name = checkboxbtn] [checked = true]")場所= "/good/cartitemservlet?method = batchdelete&cartitemidarray;}/** checkout*/function jiesuan(){// 1。選択したすべてのエントリのIDを取得し、array var cartitemidarray = new array(); $(":name = checkboxtn] cartitemidarray.push($(this)val();//// 2 $( "#hiddentotal")。val($( "#total")。text()); <td align = "right"> <img align = "top" src = "<c:url value = '/icon_empty.png' ///"/>> </td> <td> <span>カートに製品はありません</span> </td> </tr> </table> cellpacing = "0"> <tr align = "center" bgcolor = "#efeae5"> <td align = "left"> <入力タイプ= "チェックボックス" id = "selectal" checked "/> <for =" selectal "> select all </label> </td> <td colspan =" <td>数量</td> <td> subtotal </td> <td>操作</td> </td> </td> </tr> <c:foreach items = "$ {cartitemlist}" var = "cartitem"> <tr align = "center"> <td aLign = "左" type = "checkbox" name = "checkboxbtn" checked = "checked"/> </td> <td align = "left"> <a href = "<c:url value = '/jsps/book/desc.jsp'/>"> <img align = "top" src = "<c <c: '/$ {cartitem.book.book.book.book. </td> <td align = "left"> <a href = "<c:url value = '/jsps/book/desc.jsp'/>"> <span> $ {cartitem.book.bname} </span> </a> </td> <td> <td> <span> $ {cartitem.book.currprice} </td>> id = "$ {cartitem.cartitemid} jian"> </a> <input readonly = "readonly" id = "$ {cartitem.cartitemid}数量" type = "text" value = "$ {cartitem.quantity}"/> <a id = "$ {cartitem.cartitem.cartitemid} jia"> <span>¥<span id = "$ {cartitem.cartitemid} subtotal"> $ {cartitem.subtotal} </span> </span> </td> <td> <a href = "<c:c:url value = '/cartitemservlet?method = batchdeleteemids = cartiTems } '/> "> delete </a> </td> </td> </tr> </c:foreach> <tr> <td colspan =" 4 "> <a href =" javascript:batchdelete(); "> batch delete delete </a> </td> <td colspan =" 3 "> </</<> <> <> </<> <> </</<> </</</< id = "Total"> </span> </span> </td> </tr> <tr> <td colspan = "7" align = "right"> <a href = "jiesuan(); value = '/cartitemservlet' //> "method =" post "> <input type =" hidden "name =" cartitemids "id =" cartitemids "/> <入力タイプ=" hidden "name =" total "id =" hiddentotal "/> <inputタイプ=" hidden "name ="メソッド " </body> </html>ヒント: JSのRound Round.js
// 5。合計要素に合計を表示$( "#合計")。テキスト(round(合計、2));
6。バッチ削除関数----削除
jsp
function batchdelete(){// 1。選択したすべてのエントリのチェックボックスを取得// 2。アレイを作成し、選択したすべてのチェックボックスの値を配列// 3に追加します。 $( ":checkbox [name = checkboxbtn] [checked = true]")場所= "/goods/cartitemservlet?method = batchdelete&cartitemids =" + cartitemidarray;}1つを削除します
if(数量== 1){if(confism( "エントリを削除したいですか?")){location = "/good/cartitemservlet?method = batchdelete&cartitemids =" + id; }} それ以外 {7。変更の数-----変更
jsp
//サーバーを要求し、番号を変更します。 function sendupdatequantity(id、数量){$ .ajax({async:async:false、cache:false、url: "/goods/cartitemservlet"、data:{method: "updatequantity"、cartitemid:id、数量}、type: "post"、datatepe: "json:" + funcise( " +" + funcise( " + funcis) 「数量」)(result.quantity)サーブレット
public string updateQuantity(httpservletrequest req、httpservletresponse rep)throws servletexception、ioexception {string cartitemid = req.getParameter( "cartitemid"); int数量= integer.parseint(req.getParameter( "Quants")); cartitem cartitem = cartitemservice.updatequantity(cartitemid、数量); // jsonオブジェクトをクライアントに返しますstringbuilder sb = new StringBuilder( "{"); sb.append( "/" quanty/"")。append( ":")。append(cartitem.getquantity()); sb.append( "、"); sb.append( "/" subtotal/"")。append( ":")。append(cartitem.getsubtotal()); sb.append( "}"); resp.getWriter()。print(sb); nullを返します;}上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。