您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java的SpringMVC攔截器怎么用的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Spring MVC 的 攔截器 類似于 Servlet 開發中的過濾器 Filter,用于對處理器進行 預處理 和 后處理 。 將攔截器按一定的順序聯結成一條鏈,這條鏈稱為 攔截器鏈(Interceptor Chain) 。在訪問被攔截的方 法或字段時,攔截器鏈中的攔截器就會按其之前定義的順序被調用。攔截器也是AOP思想的具體實現。
區別 | 過濾器(Filter) | 攔截器(Intercepter) |
使用范圍 | 是 servlet 規范中的一部分,任何 Java Web 工程都可以使用 | 是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用 |
攔截范圍 | 在 url-pattern 中配置了/*之后, 可以對所有要訪問的資源攔截 | 在<mvc:mapping path=“”/>中配置了/**之 后,也可以多所有資源進行攔截,但是可以通 過<mvc:exclude-mapping path=“”/>標簽 排除不需要攔截的資源 |
自定義攔截步驟:
① 創建攔截器類實現HandlerInterceptor接口
public class MyHandlerInterceptor1 implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { System.out.println("preHandle running..."); return true; } public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { System.out.println("postHandle running..."); } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) { System.out.println("afterCompletion running..."); } }
② 配置攔截器
<!--配置攔截器--> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean /> </mvc:interceptor> </mvc:interceptors>
③ 測試攔截器的攔截效果(編寫目標方法)
@RequestMapping("/quick23") @ResponseBody public ModelAndView quickMethod23() throws IOException, ParseException { System.out.println("目標方法執行...."); ModelAndView modelAndView = new ModelAndView(); modelAndView.addObject("name","modelname"); modelAndView.setViewName("index"); return modelAndView; }
(訪問網址)
http://localhost:8080/project/quick23
控制臺打印結果
步驟同上,在編寫一個MyHandlerInterceptor2操作,測試執行順序即可。
方法名 | 說明 |
preHandle() | 方法將在請求處理之前進行調用,該方法的返回值是布爾值Boolean類型的, 當它返回為false 時,表示請求結束,后續的Interceptor 和Controller 都不會 再執行;當返回值為true 時就會繼續調用下一個Interceptor 的preHandle 方 法 |
postHandle() | 該方法是在當前請求進行處理之后被調用,前提是preHandle 方法的返回值為 true 時才能被調用,且它會在DispatcherServlet 進行視圖返回渲染之前被調 用,所以我們可以在這個方法中對Controller 處理之后的ModelAndView 對象 進行操作 |
afterCompletion() | 該方法將在整個請求結束之后,也就是在DispatcherServlet 渲染了對應的視圖 之后執行,前提是preHandle 方法的返回值為true 時才能被調用 |
以上就是“Java的SpringMVC攔截器怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。