Struts 2の値スタックの詳細

3261 ワード

sshにおけるページとaction間のデータ格納と伝達には,URL伝達,モデル駆動,フォーム伝達,および本稿で説明する値スタックなど,様々な方法がある.それぞれの方式はすべてその特徴と適用範囲があって、小編は自身の適用経験とネットに基づいて 上のクエリの結果は、値スタックの基本原理と適用方法についてまとめられています.
1値スタックは何ですか?
          一言で言えば、値スタックは、各リクエストオブジェクトに対応するデータストレージセンターである.Struts 2の重要な特徴は、値スタックが導入されていることです.以前は、actionとページの間でデータをキャッシュまたはモデル駆動で伝達し、データが混乱し、
 管理が難しく、キャッシュに時間と数量の制限があり、非常に使いにくい.値スタックの導入により、action、result、interceptorなどの使用のためにページとaction間のデータを統一的に管理できるという問題が解決されました.私たちの多くの情
 値スタックがどこにあるか、中に何があるかを考える必要はなく、自分の必要なデータを取得するだけで、開発者の作業量と論理的な複雑さを大幅に低減することができます.
2値スタックは何ができますか?
          値スタックは、スレッドが各リクエストに対して安全に共通のデータアクセスサービスを提供することができる.要求アクセスがあるたびに、Struts 2は要求ごとに新しい値スタックを作成します.つまり、値スタックと要求時に1つずつ対応し、異なる要求、値スタックも作成されます.
 違います.値スタックは、すべての操作を要求する関連データをカプセル化します.値スタックとリクエストの対応関係だからこそ、値スタックは、各リクエストがデータにアクセスするときのスレッドのセキュリティを保証します.
3値スタックには何がありますか?
          狭義値スタック:ダイナミックEL演算に必要な値と結果に主に力を入れましょう.もちろんognlValueStackオブジェクトは主にOGLL演算をサポートするために使用されます.狭義値スタックには、OGLLがアクセスできるデータがいくつか格納されています.たとえば、次のようなものです.
          Actionインスタンスです.これによりOGLLでactionインスタンスの属性の値にアクセスできます.
          OGLL式演算の値
          OGLL式で生成された中間変数、例えばStruts 2ラベルは、JSPでラベルを使用し、値スタックのデータにアクセスできます.
         一般化値スタック:ActionContextオブジェクトを指し、actioncontextオブジェクトはaction実行のコンテキストであり、各actioncontextはコンテナであり、パラメータ、セッションなどのaction実行に必要なデータを含む.
         Actioncontextには、次のような多くの値が格納されています.
         requestのparameters:リクエストのパラメータです.ここでのパラメータはリクエストオブジェクトからコピーされます.
         requestのattribute:リクエスト内のプロパティ.彼のデータ型はmapで、リクエストオブジェクトのプロパティデータが格納されており、これらのデータはリクエストオブジェクトのattributeと連動している.
         sessionのattribute:セッション内のプロパティ、データ型はmapなどのプロパティとセッションオブジェクトのattributeが連動しています.
         アプリケーションのattribute:アプリケーションのプロパティ、データ型はmapです.
         valuestack:つまり狭義値スタックであり、actioncontextはvaluestackをOGLLアクセスのルートとし、すなわちデフォルトではOGLLはvaluestackの中の値にデフォルトでアクセスする.
4値スタックはどのように使用しますか?
         valuestackはactioncontextに格納されており、OGLL式でアクセスし、JSPページでStruts 2ラベルでデータにアクセスできます.valuestackはまずスタックなので、スタックの使用特徴を満たしています. 値スタックに複数のオブジェクトが存在し、同じプロパティがある場合、値スタックはスタックの上部からスタックの下部までの順序で、最初に一致するオブジェクトを探します.
       取得値スタック:ValueStack testValueStack=ActionContext.getContext().getValueStack();
       使用方法:valuestackの主な方法は次のとおりです.
<span style="font-size:18px;">       testValueStack.push(Object arg0);          。
       testValueStack.pop();          ,        。
       testValueStack.peek();         ,         
       testValueStack.set(String arg0, objectarg1);            。
       testValueStack.setValue(String arg0,object arg1);            。</span>
適用:actionのコード:
<span style="font-size:18px;">publicString execute() {
//       、     
List<Product>hotProductList = productService.findHotProduct();
ActionContext.getContext().getValueStack()
.set("hotProductList",hotProductList);
return"success";
 
}</span>
 jspコード:
Struts 2ラベルの定義
<span style="font-size:18px;"><%@tagliburi="/struts-tags" prefix="s"%>  </span>
アクセス値スタックデータ
<span style="font-size:18px;"><s:iteratorvar="p" value="hotProductList"></span>