「Spring MVC」インターセプ(Interceptor)タクラスの作成サンプル

書式
1.preHandleメソッド
コントローラメソッドの実行前タイミングで実行されます。
2.postHandleメソッド
コントローラメソッドの実行後タイミングで実行されます。
3.afterCompletionメソッド
リクエスト処理が完了した後タイミングで実行されます。

使用例
1.インターセプタクラスを作成します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
package com.arkgame.interceptor
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
// HandlerInterceptorAdapterを継承
public class CommonInterceptor extends HandlerInterceptorAdapter {
// コントローラメソッドの実行前に呼ばれる(preHandleメソッド)
@Override
public boolean preHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler) throws Exception {
System.out.println("preHandle method is called");
//処理コード
return true;
}
// コントローラメソッドの実行後に呼ばれる(postHandleメソッド)
@Override
public void postHandle(
HttpServletRequest request,
HttpServletResponse response,
Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle method is called");
//処理コード
}
// リクエスト処理の完了後に呼ばれる(afterCompletionメソッド)
@Override
public void afterCompletion(
HttpServletRequest request,
HttpServletResponse response,
Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion method is called");
//処理コード
}
}
package com.arkgame.interceptor import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; // HandlerInterceptorAdapterを継承 public class CommonInterceptor extends HandlerInterceptorAdapter { // コントローラメソッドの実行前に呼ばれる(preHandleメソッド) @Override public boolean preHandle( HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { System.out.println("preHandle method is called"); //処理コード return true; } // コントローラメソッドの実行後に呼ばれる(postHandleメソッド) @Override public void postHandle( HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { System.out.println("postHandle method is called"); //処理コード } // リクエスト処理の完了後に呼ばれる(afterCompletionメソッド) @Override public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { System.out.println("afterCompletion method is called"); //処理コード } }
package com.arkgame.interceptor

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

// HandlerInterceptorAdapterを継承
public class CommonInterceptor extends HandlerInterceptorAdapter {

    // コントローラメソッドの実行前に呼ばれる(preHandleメソッド)
    @Override
    public boolean preHandle(
                    HttpServletRequest request,
                    HttpServletResponse response,
                    Object handler) throws Exception {
        System.out.println("preHandle method is called");
            //処理コード
        return true;
    }

    // コントローラメソッドの実行後に呼ばれる(postHandleメソッド)
    @Override
    public void postHandle(
                        HttpServletRequest request,
                        HttpServletResponse response,
                        Object handler,
                        ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle method is called");
            //処理コード
    }

    // リクエスト処理の完了後に呼ばれる(afterCompletionメソッド)
    @Override
    public void afterCompletion(
                        HttpServletRequest request,
                        HttpServletResponse response,
                        Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion method is called");
            //処理コード
    }
}

説明
postHandleの引数ModelAndViewはビューや画面情報をまとめて保持します。
afterCompletionの引数Exceptionは、例外が処理されなかった場合に、その例外クラスが引き渡されます。

2.applicationContext.xmlにインターセプタを登録します

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<!-- インターセプタの定義 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="com.arkgame.interceptor.CommonInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
<!-- インターセプタの定義 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**" /> <bean class="com.arkgame.interceptor.CommonInterceptor" /> </mvc:interceptor> </mvc:interceptors>
<!-- インターセプタの定義 -->
 <mvc:interceptors>
     <mvc:interceptor>
         <mvc:mapping path="/**" />
         <bean class="com.arkgame.interceptor.CommonInterceptor" />
     </mvc:interceptor>
 </mvc:interceptors>

 

SpringMVC

Posted by arkgame