SpringMVCにおけるスクリーンセーバーの詳細及びコード例
本論文で研究したのは主にSpringMVCの中のスクリーンセーバーの紹介及び実例コードであり、構成などの内容は以下の通りである。
Springmvcのプロセッサブロックは、プロセッサを前処理および後処理するためのServlet開発中のフィルタFilterと類似している。本文は主にスプリングmvcの中でスクリーンセーバーがどのように定義されているかをまとめ、スクリーンセーバーの実行状況と使用方法をテストします。
1.スプリングmvcスクリーンの定義と配置
1.1スプリングmvcスクリーンの定義
springmvcでは、スクリーンセーバーを定義し、Handler Interceptorインターフェースを実現し、このインターフェースで提供される3つの方法を以下のように実現する。 preHandle方法:Handler方法に入る前に実行します。身分認証、身分認証に使用できます。例えば、認証がログインしていないことを示す場合、この方法でブロックしてから実行しないといけません。 postHandle方法:Handler方法に入ったら、ModelAndViewに戻る前に実行します。この方法にはmodelAndViewのイメージが見られます。アプリケーションシーン:modelAndViewから出発します。共通のモデルデータ(例えばメニューナビゲーションなど)をここでビューに伝えてもいいし、ここで同じビューを指定してもいいです。 afterComplection方法:Handlerを実行した後に実行します。アプリケーションシーン:異常処理を統一し、ログ処理などを統一する。
1.2スプリングmvcスクリーンの配置
springmvcでは、スクリーンは具体的なHandlerMappingに対して配置されています。つまり、あるHandlerMappingにブロックが配置されていたら、このHandlerMappingによって成功したhandlerは最終的にこのスクリーンを使用します。例えば、私たちが構成ファイルに配置したマッパーがorg.springframe ebork.web.servlet.hander.BenName Handler Mappingであると仮定して、このようにスクリーンセーバーを配置することができます。でブロックするurlを指定すればいいです。
2.スプリングmvcブロックの実行テスト
上のHandlerInterceptor 1にならってもう2つのスクリーンショットを書きます。HandlerInterceptor 2とHandler Interceptor 3は、上のように配置されています。それから、三つのブロックの実行状況をテストして、関連の総括を行います。
2.1 3つのスクリーンセーバーを全部通す
つまり、3つのブロックのpreHandle方法では、リターン値をtrueに変更して、ブロックの実行順序をテストします。テスト結果は以下の通りです。
Handler Interceptor 1….preHandle
Handler Interceptor 2…preHandle
Handler Interceptor 3….preHandle
Handler Interceptor 3…postHandle
Handler Interceptor 2…postHandle
Handler Interceptor 1…postHandle
Handler Interceptor 3…afterComplection
Handler Interceptor 2…afterComplection
Handler Interceptor 1…afterComplection
印刷の結果に基づいて総括を行います。すべてのスクリーンセーバが実行されるとき、preHandle方法は配置の順序に従って実行します。また、他の2つの方法は、構成の順序に従って逆方向に実行される。
2.2ブロックが一つあって、通らない。
第三ブロックのpreHandle方法で戻り値をfalseに変えます。前の二つかそれともtrueか、ブロックの実行順序をテストします。テスト結果は以下の通りです。
Handler Interceptor 1….preHandle
Handler Interceptor 2…preHandle
Handler Interceptor 3….preHandle
Handler Interceptor 2…afterComplection
Handler Interceptor 1…afterComplection
印刷の結果に基づいてまとめを行います。
1.スクリーンセーバ1と2がセットされているので、スクリーン3のpreHandleは実行できます。つまり前のスクリーンショットを放して、後のスクリーンショットがpreHandleを実行できます。
2.ブロッキング3は通過しないので、他の2つの方法は実行されていません。つまり、あるブロックが通らないと、他の2つの方法は実行されません。
3.ブロックが一つある限り、すべてのブロックのpostHandle方法は実行しませんが、preHandleを実行して、実行しても、afterComplection方法を実行します。
2.3の3つのブロックは全部通行できません。
このような状況は実は上の状況を参考にしてもいいです。特例です。運行結果も見てみます。
Handler Interceptor 1….preHandle
明らかに、最初のスクリーンセーバーのpreHandle方法だけを実行しました。全部実行しないので、postHandle方法とafterComplection方法を実行するものは一つもありません。
3.スクリーンショットの使用
第二の状況から見て、例えば、今は異常処理を統一するロジックを書きます。このブロックをブロックチェーンの第一の位置に置いて、必ず実行します。なぜなら、実行しただけです。afterComplettetionを実行します。そして、スクリーンチェーンの第一に置くと、afterComplection方法は最後に実行されます。内部で統一異常処理を実行するロジックがあります。
また、認証ブロックに登録して、ブロックリンクの最初の位置に置く(統一異常処理があれば、統一異常処理の後に置くべき)。権限検証ブロックは、ログイン認証ブロックの後に置かれます(ログインが通過した後に権限が確認されますので)。
ここに登録検証のブロックを書いて、スプリングmvcのスクリーンセーバーの使い方を説明します。
3.1需要
まず需要を見ます。何をブロックしますか?ブロックしたら何をしますか?考えは以下の通りです
1、ユーザがurlを要求する
2、ブロックを検証する
要求されたurlが公開住所(ログインなしでアクセスできるurl)であれば、実行させる。
ユーザsessionが存在しない場合は、ログインページにジャンプします。
ユーザsessionが存在すれば、実行し、操作を継続する。
3.2登録を実現するためのコントローラの方法
締め括りをつける
以上が本文のSpring MVCの中のスクリーンセーバーの詳しい解とコードの例のすべての内容に関してで、みんなに対してある程度助けがあることを望みます。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。
Springmvcのプロセッサブロックは、プロセッサを前処理および後処理するためのServlet開発中のフィルタFilterと類似している。本文は主にスプリングmvcの中でスクリーンセーバーがどのように定義されているかをまとめ、スクリーンセーバーの実行状況と使用方法をテストします。
1.スプリングmvcスクリーンの定義と配置
1.1スプリングmvcスクリーンの定義
springmvcでは、スクリーンセーバーを定義し、Handler Interceptorインターフェースを実現し、このインターフェースで提供される3つの方法を以下のように実現する。
// 1
public class HandlerInterceptor1 implements HandlerInterceptor{
@Override
public Boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("HandlerInterceptor1....preHandle");
//false , ;true
return true;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("HandlerInterceptor1....postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("HandlerInterceptor1....afterCompletion");
}
}
この三つの方法について簡単に分析してみます。springmvcでは、スクリーンは具体的なHandlerMappingに対して配置されています。つまり、あるHandlerMappingにブロックが配置されていたら、このHandlerMappingによって成功したhandlerは最終的にこのスクリーンを使用します。例えば、私たちが構成ファイルに配置したマッパーがorg.springframe ebork.web.servlet.hander.BenName Handler Mappingであると仮定して、このようにスクリーンセーバーを配置することができます。
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="handlerInterceptor1"/>
<ref bean="handlerInterceptor2"/>
</list>
</property>
</bean>
<bean id="handlerInterceptor1" class="ssm.intercapter.HandlerInterceptor1"/>
<bean id="handlerInterceptor2" class="ssm.intercapter.HandlerInterceptor2"/>
スプリングmvcでは、グローバルに似たブロックはどう配置されていますか?以上も述べたように、springmvcのスクリーンセーバは具体的なマッパーに対して、この問題を解決するために、springmvcフレームは配置された大域的なスクリーンセーバを各HandlerMappingに注入して、これで大域的なスクリーンセーバーになります。設定は以下の通りです
<!-- -->
<mvc:interceptors>
<!-- , -->
<mvc:interceptor>
<mvc:mapping path="/**"/> <!-- url url -->
<bean class="ssm.interceptor.HandlerInterceptor1"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="ssm.interceptor.HandlerInterceptor2"/>
</mvc:interceptor>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<bean class="ssm.interceptor.HandlerInterceptor3"/>
</mvc:interceptor>
</mvc:interceptors>
私たちはこのような構成を使っています。2.スプリングmvcブロックの実行テスト
上のHandlerInterceptor 1にならってもう2つのスクリーンショットを書きます。HandlerInterceptor 2とHandler Interceptor 3は、上のように配置されています。それから、三つのブロックの実行状況をテストして、関連の総括を行います。
2.1 3つのスクリーンセーバーを全部通す
つまり、3つのブロックのpreHandle方法では、リターン値をtrueに変更して、ブロックの実行順序をテストします。テスト結果は以下の通りです。
Handler Interceptor 1….preHandle
Handler Interceptor 2…preHandle
Handler Interceptor 3….preHandle
Handler Interceptor 3…postHandle
Handler Interceptor 2…postHandle
Handler Interceptor 1…postHandle
Handler Interceptor 3…afterComplection
Handler Interceptor 2…afterComplection
Handler Interceptor 1…afterComplection
印刷の結果に基づいて総括を行います。すべてのスクリーンセーバが実行されるとき、preHandle方法は配置の順序に従って実行します。また、他の2つの方法は、構成の順序に従って逆方向に実行される。
2.2ブロックが一つあって、通らない。
第三ブロックのpreHandle方法で戻り値をfalseに変えます。前の二つかそれともtrueか、ブロックの実行順序をテストします。テスト結果は以下の通りです。
Handler Interceptor 1….preHandle
Handler Interceptor 2…preHandle
Handler Interceptor 3….preHandle
Handler Interceptor 2…afterComplection
Handler Interceptor 1…afterComplection
印刷の結果に基づいてまとめを行います。
1.スクリーンセーバ1と2がセットされているので、スクリーン3のpreHandleは実行できます。つまり前のスクリーンショットを放して、後のスクリーンショットがpreHandleを実行できます。
2.ブロッキング3は通過しないので、他の2つの方法は実行されていません。つまり、あるブロックが通らないと、他の2つの方法は実行されません。
3.ブロックが一つある限り、すべてのブロックのpostHandle方法は実行しませんが、preHandleを実行して、実行しても、afterComplection方法を実行します。
2.3の3つのブロックは全部通行できません。
このような状況は実は上の状況を参考にしてもいいです。特例です。運行結果も見てみます。
Handler Interceptor 1….preHandle
明らかに、最初のスクリーンセーバーのpreHandle方法だけを実行しました。全部実行しないので、postHandle方法とafterComplection方法を実行するものは一つもありません。
3.スクリーンショットの使用
第二の状況から見て、例えば、今は異常処理を統一するロジックを書きます。このブロックをブロックチェーンの第一の位置に置いて、必ず実行します。なぜなら、実行しただけです。afterComplettetionを実行します。そして、スクリーンチェーンの第一に置くと、afterComplection方法は最後に実行されます。内部で統一異常処理を実行するロジックがあります。
また、認証ブロックに登録して、ブロックリンクの最初の位置に置く(統一異常処理があれば、統一異常処理の後に置くべき)。権限検証ブロックは、ログイン認証ブロックの後に置かれます(ログインが通過した後に権限が確認されますので)。
ここに登録検証のブロックを書いて、スプリングmvcのスクリーンセーバーの使い方を説明します。
3.1需要
まず需要を見ます。何をブロックしますか?ブロックしたら何をしますか?考えは以下の通りです
1、ユーザがurlを要求する
2、ブロックを検証する
要求されたurlが公開住所(ログインなしでアクセスできるurl)であれば、実行させる。
ユーザsessionが存在しない場合は、ログインページにジャンプします。
ユーザsessionが存在すれば、実行し、操作を継続する。
3.2登録を実現するためのコントローラの方法
//
@RequestMapping("/login")
public String login(HttpServletRequest request, String username, String password) throws Exception {
//
//....
//
HttpSession session = request.getSession();
session.setAttribute("username", username);
return "redirect:queryItems.action";
}
//
@RequestMapping("/logout")
public String logout(HttpServletRequest request) throws Exception {
HttpSession session = request.getSession();
session.invalidate();
return "redirect:queryItems.action";
}
3.3ログイン検証ブロックの実現
// 1
public class LoginInterceptor implements HandlerInterceptor{
// Handler
// 、 。 , ,
@Override
public Boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
// url
String url = request.getRequestURI();
// url ( )
//
if(url.indexOf("login.action") > 0) {
// ,
return true;
}
// session
HttpSession session = request.getSession();
// session
String username = (String) session.getAttribute("username");
if(username != null) {
return true;
}
// ,
request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);
return false;
}
// , ,
}
次に、スクリーンショットを設定します。
<!-- -->
<mvc:interceptors>
<!-- , -->
<mvc:interceptor>
<mvc:mapping path="/**"/> <!-- url url -->
<bean class="ssm.interceptor.LoginInterceptor"/>
</mvc:interceptor>
<!-- -->
</mvc:interceptors>
このように私達が任意に一つのurlを要求すると、先ほど定義したブロックに捕獲されて、sessionにユーザ情報があるかどうかを判断します。ないとログインページにジャンプしてログインします。
<form action="${pageContext.request.contextPath }/login.action" method="post">
:<input type="text" name="username" /><br>
:<input type="password" name="password" /><br>
<input type="submit" name=" " />
</form>
スクリーンショットの使用は基本的にここまでです。締め括りをつける
以上が本文のSpring MVCの中のスクリーンセーバーの詳しい解とコードの例のすべての内容に関してで、みんなに対してある程度助けがあることを望みます。興味のある方は引き続き当駅の他のテーマを参照してください。友達のサポートに感謝します。