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