1. 程式人生 > 實用技巧 >定時器-setInterval

定時器-setInterval

技術標籤:SpringMVCjavaspringmvc

攔截器概述

  1. SpringMVC框架中的攔截器用於對處理器進行預處理和後處理的技術。
  2. 可以定義攔截器鏈,聯結器鏈就是將攔截器按著一定的順序結成一條鏈,在訪問被攔截的方法時,攔截器鏈
    中的攔截器會按著定義的順序執行。
  3. 攔截器和過濾器的功能比較類似,有區別
    1. 過濾器是Servlet規範的一部分,任何框架都可以使用過濾器技術。
    2. 攔截器是SpringMVC框架獨有的。
    3. 過濾器配置了/*,可以攔截任何資源。
    4. 攔截器只會對控制器中的方法進行攔截。
  4. 攔截器也是AOP思想的一種實現方式
  5. 想要自定義攔截器,需要實現HandlerInterceptor介面。

自定義攔截器

HandlerInterceptor介面中的方法

  1. preHandle方法是controller方法執行前攔截的方法
    1. 可以使用request或者response跳轉到指定的頁面
    2. return true放行,執行下一個攔截器,如果沒有攔截器,執行controller中的方法。
    3. return false不放行,不會執行controller中的方法。
  2. postHandle是controller方法執行後執行的方法,在JSP檢視執行前。
    1. 可以使用request或者response跳轉到指定的頁面
    2. 如果指定了跳轉的頁面,那麼controller方法跳轉的頁面將不會顯示。
  3. afterHandle方法是在JSP執行後執行
    1. request或者response不能再跳轉頁面了

程式碼實現

  1. 編寫index.jsp
<a href="user/testInterceptor">攔截器</a>
  1. 控制器
@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/testInterceptor")
    public String testInterceptor() throws Exception {
        System.out.println("testInterceptor執行了。。。"
); return "success"; } }
  1. 攔截器
public class MyInterceptor implements HandlerInterceptor {
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("Interceptor執行了。。。前");
//        request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request, response);
        return true;
    }
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                            @Nullable ModelAndView modelAndView) throws Exception {
        System.out.println("Interceptor執行了。。。後");
//        request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request, response);
    }
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
                                 @Nullable Exception ex) throws Exception {
        System.out.println("Interceptor執行了。。。最後");
    }
}
4. 在springmvc.xml 中配置攔截器
```java
<!--配置攔截器-->
<mvc:interceptors>
    <!--配置攔截器-->
    <mvc:interceptor>
        <!--要攔截的具體方法-->
        <mvc:mapping path="/user/*"/>
        <!--不要攔截的具體方法
        <mvc:exclude-mapping path=""/>
        -->
        <!--配置攔截器物件-->
        <bean class="com.whut.controller.interceptor.MyInterceptor"/>
    </mvc:interceptor>
</mvc:interceptors>
  1. 輸出
    控制檯輸出
    在這裡插入圖片描述

瀏覽器頁面
在這裡插入圖片描述

  1. 配置兩個攔截器
    執行順序
    在這裡插入圖片描述