初心者のstrutsのstruts.xml小結


初めてstrutsを学んで、まだ入門していないで、少し見て、それから自分の考えを整理します.悪いところはお目にかかりますが、お許しください.最後に権威ある実行プロセスを添付します
MVCモデルを考えてみると、
strutsでは、
C:FilterDispatcher
V:page
M:action
この流れを思い出して
1、まずtomcatがHttpServeretRequesを受け取った後、web.xmlがstruts 2に通知するかどうか
だから自然にwebを見てみましょう.xmlプロファイルが作成され、
strutsブロックを望むなら
フィルタFilterを追加する必要があります
<span style="font-size:18px;"><filter>
        <filter-name>
                struts
        </filter-name>
        <filter-class>
                org.apache.struts.dispatcher.FilterDispatcher
        <fileter-class>
</filter>
<filter-mapping>
        <filter-name>
                struts
        </filter-name>
        <url-parttern>
                /*.action
        </url-parttern>
</filter-mapping>
</span>

上記のコードを追加すると、設定に従ってurlをブロックします
2、struts 2がurlをブロックするとstrutsに従います.xmlファイルは対応するactionをとります.だからstrutsを理解する必要がある.xml
strutsについてxmlの構成:
1、まずactionを書いてstruts 2にどのように措置を取るかを知らせなければならないので、ラベルもあります
2、actionの前または後に何かしたいことがあります.例えば、お客様にログインしているかどうかをチェックしたり、actionの動作を記録しているかどうかをチェックしたりします.そのため、
3、actionもinterceptorも操作が終わったので、データを返さなければなりません.そのためが誕生しました.
strutsはコントローラのように,システムが取るactionとユーザに返すpageを決定する.
3、strutsの各ラベルについて理解してください.
    1、
actionをよりよく管理するために、異なるpackageに同じ名前のactionが存在することができます.
属性:
name,比選
namespace:オプションで、デフォルトは「」(空の文字列)urlに関連付けられます.たとえば、リクエスト/test/*.action、namespaceを「/test」に設定できます.
exteds:オプションで、継承されたパッケージはextends=「struts-default」と書くことができます.
abstract:オプションで、パッケージを継承する必要があります.
2、パッケージの計画ができたら、いろいろなラベルを中に入れることができます.例えば
Actionはどのような動作を採用するかを決定する.
属性:
nameとurlで要求された*.Actionは同名で、
classというactionが呼び出すクラス
methodはclass定義のaction動作を実行し、デフォルトはexecute()
3、アクションを実行する前または後にいくつかの情報を検証する必要があるか、またはいくつかの後続の処理を行う必要がある.
        
<span style="font-size:18px;"><intercepters>
        <interceptor name="security" class="com.mycompany.security.SecurityInterceptor" />
        <interceptor-stack name="defaultComponentStatck">
                <interceptor-ref name="component" />
                <interceptor-ref name="deaultStack" />
        </interceptor-stack>
</intercepters></span>

4、actionが完了した後、変更したことをstruts 2にどのように通知しますか?
それがresultの機能です
         
<span style="font-size:18px;"><action name="VelocityCounter" class="com.opensymphony.webwork.example.counter.SimpleCounter">
        <result name="success">...</result>
        <interceptor-ref name="defaultComponentStack" />
</action></span>

この流れは大体このようになって、初学のため、流れの総括も自分で理解するレベルしかなくて、記憶を便利にするためです.
権威ある実行プロセス:
       
Struts 2フレームワークでのリクエストの処理は、次のステップに大きく分けられます.
1、クライアントが要求を送信する;2、この要求は一連のフィルタ(Filter)を通過する(これらのフィルタにはActionContextCleanUpというオプションのフィルタがあります.このフィルタはStruts 2と他のフレームワークの統合に役立ちます.たとえば、SiteMeshPlugin)3、次にFilterDispatcherが呼び出され、FilterDispatcherはActionMapperにActionを呼び出す必要があるかどうかを尋ねます.FilterDispatcherの機能は次のとおりです.
(1)Actionsを実行する(2)ActionContextをクリアする(3)静的コンテンツを維持する(4)requestライフサイクル内のXWorkをクリアするinterceptors 4、ActionMapperがアクションを呼び出す必要があると決定した場合、FilterDispatcherはリクエストの処理をActionProxy 5に渡し、ActionProxyはコンフィギュレーションマネージャを介してフレームワークのプロファイルを問い合わせるActionクラス6を呼び出し、ActionProxyがActionInvocationを作成するインスタンスを見つけます.7、ActionInvocationインスタンスはネーミングモードを使用して呼び出し、Actionを呼び出すプロセスの前後で、関連するインターセプターの呼び出しに関連します.8、Actionの実行が完了すると、ActionInvocationはstruts.xmlの構成に基づいて対応する戻り結果を見つける責任を負います.戻り結果は通常(ただし、必ずしもそうではないが、別のアクションチェーンであってもよい)表示する必要があるJSPまたはFreeMarkerのテンプレート.表示中にStruts 2フレームで継承されたラベルを使用することができる.このプロセスでは、ActionMapperブロッカーとフィルタに関する必要がある:
 
1、ブロッキングはjava反射機構に基づいており、フィルタは関数コールバックに基づいている.
2、フィルタはservletコンテナに依存し、ブロッカーはservletコンテナに依存しない.3、ブロッカーはAction要求に対してのみ機能し、フィルタはほとんどの要求に対して機能することができる.4、ブロッカーはActionコンテキスト、値スタック内のオブジェクトにアクセスできますが、フィルタはできません.5、Actionのライフサイクルでは、ブロッカーは複数回呼び出すことができ、フィルタはコンテナの初期化時に1回しか呼び出されない.
上記の手順のすべてのオブジェクト(Action,Results,Interceptors,など)は、ObjectFactoryによって作成されます.
Struts 2の目標は簡単です.Web開発をより容易にします.この目標を達成するために、Struts 2では、スマートなデフォルト設定、annotationの使用、および「構成よりも慣例が重要」の原則の応用など、多くの新しい特性が提供され、XML構成が大幅に減少します.Struts 2のActionはいずれもPOJOであり、Action自体のテスト性が向上する一方で、フレームワーク内部の結合度も低減され、HTMLフォームの入力項目はaction用に適切なタイプに変換される.開発者はブロッキングを介して(ブロッキングをカスタマイズしたり、Struts 2で提供されたブロッキングを使用したりすることができます)リクエストの前処理と後処理を行うことで、処理リクエストがよりモジュール化され、結合度がさらに低下します.モジュール化はプラグインメカニズムでフレームワークを拡張できます.開発者はカスタムインプリメンテーションを使用してフレームワークの関門を置き換えることができます.キークラスは、フレームワーク自体に備わっていない機能を得る.ラベルで複数のトピック(カスタムトピックを含む)をレンダリングできます.Actionの実行後、JSPページのレンダリング、Velocity、Freemarkerテンプレートなど、さまざまな結果タイプがありますが、これらに限定されません.