淺析java中 Spring MVC 攔截器作用及其實現。本站提示廣大學習愛好者:(淺析java中 Spring MVC 攔截器作用及其實現)文章只能為提供參考,不一定能成為您想要的結果。以下是淺析java中 Spring MVC 攔截器作用及其實現正文
攔截器的實現
1、編寫攔截器類實現HandlerInterceptor接口;
2、將攔截器注冊進springmvc框架中;
3、配置攔截器的攔截規則;
其他實現方法
WebRequestInterceptor接口:
與上一個的區別是參數區別和prehandle的方法沒有返回值。沒有上一個功能全,因此常用第一個。
攔截器的使用場景
處理所有請求共性問題:
1、亂碼問題:用request,response參數去設置編碼;
2、解決權限驗證問題(是否登陸,取session對象查看);
攔截器與過濾器的區別
1、攔截器Interceptor依賴於框架容器,基於反射機制,只過濾請求;
2、過濾器Filter依賴於Servlet容器,基於回調函數,過濾范圍大;
例子
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class TestInterceptor implements HandlerInterceptor {
/**
* 返回值說明是否需要將當前的請求攔截下來
* false:請求將被終止
* true:請求會被繼續運行
* Object handler 表示的是被攔截的請求的目標對象
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("TestInterceptor.preHandle()");
return true;
}
/**
* modelAndView:
* 可以通過modelAndView參數改變顯示的視圖,或者修改發往視圖的方法
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("TestInterceptor.postHandle()");
}
/**
* 在視圖加載完畢之後調用
* 常用於作於資源的銷毀,流等
* 類似於析構函數
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("TestInterceptor.afterCompletion()");
}
}
注冊方式:
在springmvc的Dispatcherservlet配置文件中加入攔截器代碼;
<!-- 注冊攔截器 --> <mvc:interceptors> <!-- 單個攔截器:設置具體的攔截路徑 --> <mvc:interceptor> <mvc:mapping path="/courses/view2/*"> <bean class="com.cc.mvcdemo.interceptor.TestInterceptor"></bean> </mvc:mapping></mvc:interceptor> <!-- 第二種方式:攔截經過當前Dispatcherservlet的所有請求 --> <bean class="com.cc.mvcdemo.interceptor.TestInterceptorTwo"></bean> </mvc:interceptors>
希望本篇文章內容對各位朋友有所幫助