javascript
SpringMVC中的拦截器介绍
SpringMvc中的攔截器:
SpringMvc攔截器幫我們按照一定規(guī)則攔截請(qǐng)求,后根據(jù)開(kāi)發(fā)人員自定義的攔截邏輯進(jìn)行處理;
自定義攔截器需要實(shí)現(xiàn)HandlerInterceptor接口;
自定義的攔截器實(shí)現(xiàn)類(lèi)需要在SpringMvc配置文件中配置;
可以配置多個(gè)攔截器,配置的順序會(huì)影響到攔截器的執(zhí)行順序,配置在前的先執(zhí)行;
HandlerInterceptor有3個(gè)方法:
preHandle 預(yù)處理:在攔截方法前執(zhí)行;
postHandle 后處理:在攔截方法后執(zhí)行;
afterCompletion 渲染后處理:在頁(yè)面渲染后執(zhí)行;
攔截器也體現(xiàn)了AOP思想;
攔截器的應(yīng)用:權(quán)限檢查,日志記錄,性能檢測(cè)等;
攔截器的執(zhí)行流程圖:
?
總結(jié)的幾條攔截器規(guī)則:
1.preHandle 預(yù)處理:根據(jù)攔截器定義的順序,正向執(zhí)行
2.postHandle 后處理:根據(jù)攔截器定義的順序,逆向執(zhí)行。需要所有的preHandle都返回true時(shí)才會(huì)調(diào)用
3.afterCompletion 渲染后處理:根據(jù)攔截器定義的順序,逆向執(zhí)行。preHandle返回true就會(huì)調(diào)用
MyInterceptor1.java:
public class MyInterceptor1 implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {System.out.println("1 PreHandle預(yù)處理");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {System.out.println("1 postHandle后處理");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {System.out.println("1 afterCompletion頁(yè)面渲染后處理");}}MyInterceptor2.java:
public class MyInterceptor2 implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {System.out.println("2 PreHandle預(yù)處理");return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {System.out.println("2 postHandle后處理");}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)throws Exception {System.out.println("2 afterCompletion頁(yè)面渲染后處理");}}applicationContext.xml:
<mvc:interceptors> <!-- 攔截器1 --><mvc:interceptor><mvc:mapping path="/**"/><bean class="com.sikiedu.interceptor.MyInterceptor1"></bean></mvc:interceptor><!-- 攔截器2 --><mvc:interceptor><mvc:mapping path="/**"/><bean class="com.sikiedu.interceptor.MyInterceptor2"></bean></mvc:interceptor></mvc:interceptors>- preHandle1返回true,preHandle2返回true:運(yùn)行結(jié)果如下:
- preHandle1返回true,preHandle2返回false:運(yùn)行結(jié)果如下:
- preHandle1返回false,preHandle2返回true:運(yùn)行結(jié)果如下:
總結(jié)
以上是生活随笔為你收集整理的SpringMVC中的拦截器介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 语音识别(ASR)论文优选:性能测试Wa
- 下一篇: arcgis api for JavaS