一、springmvc拦截器只有springmvc有,Servlet的拦截器可以适用任何web项目
二、步骤
1、编写拦截器类,实现 HandlerInterceptor 接口;配置拦截器
2、案例
public class MyInterceptor implements HandlerInterceptor {
/**
* 预处理,controller方法执行前执行preHandle
* @param request
* @param response
* @param handler
* @return true:放行,执行下一个拦截器,如果没有,执行controller方法
* @return false:不放行,不执行controller方法,直接执行页面方法afterCompletion
* @throws Exception
*/
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("MyInterceptor执行了。。。。。。。。。");
return true;
}
}
<!-- 配置拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<!-- 要拦截的具体的方法-->
<mvc:mapping path="/user/*"/>
<!-- 不要拦截的具体的方法,只配置一个就可以-->
<!-- <mvc:exclude-mapping path=""/>-->
<!-- 配置拦截器对象-->
<bean class="cn.rzpt.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
return false的情况下:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// System.out.println("MyInterceptor执行了。。。。。。。。。");
// return true;
System.out.println("MyInterceptor执行了。。。。。。。。。");
request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);
return false;
}
return true的情况下:
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// System.out.println("MyInterceptor执行了。。。。。。。。。");
// return true;
System.out.println("MyInterceptor执行了。。。。。。。。。");
request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);
return true;
}
输出结果很混乱:
拦截器也拦截,
MyInterceptor执行了。。。。。。。。。
/testInterceptor..........
success.jsp执行了。。。。。。。
但是最后跳转到错误页面
3、其它拦截器方法
/**
* 后处理方法,controller执行完后执行的方法
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle...............");
}
MyInterceptor执行了。。。。。。。。。
/testInterceptor..........
postHandle...............
success.jsp执行了。。。。。。。
/**
* success.jsp页面执行后,该方法执行
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("afterCompletion...........");
}
MyInterceptor执行了。。。。。。。。。
/testInterceptor..........
postHandle...............
success.jsp执行了。。。。。。。
afterCompletion...........
4、多个拦截器配置与执行
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)