javascript
java spring 拦截器_Spring MVC拦截器(Interceptor)的配置及使用
在開發一個網站時可能有這樣的需求:某些頁面只希望幾個特定的用戶瀏覽。對于這樣的訪問權限控制,應該如何實現呢?攔截器就可以實現上述需求。在 Struts 2 框架中,攔截器是其重要的組成部分,Spring MVC 框架也提供了攔截器功能。
Spring MVC 的攔截器(Interceptor)與 Java Servlet 的過濾器(Filter)類似,它主要用于攔截用戶的請求并做相應的處理,通常應用在權限驗證、記錄請求信息的日志、判斷用戶是否登錄等功能上。
攔截器的定義
在 Spring MVC 框架中定義一個攔截器需要對攔截器進行定義和配置,定義一個攔截器可以通過兩種方式:一種是通過實現 HandlerInterceptor 接口或繼承 HandlerInterceptor 接口的實現類來定義;另一種是通過實現 WebRequestInterceptor 接口或繼承 WebRequestInterceptor 接口的實現類來定義。
本節以實現 HandlerInterceptor 接口的定義方式為例講解自定義攔截器的使用方法。示例代碼如下:
package interceptor;
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 {
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("afterCompletion方法在控制器的處理請求方法執行完成后執行,即視圖渲染結束之后執行");
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("postHandle方法在控制器的處理請求方法調用之后,解析視圖之前執行");
}
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("preHandle方法在控制器的處理請求方法調用之后,解析視圖之前執行");
return false;
}
}
在上述攔截器的定義中實現了 HandlerInterceptor 接口,并實現了接口中的 3 個方法。有關這 3 個方法的描述如下。
preHandle 方法:該方法在控制器的處理請求方法前執行,其返回值表示是否中斷后續操作,返回 true 表示繼續向下執行,返回 false 表示中斷后續操作。
postHandle 方法:該方法在控制器的處理請求方法調用之后、解析視圖之前執行,可以通過此方法對請求域中的模型和視圖做進一步的修改。
afterCompletion 方法:該方法在控制器的處理請求方法執行完成后執行,即視圖渲染結束后執行,可以通過此方法實現一些資源清理、記錄日志信息等工作。
攔截器的配置
讓自定義的攔截器生效需要在 Spring MVC 的配置文件中進行配置,配置示例代碼如下:
在上述示例代碼中, 元素用于配置一組攔截器,其子元素 定義的是全局攔截器,即攔截所有的請求。
元素中定義的是指定路徑的攔截器,其子元素 用于配置攔截器作用的路徑,該路徑在其屬性 path 中定義。
如上述示例代碼中,path 的屬性值“/**”表示攔截所有路徑,“/gotoTest”表示攔截所有以“/gotoTest”結尾的路徑。如果在請求路徑中包含不需要攔截的內容,可以通過 子元素進行配置。
需要注意的是, 元素的子元素必須按照 、、 的順序配置。
總結
以上是生活随笔為你收集整理的java spring 拦截器_Spring MVC拦截器(Interceptor)的配置及使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QPS
- 下一篇: 荣耀亲选推出 ongo 智能摄像头京东小