ユーザーフレンドリーなフロントエンドSpringMVC&Struts2の迎撃には、詳細な

直接のテーマに!
まず、構成Struts2のインターセプタ二段階
インターセプタクラスに対応する構成:
Struts.xml設定ファイルに配置された2インターセプタ
インターセプタ・クラスを構成する3つのStrust2のメソッド有する
AN実装インターセプタ
2継承AbstractInterceptorを
3継承MethodFilterInterceptorクラスによって
:違い
ろ過サポートするかどうか:
第一及び第二の種類の事実の使用は、ほとんど、アクションはすべての方法をインターセプトしますが、同じではないの最初の3種類は、サポートフィルタリング方法の最初の3種類あるため、次のように指定することができます私たちはブロックする方法、(includeMethodsは、指定されたメソッドをインターセプトする必要が使用して- excludeMethodsを用いた方法がインターセプトするインターセプタを必要としない示すので、私たちは通常、最初の3種類を使用Struts2のインターセプター設定
の継承MethodFilterInterceptorクラスを通じて3を、リライトdoInterceptは方法
この例では-------大きな役割:ログインにジャンプしない場合は、管理ウィンドウでたときにユーザがログインする(ユーザー名が空であるかどうかを判断することによってセッション)、ユーザーがログインしているかどうかをチェックログイン画面。

ロックスタークラスは、拡張MethodFilterInterceptor {公共
たちのインタセプタを達成するためにdoInterceptorを書き換える//は-----アクションの呼び出しアクションの呼び出し元、インターセプタの例の所有者に代わってアクションの実施状況の例と実行されるアクションを設定されています。
保護された文字列doIntercept(ActionInvocation呼び出し)がスロー例外{
// ActionCotextインスタンスを取得(するactionContextセッションを含有する)
するactionContextするactionContext ActionContext.getContext =();
//対応するセッションが、するactionContextが実際に大きな構造をマッピングするマッピング取得し、キーマッピングされた値が
マップ<文字列、オブジェクト> = actionContext.getSessionセッション();
//セッションの対応する属性を(属性はクラスオブジェクト、キャストに設定されている)を取得
文字列名=(String)をSession.get(「ユーザ名「);
//は、対応するデータは、ユーザがログインしているかどうかを知るためにセッションに存在するか否かを判断する
(!= NULL && sername.equals名(IF」CCHH「)
{
//クリアランスが存在する
正当なユーザのSystem.out.printlnを(」 ....「+ユーザー名)。
//次のプロセスは、このアクションの通知は、次にStruts2のは、次のインターセプタまたはアクションの次の呼び出し、現在のインターセプタ出口に対応するものとして、乾物の下バックルであり
、戻りinvocation.invoke()
}
{他
System.out.println(「ユーザーが署名されていない...」);
検証が失敗した場合、//、ログイン文字列が返され、ログイン画面の入力
リターン「ログイン」;
}
}
}
多くの人がするactionContextのために、おそらく、そこにあります非常に混乱し、すべてがその理由を持っている、あなたが理解し、非常に地図上で混乱し、その後、実行します!
キー説明、するactionContext ----アクション・コンテキスト、
簡易版:
ストラット----要求によれば---->作成するactionContext {セッション、パラメータ、等}、フォームをマッピングするキー/値ストアデータオブジェクト--- ---のgetContextによって---->現在取得するactionContext
詳細なバージョンを:
1Strusts2基づく要求は、対応するactionContextを作成するために、各実行スレッドのHTTPリクエストに対応
------->その要求が一意のスレッドを有していますするactionContext
------->私たちは、静的メソッドのgetContext()を使用することができ
、現在のスレッド(スレッドSturtsだけするactionContextを作成するために、要求の作成を要求する)を取得するために------->するactionContextを

2一方、するactionContextは、などのセッション、パラメータとして必要なオブジェクトとデータのアクションの実行中にいくつかを保存し、そして私たちはアクション・コンテキストを通じて対応するセッションを得ることができる理由ですフォームマップのコレクションを、使用、であることが判明それは、アクションのコンテキストに格納されているので

2つの構成ファイルStruts.xmlに構成インターセプター
のステップ:
我々はノック登録インターセプタクラス
2インターセプタ定義スタック、スタック内に配置された対応するインターセプター、および対応するインターセプタに配置してもよいですインターセプトしない方法どの方法インターセプター、
3我々は一般的に配置された<デフォルト・インターセプター-refの名前= 「 インターセプタスタック名」/>自動的にアクションによって傍受する
。4もできます。<インターセプター-refの名前=「インターセプタスタック名を「/>

<パッケージのデフォルト名= "拡張=" Strutsのデフォルト"名前空間" / ">
<インターセプター>
<! -インターセプタを登録する1 - 。>
<インターセプタ名="ロックスター"クラス=" com.ali.demo.Rockstar " >
</ intertceptor>
<! -インターセプタのスタック構成- >
<インターセプタスタック名= "myStack">
<! -デフォルトでブロックStrutsの実行- >
<インターセプター-REF名= "defaultStackを"> < /傍受-ref>を
<! -注意この場所に、それはデフォルトのStruts2のインターセプタによってロードされるように、前面に置かれたインターセプタをデフォルトにロードする必要があります- >
<インターセプター-refの名前=「ロックスター」>
< ! - > -指定傍受しない方法は、負の意味を除外し
ます。<paramの名前= "excludeMethods">ログイン</ param>の
</ intercepor-REF>
</インターセプタースタック>
</インターセプタ>
//すべてのアクションインターセプタスタックのために自動的に呼び出さ
// <デフォルト・インターセプター-refの名前 = "myStack"> </デフォルト・インターセプター-REF>


------------------------インターセプターの登録および構成完了
方法が傍受された場合、インターセプタはないから直接戻され、1続行。
2方法が傍受されていない場合、それはその後、ダウン実行される
<インターセプター-REF名=「myStackタグを使用している間 」/> 対応するクラスにインターセプタスタックを指定します

<! -バックによるアクセス管理アクションページ- >
<アクション名=「認証」>
/WEB-INF/jsp/manage.jsp </結果> <結果>
<! -リターンパスチェックが失敗し、対応します迎撃ログイン文字列- >
<結果名=「ログイン」> / login.jspを</結果>
<! -スタックの動作中の迎撃対応する参照- >
<名前= REF-インターセプター」 myStack「> </インターセプタ-REF>
</アクション>


<アクション名= "管理者"クラス= "userAction" METHOD = {1}>
<結果名= "名前"> / WEB-INF / JSP / manage.jsp </結果>
<結果名= "エラー"> /ログイン.jspファイル</結果>
</アクション>
</パッケージ>

これらは、解答のためのStruts2のインターセプターです!

SpringMVCインターセプタ構成
SpringMVCインターセプタ構成で次に見て、Struts2のがよりはるかに簡単になり
最初の(にHandlerInterceptorインタフェースクラスを実装することにより、主にSpringMVCインターセプタを理解し、その三つの方法、すなわち、前者preHandlerをオーバーライド要求がPostHandler(リクエストがコントローラに到達し、パラメータがメソッドの実行が完了した後のModelAndView)afterHandler(前に返されていない)、コントローラ、インターセプト)の前に到着した後、
2つのステップでもある
1書き込みインターセプタクラス:

{実装からクラスSpMvc HandlerInterceptor公共
** ** //リクエストコントローラに到達する前に
、パブリックブールザ・preHandleを(HttpServletRequestのリクエスト、HttpServletResponseのREPONSE、オブジェクトobjが)例外{スロー
** //セッションを取得するには、**
のHttpSessionでrequest.getSessionセッション=();
// ** **セッションから対応する値を取得
;文字列名=(String)をsession.getAttribute( "名前")は
** ** //この値はかどうかが決定
(名= nullの&& name.equals(「CCHH IF! "){
するSystem.out.println("ブロッキングによって合法的ユーザが、 ");
trueを返す; // **真ここでインターセプターを介し代表**
}

Response.sendRedirect("インデックス「); //ジャンプページインデックス・ページには、
falseを返す; // ** **ここ傍受falseを表し
}
// **リクエスト**はコントローラに達し、パラメータがのModelAndViewまで返されません
(HttpServletRequestのリクエスト、レスポンスHttpServletResponseの、オブジェクトobj、のModelAndView MAV)はpostHandleボイド公共
{例外がスロー
(「ここでメソッドが実行される....」)のSystem.out.printlnを;
}
** //方法リクエストが終了した後、のModelAndViewの対応するオブジェクトパラメータなし**
{publicクラスafterHandle(HttpServletRequestのリクエスト、レスポンスHttpServletResponseの、オブジェクトobj)は、例外がスロー
( "メソッドの実行後....")のSystem.out.println
}
}
SpringMVCで2対応するインターセプター構成
SpringMVCインターセプタがに関してStruts2のと配置、多くの比較的簡単な

インターセプター配置インターセプタクラスの
要求は2遮断するために設けられている<MVC:マッピング/> Struts2のある<PARAM NAME = " includeMethods "/>
。3は、傍受された要求を設定されていない<MVC:除外マッピング/> Struts2のは、 <PARAM NAME =である">」excludeMethods

<! -設定迎撃- >
<MVC:インターセプタ>
:<MVCインターセプタ>
<! -どこのクラスパスの迎撃- >
の<beanクラス= "com.ali.demo.SpMvc" /> </豆>
< -要求、傍受された要求傍受- >!
<MVC:マッピングパスを= "/ **" />
<! -要求をインターセプトしていません- >
<MVC:-mappingパスを除外=「/ LoginController / login.do「/>
<./ MVC:インターセプタ>
</ MVC:インターセプタ>

おすすめ

転載: www.cnblogs.com/ly570/p/10961069.html