javascript
Springmvc中的拦截器interceptor及与过滤器filter的区别
一.Springmvc中的攔截器概述及與過濾器filter的區(qū)別
?? 1).Springmvc中的攔截器interceptor用于對控制器controller進(jìn)行預(yù)處理和后處理的技術(shù);
?? 2).可以定義攔截器鏈,攔截器鏈就是將攔截器按著一定的順序結(jié)成一條鏈,在訪問被攔截的方法時,攔截器鏈中的攔截器會按著定義的順序執(zhí)行。
?? 3).攔截器interceptor與過濾器filter的區(qū)別
???????? 1.過濾器是servlet中的,任何框架都可以使用過濾器技術(shù);
?????????? 2.攔截器是Springmvc所獨(dú)有的
?????????? 3.過濾器設(shè)置/*可以攔截任何資源
?????????? 4.攔截器只對控制器controller中的方法進(jìn)行攔截
???? 4).攔截器利用的是AOP思想;
???? 5).自定義攔截器,需要實現(xiàn)HandlerInterceptor接口
二.攔截器的使用:自定義攔截器類實現(xiàn)HandlerInterceptor接口,重寫其中三個方法之一的preHandle()方法
1 public class MyInterceptor implements HandlerInterceptor { 2 @Override 3 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) { 4 System.out.println("攔截器執(zhí)行了"); 5 return true;//返回true代表放行,返回false代表不放行程序到此就不會向下走了 6 } 7 }? 在springmvc.xml中配置攔截器
<!--配置攔截器interceptor--><mvc:interceptors><mvc:interceptor><mvc:mapping path="/account/*"/> <!--攔截的路徑,路徑都是controller中的方法路徑--><mvc:exclude-mapping path="/account/testSpringmvc"/> <!--不攔截的路徑--><bean class="cn.itcast.interceptor.MyInterceptor"/></mvc:interceptor></mvc:interceptors>三.HandlerInterceptor接口中的三個方法分析
??? 1.preHandler()? 攔截在controller中方法執(zhí)行之前,執(zhí)行,這是攔截器主要用到的方法
???? ?? 可以使用request或者response跳轉(zhuǎn)到指定的頁面
?????? return true 代表放行?? return false 代表不放行
??? 2.postHandler()? 在controller中方法執(zhí)行后,返回jsp視圖執(zhí)行之前執(zhí)行此方法
??????? 1). 可以使用request或者response跳轉(zhuǎn)到指定的頁面
??????? 2). 如果指定了跳轉(zhuǎn)的頁面,那么controller方法跳轉(zhuǎn)的頁面將不會顯示。
? ? 3.afterCompletion() 在跳轉(zhuǎn)頁面后執(zhí)行此方法
??????? 無法通過request或response跳轉(zhuǎn)頁面了
四.可以編寫配置多個攔截器,攔截順序按照在springmvc.xml中配置順序
? ?? 攔截器執(zhí)行順序:
???
轉(zhuǎn)載于:https://www.cnblogs.com/georgeJavaEE/p/9796665.html
總結(jié)
以上是生活随笔為你收集整理的Springmvc中的拦截器interceptor及与过滤器filter的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios uilabel 根据文字 计算
- 下一篇: 题解 UVA10328 【Coin To