springMVC攔截器使用
阿新 • • 發佈:2020-09-07
新建一個類,實現
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>