前のセクションでは、製品の詳細なページを完成させ、Hibernateのセカンダリキャッシュを使用して詳細なページをロードしてシステムのパフォーマンスを向上させました。記事をクリックして表示します。このセクションでは、ショッピングカートの部分を開始します。
1.新しいテーブルを追加します
まず、データベースにいくつかのテーブルを追加します:ユーザーテーブル、注文ステータステーブル、注文テーブル(ショッピングカートテーブル)、ショッピングアイテムテーブル。ユーザーの基本情報はユーザーテーブルに保存されます。注文ステータステーブルは、主に出荷などの注文のステータスを保存します。注文テーブルは、主にユーザーの情報と注文のステータスを保存するため、ユーザーテーブルと注文ステータステーブルに関連しています。ショッピングアイテムテーブルには、特定の製品と属する注文が保管されているため、製品テーブルと注文テーブルに関連しています。特定のテーブル情報については、次のSQLステートメントを参照してください。
/*======================================================================================================================== ============================================================= =================テーブルユーザーの作成( /*ユーザー番号、自動成長* / ID INTプライマリキーNONULL AUTO_INCREMENT、 /*ユーザーログイン名* / LOGIN VARCHAR(20)、 /*ユーザーRear Name* / name varchar(20)、 /*ユーザーログインパスワード* /パスVarchar(20)、 /*ユーザージェンダー* / SEX VARCHAR(20)、 /*ユーザー電話 /電話 /電話) /*========================================================================= =======================================================/ /*テーブル:ショッピングカート(注文)テーブル構造* / /*========================================================================== ========================================================================= ========================================================================= ===============================================================================テーブルフォーダーの作成( /*注文番号、自動成長* / id intプライマリキーNull auto_increment、 /*受信者名* / name varchar(20)、 /*受信者電話番号* /電話varchar(20)、 /*配信情報* /注文日付* /日付* /日付ティムスタンプデフォルトcurrentAm Varchar(20)、 /*受信者郵便番号* /アドレスVarchar(200)、 /* Order Status* / sid int default 1、 /* member number* / uid int、Constraint SID_FK外部キー(ID)参照ステータス(ID)、制約UID_FK外部キー(UID)参照ユーザー(ID)); /*============================================================================================= ==================================================================================================== ==================================================================================================== ================================================================================================購入時の製品の価格
次に、リバースエンジニアリングを通じてこれらのテーブルをPojoに変換するため、詳細は説明しません。
2。ショッピングカートの舞台裏の論理
2.1サービスレイヤーのロジック
ユーザーがショッピングカートに製品を追加するとき、最初に製品IDを介して製品情報を取得し、次にショッピングカートに製品を追加する必要があります。追加する前に、最初に現在のセッションにショッピングカートがあるかどうかを判断する必要があります。そうでない場合は、最初にショッピングカートを作成する必要があります。その場合、現在のショッピングアイテムをショッピングカートに追加します。追加する前に、ショッピングアイテムがすでにショッピングカートに存在するかどうかを判断する必要があります。存在する場合は、対応するショッピング数を増やすだけです。存在しない場合は、追加してから、総ショッピング価格を計算し、最終的にショッピングカートをセッションに保存します。プロセス全体については、以下の図を参照してください。
次に、特定のロジックを実装し、まず2つの新しいサービスインターフェイスを作成します:SorderServiceとForderService。主にSorderServiceで定義されている2つの方法があります。ユーザーが追加したアイテムをショッピングアイテムに変換し、ショッピングアイテムをショッピングカートに追加します。 ForderServiceは、主にショッピングカートの総価格を計算する方法を次のように定義しています。
// sorderserviceインターフェイスパブリックインターフェイスsordererservice extends baseService <sorder> {//ショッピングアイテムを追加して、新しいショッピングカートパブリックフォーダーアドオーダー(フォーダーフォーダー、製品製品)を返します。 //製品データをショッピングアイテムに変換しますパブリックソーダー製品(製品製品); } // forderServiceインターフェイスパブリックインターフェイスForderService拡張baseSerservice <forder> {//合計ショッピング価格パブリックダブルクルトタル(フォーダーフォーダー)を計算します。 }次に、これら2つのインターフェイスを詳細に実装します。
// sorderserviceimpl実装クラス@service( "sorderservice")パブリッククラスsordererserviceimpl extends baseserviceimpl <sorder> sorderservice {@override public forder addsorder(forder forder、製品){boolean ishave = false; //ショッピングアイテムが重複しているかどうかをマークするために使用されます// //現在のショッピングアイテムが重複しているかどうかを判断します。重複している場合は、(ソーダー昔:forder.getSorders())の数量を追加します(old.getProduct()。getId()。equals(sorder.getProduct()。getId())){//ショッピングアイテムの重複があります。 ishave = true;壊す; }} //現在のショッピングアイテムはショッピングカートには存在しません。(!ishave){forder.getSorders()。追加(ソーダー); } forderを返します。 } @Override public Sodder ProductSosorder(製品製品){SORDER SOORDE = new SORDER(); soorder.setname(crowt.getName()); soorder.setNumber(1); soorder.setprice(product.getPrice()); Soorder.setProduct(製品); SOORDERを返します。 }} // forderserviceimpl実装@service( "forderservice")public class forderserviceimpl extends baseserviceimpl <forder> forderservice {@override public lubl clutotal(forder forder){double total = 0.0; for(sorder soorder:forder.getSorders()){total += soorder.getnumber() * soorder.getPrice(); }合計を返します。 }}次に、これらの2つの豆を、ゆだに使用するためにベースアクションに注入する必要があります。
@Controller( "BaseAction")@Scope( "Prototype")Public Class BaseAction <T> ActionSupport RequestAware、SessionAware、ApplicationAware、ModelDriven <T> {//他の無関係なコード... @Resource保護されたForderService ForderService; @Resource Protected SorderService SorderService; } OK、サービスレイヤーのロジックが終了し、次にアクションパーツを実行します。
2.2アクションの論理
新しい蛇行を作成し、上記のロジック図に示すプロセスに従って、ショッピングカートを追加するロジックを完成させます。コードは次のとおりです。
@controller @scope( "Prototype")Public Class SodractionはBaseAction <Sorder> {public String addsOrder(){// 1。 Product.id製品= Productervice.get(model.getProduct()。getId())に従って、対応する製品データを取得します。 // 2。現在のセッションでショッピングカートがあるかどうかを判断します。そうでない場合は、if(session.get( "forder")== null){//新しいショッピングカートを作成してセッションセッションに保存します。 } // 3。製品情報をSoorderに変換し、ショッピングカートに追加します(ショッピングアイテムが複製されているかどうかを判断)Forder forder =(forder)session.get( "forder"); forder = soorderservice.addsorder(forder、product); // 4。ショッピングの合計価格を計算します。 // 5。セッションセッションに新しいショッピングカートを保存します。put( "forder"、forder); 「showcart」を返します。 }} struts.xmlファイルを構成します。
<アクションname = "sorder_*" method = "{1}"> <result name = "showcart">/showcart.jsp </result> </action>次に、ショッピングカートディスプレイページshowcart.jspにジャンプします。 showcart.jspのショッピングカートパーツに関するフロントエンドプログラムは次のとおりです。
3。フロントデスクのジャンプリンク
すべての背景部品が完了します。次に、吸着剤にアクセスするために、フロントデスクの詳細をショッピングカートのリンクアドレスに追加します。
これは正しくジャンプします。ショッピングカートディスプレイページの特定の効果を見てみましょう。
このようにして、ショッピングカートの基本的な機能が完了し、後でいくつかの改善を行います。
元のアドレス:http://blog.csdn.net/eson_15/article/details/51418350
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。