在springMVC自定义拦截器
具体方法及标签
<!-- 自定义拦截器 -->
<!-- 当设置多个拦截器时,先按顺序调用preHandle方法,然后逆序调用每个拦截器的postHandle和afterCompletion方法 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截路径 -->
<mvc:mapping path="/my/**" />
<!-- 不拦截路径 -->
<mvc:exclude-mapping path="/static/**" />
<!-- 拦截类 -->
<bean class="com.jy.service.springMvcHandlerInterceptorAdapter" />
</mvc:interceptor>
</mvc:interceptors>
springMvcHandlerInterceptorAdapter代码如下
public class springMvcHandlerInterceptorAdapter extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
System.out.println("--------------------preHandle---------------------");
String host = request.getRemoteHost();
System.out.println("host:"+host);
String url = request.getRequestURI();
System.out.println("url:"+url);
return true;
}
@Override
public void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws Exception {
System.out.println("--------------------postHandle---------------------");
}
@Override
public void afterCompletion(
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("--------------------afterCompletion---------------------");
}
}
调用方法
@Controller
@RequestMapping(value="/my")
public class indexController {
@RequestMapping(value="/index")
public String index() {
System.out.println("----------indexController-------------");
return "index";
}
}
浏览器127.0.0.1/sonweb001/my/index查看调用顺序
可以看到调用顺序为preHandle》Controller》postHandle》afterCompletion