SpringMVC攔截器須要實現接口HandlerInterceptorjava
有3個方法,分別在請求處理前、請求處理後和在DispatcherServlet處理後執行web
實現代碼:spring
package interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; public class MyInterceptor implements HandlerInterceptor { //在DispatcherServlet處理後執行,清理工做 @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { } //在請求處理方法後執行 @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { System.out.println("-----處理後-----"); } //在請求處理方法前執行 //返回true執行下一個攔截器,返回false不執行 @Override public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { System.out.println("-----處理前-----"); return true; } }
如何將攔截器配置到對應請求上spring-mvc
首先引入SpringMVC命名空間mvc
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd"
配置攔截器app
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="interceptor.MyInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
interceptors表示多個攔截器ide
interceptor表示單個攔截器post
/**表示根路徑及根路徑下全部子路徑spa
/test/*表示test的一級子路徑好比/test/testcode
/test/**表示test的一級子路徑及一級子路徑下的全部子路徑
bean指向的是配置的攔截器
bean直接寫在interceptors裏表示通用攔截器