この記事では、参照用のショッピングカート機能を実装するためのJavaの特定のコードを共有しています。特定のコンテンツは次のとおりです
1実装する必要があります
1. Taotao Mallのショッピングカート機能を実現します
2ショッピングカート機能
2.1関数の説明
1.ショッピングカートに製品を追加する場合、ログインを必要とする必要はありません。 JD.comはログインする必要はありません。Taobaoはログインする必要があります。それぞれに独自の利点があります。
2。ショッピングカートの商品の合計価格を計算します。商品の量が変更される場合、再計算が必要です。
3.ユーザーはショッピングカート内のアイテムを削除できます。
4.ユーザーが注文を行ったら、ショッピングカートの機能を削除します。
ショッピングカートは、ユーザーがログインしていない場合にも使用できます。ショッピングカートの製品情報は、Cookieに書き込む必要があります。ショッピングカートのすべての操作は、運用クッキーです。データベースへの圧力を効果的に軽減します。
短所:コンピューターを変更した後、ショッピングカートの商品を同期することはできません。
実装されたプロジェクト:Taotao-Protalでショッピングカート機能を実装します。製品情報サービスに電話するだけで、他のシステムと対話する必要はありません。
2.2機能分析
1.ユーザーがログインしていない場合はショッピングカートを使用することもできます。そのため、ショッピングカート情報をCookieに入れる必要があります。
2. POJOに製品情報を保存してから、JSONにシリアル化してCookieに保存できます。
3.製品情報を取得するには、CookieからJSONデータを抽出し、Javaオブジェクトに変換できます。
4.この関数はCookieの操作のみを必要とし、データベースのサポートを必要としないため、Taotaoポータルでのみ実装する必要があります。
5.ショッピングカートには4つのタイプがあります
a)製品を追加します
b)商品の量を変更します
c)ショッピングカートのアイテムを削除します
d)ショッピングカート製品リストを表示します
2.3ショッピングカート製品を追加します
[製品の詳細]ページの[CARTに追加]ボタンをクリックしてリクエストを送信し、製品IDがコントローラーに渡され、コントローラーがIDを受信し、コントローラーがサービスを呼び出して、製品IDに基づいて基本的な製品情報を照会します。製品をCookieに書き込みます。 Cookieを追加する前に、Cookieからショッピングカートの商品を取り出して、現在のショッピングカート製品リストにそのような製品があるかどうかを判断します。数がある場合、製品が追加されていない場合、数量は1です。ユーザーにショッピングカートリストを表示します。
2.3.1サービス
関数:製品ID、数量(デフォルトは1)、および製品IDに基づいて製品情報を照会します。 Taotao-Restのサービスを呼び出す。ショッピングカートに製品を追加し、最初にショッピングカート製品リストを取り出し、リストにそのような製品があるかどうかを判断します。このアイテムがアイテムリストに追加されていない場合。戻って復帰するためにタートアロレルトに成功します。
関数:
1.コントローラーによって配信された製品IDを受信し、製品IDに基づいて製品情報をクエリします。
2。クッキーからショッピングカート情報を取り出して、製品Pojoリストに変換します。
3.製品情報を製品リストに追加します。
パラメーター:
1。製品ID
2。リクエスト
3。応答
返品値:
taotaoresult
@service public class cartserviceimplを実装しますcartservice {// service url @value( "$ {rest_base_url}")private string rest_base_url; //製品サービスurl @value( "$ {items_item_url}")private string items_item_url; // cookie @valueのショッピングカート製品に対応するキー( "$ {cart_items_list_key}")private string cart_items_list_key; //ショッピングカートクッキーlifetime @value( "$ {cart_items_expire_time}")private integer cart_items_expire_time; /** *カート製品の追加 * <p>タイトル:additem </p> * <p>説明:</p> * @param itemid * @param request * @return * @see com.taotao.portal.service.cartservice#additem(java.lang.long、javax.http.htptpstptsptptsptpstptsptpstptsptpes javax.servlet.http.httpservletResponse) */@Override public taotaoresult additem(long itemid、httpservletrequest request、httpservletresponse応答){//製品IDアイテム= getItembyid(itemid); if(item == null)taotaoresult.build(400、 "製品情報が見つかりませんでした"); // Cookieリスト<item> cartitems = getItemListfromCookie(リクエスト)でショッピングカート製品リストを取得します。 //製品がショッピングカートに存在するかどうかを判断します。 for(item i:cartitems){if(i.getid()。longvalue()== itemid.longvalue()){//ショッピングカートにこのアイテムがありますi.setnum(i.getnum() + 1); itemexists = true;壊す; }} //製品がショッピングカートに存在しない場合、ショッピングカート製品リストにアイテムを追加します(!itemExists){//数量を1 item.setnum(1)に設定します。 //ショッピングカートCartItems.Add(アイテム)に製品を追加します。 } //ショッピングカート情報をCookie cookieutils.setcookie(request、response、cart_items_list_key、jsonutils.objecttojson(cartitems)、cart_items_expire_time、true)に書き込みます。 taotaoresult.ok(cartitems)を返します。 }プライベートアイテムgetItembyID(long itemid){//製品IDに基づいて製品情報を確認しますresultstr = httpclientutil.doget(rest_base_url + item_item_url + itemid); // taotaoresult taotaoresult result = taotaoresult.formattopojo(resultstr、item.class); //製品情報項目を取得項目= null; if(result.getStatus()== 200){item =(item)result.getData(); } return item; } private list <item> getItemlistfromcookie(httpservletrequest request){// Cookie String cutiTitemsstr = cookieutils.getcookievalue(request、cart_items_list_key、true)でショッピングカートアイテムリストを取得します。 //空でない場合、Javaオブジェクトリスト<item> cartitems = nullに変換されます。 if(!stringutils.isblank(cartitemsstr)){cartitems = jsonutils.jsontolist(cartitemsstr、item.class); } else {cartitems = new ArrayList <>(); } cartitemsを返します。 }}2.3.2 Product Pojo
Product Pojoは、Taotao-Portalでアイテムを使用する必要があります。このPojoは、復活したときに例外を投げます。次の変更が必要です。
2.3.3コントローラー
@Controller @RequestMapping( "/cart")パブリッククラスCartController {@Autowired Private CartService Cartservice; @RequestMapping( "/add/{itemid}")public string additem(@pathvariable long itemid、httpservletrequest request、httpservletresponse応答、モデルモデル){//製品情報= cartservice.additem(itemid、request、request); // [result.getStatus()!= 200){model.addattribute( "message"、result.getmsg()); 「エラー/例外」を返します。 } //ショッピングカート内のアイテムをページモデルに渡します。addattribute( "cartlist"、result.getData()); 「カート」を返します。 }}ユーザーは「私のショッピングカート」をクリックしてショッピングカート情報を表示します
2.4ショッピングカート製品を表示します
2.4.1サービス
/** *ショッピングカートリストを取得 * <p> *タイトル:getCartitemsList * </p> * <p> *説明: * </p> * * @return * @see com.taotao.portal.service.cartservice Cookieリストの製品リスト<item> itemslist = getItemlistfromcookie(request); return itemslist; }
2.4.2コントローラー
@RequestMapping( "/cart")public string showcart(httpservletrequest request、model mode){//ショッピングカートリスト<item> list = cartservice.getCartitemslist(request); mode.addattribute( "cartlist"、list); 「カート」を返します。 }2.5製品の量を変更します
ショッピングカートのアイテムの「+」と「 - 」の標識をクリックすると、アイテムの数を増やすか減少させます。商品の量を減らすとき、量が「1」の場合、それは減少し続けません。
2.5.1サービス
/** *指定された製品の数量を変更します * <p>タイトル:ChangeTemnum </p> * <p>説明:</p> * @param itemid * @param num * @param request * @return * @see com.taotao.portal.service.cartservice javax.servlet.http.httpservletrequest、javax.servlet.htttpservletresponse) */@Override public taotaore changeItemnum(long itemid、int num、httpservletrequestリクエスト、httpservletresponsens esprodce est = from cookies = from cookie getItemListFromCookie(リクエスト); //製品リストから変更する製品を(item item:list){if(item.getId()== itemid){//製品を完成させ、quantion item.setnum(num);壊す; }} //製品情報をCookies cookieutils.setcookie(request、response、cart_items_list_key、jsonutils.objecttojson(list)、cart_items_expire_time、true); taotaoresult.ok()を返します。 } 2.5.2コントローラー
@RequestMapping( "/update/num/{itemid}/{num}")@responsebody public taotaoresult updatenumbyid( @pathvariable long iteger num、 @pathvarletrequest request、httpservletrequest request、httpservletresponse応答)返品結果; }2.6ショッピングカート製品を削除します
2.6.1サービス
/** *ショッピングカートのアイテムの削除 * <p> *タイトル:deleteItem * </p> * <p> *説明: * </p> * * @param itemid * @param request * @param Response * @return * @see com.taotao.portal.service.cartservice javax.servlet.http.httpservletrequest、 * javax.servlet.htttpservletresponse) //ショッピングカートでアイテムを見つけて(item item:itemslist){item.getid()。longvalue()== itemid.longvalue()){itemslist.remove(item);壊す; }} // Cookie cookieutils.setcookieのショッピングカートデータを更新します(リクエスト、応答、cart_items_list_key、jsonutils.objecttojson(itemslist)、cart_items_expire_time、true); return itemslist; } 2.6.2コントローラー
@RequestMapping( "/delete/{itemId}")public string deleteItembyId(@pathvariable long itemid、httpservletrequest request、httpservletresponse応答、モデルモデル){list <item> list = cartservice.deleteItem(itemid、request、respult、response); model.addattribute( "cartlist"、list); 「カート」を返します。 }ショッピングカートの問題
1.機器の交換時にショッピングカート製品を同期することはできません
a)ショッピングカート製品はデータベースに保存できません
b)ユーザーは情報を同期するためにログインする必要があります
c)ショッピングカート情報をRedisに保存できます。キーはユーザーであり、価値はショッピングカートリストです
d)ショッピングカートの商品の問題。
2。注文を送信した後、ショッピングカート製品をクリアする必要があります。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。