1. 程式人生 > 其它 >springmvc的攔截器

springmvc的攔截器

spring mvc的攔截器和servlet提供的過濾器的作用很相似,都能攔截http請求和響應結果,對http的請求和響應做一些通用的操作。

springMVC的攔截器的介面

springmvc提供了org.springframework.web.servlet.HandlerInterceptor攔截器的介面:
    preHandle方法:呼叫控制器類的請求方法之前執行的方法,返回true會繼續執行後面的操作,返回false會中斷執行流程。
    postHandle方法:呼叫控制器類的請求方法之後,把請求請求轉發給檢視元件之前。
    afterCompletion:檢視元件執行完畢,把響應結果返回給客戶端之前。
springmvc中定義的攔截器要實現HandlerInterceptor介面

在springmvc的配置檔案中配置攔截器

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <bean class="test.MyInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

springmvc攔截器的簡單實現

public class MyInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("呼叫控制器類的請求方法之前執行的方法,返回true會繼續執行後面的操作,返回false會中斷執行流程。");
        return true;
    }
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("呼叫控制器類的請求方法之後,把請求請求轉發給檢視元件之前。");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("檢視元件執行完畢,把響應結果返回給客戶端之前。");
    }
}