前の記事では、MODE1モデルを使用して製品ブラウジングを実現しました。前の記事に基づいて、この記事ではMVCアーキテクチャを使用して製品の購入を実現します。
実行結果:
前の記事と比較して、より多くのショッピングカートがあります。アイテムを購入するとき、ショッピングカートには購入したアイテムと数量に対する属性が必要なので、マップキー値を使用して購入したアイテムを保存します。
もちろん、合計価格もあります。ショッピングカートの方法は、製品を追加し、製品を削除して総価格を計算することです。製品が追加および削除されるたびに、合計価格を再計算する必要があります。ショッピングカートの製品コレクションは、ショッピングカートが初期化されたときにのみ一度インスタンス化できます。
パッケージエンティティ。 java.util.hashmapをインポートします。パブリッククラスカート{//ショッピングカートコレクションプライベートハッシュマップ<アイテム、整数>カート; //合計金額プライベートダブルトータルプライス。 public cart(){cart = new hashmap <items、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 settototalprices(double totalprices){this.totalprices = totalprices; } //ショッピングカートにアイテムを追加するパブリックブールアドトカート(アイテムアイテム、int counts){//現在のアイテムが追加されている場合、if(cart.containskey(item)){cart.put(item、cart.get(item)+counts); } else {cart.put(item、counts); } //価格Caltotalprice(item.getPrice()*counts)を再計算します。 trueを返します。 } //ショッピングカートからアイテムを削除してくださいパブリックブーリアンremovefromcart(itemアイテム){if(cart!= null && cart.containskey(item)){caltotalprice(-item.getprice()*cart.get(item)); cart.Remove(item); } trueを返します。 } //合計金額を計算するprivate vid caltotalprice(2倍の価格){totalprices+= fith; }} cartservletのdogettメソッドは、アクションに従って対応する処理を実行します
if(request.getParameter( "action")!= null){action = request.getParameter( "action"); if( "add" .equals(action)){//製品を追加if(addgoodstocart(request、response)){request.getRequestDispatcher( "../ suctus.jsp")。 } else {request.getRequestDispatcher( "../ fails.jsp")。 }} else if( "show" .equals(action)){//ショッピングカートrequest.getRequestDispatcher( "../ cart.jsp")。 } else if( "delete" .equals(action)){// deleteアイテムdeletegoodfromcart(request、response); request.getRequestDispatcher( "../ cart.jsp")。 }}製品インターフェイスをクリックしてカートを配置すると、現在の製品の数がカートのサーブレットクラスカートセルバーに転送されます。現在のアイテムの処理を開始し、現在のアイテムをカートに入れます
ショッピングカートに入れる前に、最初にショッピングカートを作成するのが初めてかどうかを判断します(間違いなく1つのショッピングカートは1つだけですが、複数ではありません)。ショッピングカートを作成するのが初めての場合
現在のショッピングカートをセッションに入れてから、項目Daoオブジェクトを介してgetItembyID(ID)メソッドを呼び出して、製品オブジェクトを取得します。次に、対応する製品オブジェクトと製品の量をショッピングカートに入れます
//ショッピングカートに製品を追加しますプライベートブールンaddgoodStocart(httpservletrequest request、httpservletResponse応答){string id = request.getParameter( "id");文字列counts = request.getParameter( "num");アイテムitem = dao.getitembyid(integer.parseint(id)); //ショッピングカートを作成するのが初めてであるかどうかを識別します。 request.getSession()。setAttribute( "cart"、cart); request.getSession()。setAttribute( "dao"、dao); } cart cart =(cart)request.getSession()。getattribute( "cart"); //アイテムをカートに追加するif(cart.addtocart(item、integer.parseint(counts))){return true; } else {return false; }} [cartcartservletのリダイレクトをカートページに表示]をクリックすると、クリックします
<%@ page Language = "Java" Import = "Java.util。*" contentType = "text/html; charset = utf-8"%> <%@ page import = "entity.cart"%> <%@ page import = "entity.items"%> <%string path = request.getContextPath(); string basepath = request.getscheme()+"://"+request.getServername()+":"+request.getServerport()+path+"/"; %> <!doctype html public " - // w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<%= basepath%>"> <title> my jsp 'cart.jsp'スタートページ</title> <meta http-equiv = "pragma"> <meta " http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "content =" 0 "> <meta http-equiv =" keyword1、keyword3 "keyword3"> <meta http-equiv = "content =" type = "text/css" href = "styles.css"> - > <link type = "text/css" rel = "styleSheet" href = "css/style1.css"/> <スクリプト言語= "javascript"> function delcfm(){if( "CONDINE? }} </scrip> </head> <body> <h1>私のショッピングカート</h1> <a href = "goods.jsp"> home </a> >> <a href = "goods.jsp">製品リスト</a> <hr> <div id = "ショッピング"> <フォームアクション= ""価格</th> <th>購入数量</th> <th>アクション</th> </tr> <%//最初の裁判官セッションにショッピングカートオブジェクトがあるかどうか(request.getSession()。getattribute( "cart")!= null){%> <! - ループの開始 - > <%カート=(カート)request.getSession()。 hashmap <items、integer> goods = cart.getCart(); <items> items = goods.keyset(); iterator <items> it = items.iterator(); while(it.hasnext()){items i = it.next(); %> <tr name = "products" id = "product_id_1"> <td> <img src = "images/<%= i.getPicture()%>"/> < <span> <%= i.getPrice()*goods.get.get(i)%> </span> <入力タイプ= "hidden" value = ""/> </td> <td> <%= goods.get.get.get(i)%> </td> <td> < onclick = "delcfm();"> delete </a> </td> </td> </tr> <%}%}%> <! - end of loop-> </table> <div> <span id = "total">合計:<%= cart.getotalprices()cart.getotalprices() </form> </div> </body> </html>削除をクリックすると、製品cartservletクラスが製品を削除する方法を呼び出します
//ショッピングカートからアイテムを削除するプライベートブーリアンdeletegoodfromcart(httpservletrequest request、httpservletresponse応答){//セッションカートからショッピングカートオブジェクトを取得=(cart)request.getSession()。getattribute( "cart"); if(cart!= null){int id = integer.parseint(request.getParameter( "id")); if(cart.removefromcart(dao.getitembyid(id))){return true; }} falseを返します。 }ロジックコードは主に上記のとおりです。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。