struts 2値スタックとactionContext
2919 ワード
1、値スタックの簡単な定義:
(1)簡単に言えば、値スタックは、各リクエストオブジェクトに対応する軽量レベルのデータストレージセンターであり、ここではAction、Result、InterceptorなどのStruts 2の他の部分で使用するためにデータを統一的に管理しており、データが乱れずに集中的に管理される.
(2)要求がある場合、Struts 2は要求ごとに新しい値スタックを作成する.すなわち、値スタックと要求は1つ1つに対応し、異なる要求では値スタックも異なる. 一方、値スタックは、操作が必要なすべてのデータを一度にカプセル化します.
(3)値スタックと要求との対応関係だからこそ,値スタックはスレッドが各要求に対して安全に共通のデータアクセスサービスを提供することを保証できる.
(4)はROOTルートオブジェクトであり、ognlアクセス値スタックにはアクセス接頭辞を付ける必要はなく、actionで対応する属性を宣言し、属性に対応するsetとgetメソッドを生成するだけで、ページにはstruts 2ラベルで値スタックの値を格納/取り出すことができ、EL式${username}はアクセス範囲を追加していない場合、アクセスも値スタックであり、これは最も簡単な値スタックアプリケーションにすぎない
(5)値スタックの特徴:アクセスした値スタックに複数のオブジェクトがあり、同じ属性が複数のオブジェクトに同時に現れる場合、値スタックはスタックの上部からスタックの下部までの順序で、最初に一致するオブジェクトを探します.
2、actionContext(actionコンテキスト)の簡単な定義:
(1)ActionContextオブジェクト、ルート以外のオブジェクトは、Action実行のコンテキストであり、各ActionContextは、要求パラメータ、セッションなど、Action実行に必要なデータを含む基本的なコンテナである.
(2)ActionContextもスレッドセキュリティであり,各スレッドには独立したActionContextがあり,値スタックにおけるスレッドセキュリティに値する問題を心配する必要がない.
(3)ActionContextオブジェクトを取得する方法:
1つ目は、ActionContext自身のメソッドを使用して取得することです. ActionContext ctx = ActionContext.getContext();
2つ目は、ActionInvocationを使用して取得します.ActionContext ctx=actionInvocation.getInvocationContext()
(4)ActionContextには多くの値が格納されている.
a:RequestのParameters、リクエスト中のパラメータ、ここのデータはデータオブジェクトからコピーされていることに注意してください.そのため、ここのデータの変化はリクエストオブジェクト内のパラメータの値に影響しません.
b:RequestのAttribute、リクエスト中のプロパティ、ここではMapで、リクエストオブジェクトのプロパティデータが格納されており、これらのデータはリクエストオブジェクトのAttributeと連動している.
c:SessionのAttribute,セッション中の助興,ここではMapであり,セッションオブジェクトの属性データが格納されており,これらのデータはセッションオブジェクトのattributeと連動している.
d:ApplicationのAttribute,アプリケーションのプロパティ,ここではMapで,アプリケーションオブジェクトのプロパティデータが格納されており,これらのデータはアプリケーションオブジェクトのattributeと連動している.
e:attr、すべての属性範囲で値を取得し、page、request、session、applicationの順に検索
(5)ongl式actionコンテキストの値を取り出す:
Struts 2フレームワークはOGLNContextをActionContextに設定するため、アプリケーション、セッション、requestなどのオブジェクトを表すMapオブジェクトもActionContextに入れます.
また、ActionContextがルート以外のオブジェクトであるため、OGLL式がActionContext(actionコンテキスト)内のアプリケーション、セッション、request、attrオブジェクトの値にアクセスする場合、
OGLLにルートオブジェクトではなくactionコンテキストの他のオブジェクトから値を探すように接頭辞#にアクセスする必要があります.
値スタックの値:
el——Expressiong Language
ognl——Object Graph Notation Language.
1つはラベルで、1つは式です.
jstlはservletとjspで使用できます.
strutsラベルピンはstrutsを使用したアイテムに対して使用されます.(導入:)
el式はJSPに適用され,いくつかのコードを簡略化するために用いられる.
struts 2のデフォルトはognl式なので、ognl式がstrutsと一緒に使われるとは限らないが、strutsフレームワークを使用してonglを使用することができる.
(1)簡単に言えば、値スタックは、各リクエストオブジェクトに対応する軽量レベルのデータストレージセンターであり、ここではAction、Result、InterceptorなどのStruts 2の他の部分で使用するためにデータを統一的に管理しており、データが乱れずに集中的に管理される.
(2)要求がある場合、Struts 2は要求ごとに新しい値スタックを作成する.すなわち、値スタックと要求は1つ1つに対応し、異なる要求では値スタックも異なる. 一方、値スタックは、操作が必要なすべてのデータを一度にカプセル化します.
(3)値スタックと要求との対応関係だからこそ,値スタックはスレッドが各要求に対して安全に共通のデータアクセスサービスを提供することを保証できる.
(4)はROOTルートオブジェクトであり、ognlアクセス値スタックにはアクセス接頭辞を付ける必要はなく、actionで対応する属性を宣言し、属性に対応するsetとgetメソッドを生成するだけで、ページにはstruts 2ラベルで値スタックの値を格納/取り出すことができ、EL式${username}はアクセス範囲を追加していない場合、アクセスも値スタックであり、これは最も簡単な値スタックアプリケーションにすぎない
(5)値スタックの特徴:アクセスした値スタックに複数のオブジェクトがあり、同じ属性が複数のオブジェクトに同時に現れる場合、値スタックはスタックの上部からスタックの下部までの順序で、最初に一致するオブジェクトを探します.
2、actionContext(actionコンテキスト)の簡単な定義:
(1)ActionContextオブジェクト、ルート以外のオブジェクトは、Action実行のコンテキストであり、各ActionContextは、要求パラメータ、セッションなど、Action実行に必要なデータを含む基本的なコンテナである.
(2)ActionContextもスレッドセキュリティであり,各スレッドには独立したActionContextがあり,値スタックにおけるスレッドセキュリティに値する問題を心配する必要がない.
(3)ActionContextオブジェクトを取得する方法:
1つ目は、ActionContext自身のメソッドを使用して取得することです. ActionContext ctx = ActionContext.getContext();
2つ目は、ActionInvocationを使用して取得します.ActionContext ctx=actionInvocation.getInvocationContext()
(4)ActionContextには多くの値が格納されている.
a:RequestのParameters、リクエスト中のパラメータ、ここのデータはデータオブジェクトからコピーされていることに注意してください.そのため、ここのデータの変化はリクエストオブジェクト内のパラメータの値に影響しません.
b:RequestのAttribute、リクエスト中のプロパティ、ここではMapで、リクエストオブジェクトのプロパティデータが格納されており、これらのデータはリクエストオブジェクトのAttributeと連動している.
c:SessionのAttribute,セッション中の助興,ここではMapであり,セッションオブジェクトの属性データが格納されており,これらのデータはセッションオブジェクトのattributeと連動している.
d:ApplicationのAttribute,アプリケーションのプロパティ,ここではMapで,アプリケーションオブジェクトのプロパティデータが格納されており,これらのデータはアプリケーションオブジェクトのattributeと連動している.
e:attr、すべての属性範囲で値を取得し、page、request、session、applicationの順に検索
(5)ongl式actionコンテキストの値を取り出す:
Struts 2フレームワークはOGLNContextをActionContextに設定するため、アプリケーション、セッション、requestなどのオブジェクトを表すMapオブジェクトもActionContextに入れます.
また、ActionContextがルート以外のオブジェクトであるため、OGLL式がActionContext(actionコンテキスト)内のアプリケーション、セッション、request、attrオブジェクトの値にアクセスする場合、
OGLLにルートオブジェクトではなくactionコンテキストの他のオブジェクトから値を探すように接頭辞#にアクセスする必要があります.
値スタックの値:
EL ${ } ognl %{ } Struts
jstl-JSP Standard Tag Library、(導入:)el——Expressiong Language
ognl——Object Graph Notation Language.
1つはラベルで、1つは式です.
jstlはservletとjspで使用できます.
strutsラベルピンはstrutsを使用したアイテムに対して使用されます.(導入:)
el式はJSPに適用され,いくつかのコードを簡略化するために用いられる.
struts 2のデフォルトはognl式なので、ognl式がstrutsと一緒に使われるとは限らないが、strutsフレームワークを使用してonglを使用することができる.