新建一個類,實現
HandlerInterceptor 接口
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class MyInterceptor implements HandlerInterceptor { /*preHandler方法會[早於]控制器中的方法先執行 如果該方法返回false,則不執行控制器的方法(相當於之前沒有執行放行代碼) 返回true,則繼續執行控制器的方法 * */ @Override public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { System.out.println("MyInterceptor的preHandler方法被執行了"); return true; } /* * postHandle方法[晚於]控制器方法執行-1 * 控制器方法執行完,在准備跳轉頁面之前,先執行該方法,此時ModelAndView中存儲着控制器要跳轉的頁面路徑和 * 存儲作用域數據*/ @Override public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { System.out.println("MyInterceptor的postHandle方法被執行了"); } /*afterCompletion * 方法[晚於]控制器方法執行-2 * 等頁面跳轉渲染了才會執行*/ @Override public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { System.out.println("MyInterceptor的afterCompletion方法執行了"); } }
在mvc.xml配置控制器
<!--攔截器相關配置-->
<mvc:interceptors>
<mvc:interceptor>
<!--指定要攔截器的請求路徑 /* 只能攔截器http://ip地址:8081/項目名/test3.do請求 /** 攔截所有請求 -->
<mvc:mapping path="/**"/>
<!--exclude(排除)排除一些不攔截的請求路徑 <mvc:mapping path=""/> -->
<!--攔截器的全類名-->
<bean class="com.test.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>