拦截器拦截contronller类
有预处理后处理
先执行拦截器在执行contronller类
执行完contronller类在执行拦截器
1.controller
@Controller
@RequestMapping("/user")
public class UserConteoller {
@RequestMapping("/testInterceptor")
public String testInterceptor(){
return "success";
}
}
2.自定义拦截器
/**
* 自定义拦截器
*/
public class MyInterceptor1 implements HandlerInterceptor {
/**
* 预处理,controller方法执行之前
* return true 放行,执行下一个拦截器,如果没有,执行controller中的方法
* return flase 不放行,
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
/*可以做登录验证,登录了跳首页没登录跳登录页面*/
System.out.println("拦截器执行了");
/*request.getRequestDispatcher("WEB-INF/pages/errorjsp").forward(request,response);*/
return true;
}
/**
* 后处理的方法,controller方法执行之后,success.jsp执行之前
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("拦截器执行了,后");
//会跳转到此页面,不会跳转到success
/* request.getRequestDispatcher("WEB-INF/pages/errorjsp").forward(request,response);*/
}
/**
* success.jsp页面执行后,该方法会执行
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("拦截器执行了,最后");
}
}
3.配置拦截器
<!--配置拦截器-->
<mvc:interceptors>
<!--配置拦截器-->
<mvc:interceptor>
<!--要拦截的具体的方法-->
<mvc:mapping path="/user/*"/>
<!--不要拦截的方法-->
<!-- <mvc:exclude-mapping path=""/>-->
<!--配置拦截器对象-->
<bean class="sise.cn.interceptor.MyInterceptor1"></bean>
</mvc:interceptor>
</mvc:interceptors>
4.index.xnl
<h3>拦截器</h3>
<a href="user/testInterceptor">拦截</a>
配置第二个拦截器配置方法
.配置拦截器
<!--配置拦截器-->
<mvc:interceptors>
<!--配置拦截器-->
<mvc:interceptor>
<!--要拦截的具体的方法-->
<mvc:mapping path="/user/*"/>
<!--不要拦截的方法-->
<!-- <mvc:exclude-mapping path=""/>-->
<!--配置拦截器对象-->
<bean class="sise.cn.interceptor.MyInterceptor1"></bean>
</mvc:interceptor>
<!--配置拦截器-->
<mvc:interceptor>
<!--要拦截的具体的方法-->
<mvc:mapping path="/user/*"/>
<!--不要拦截的方法-->
<!-- <mvc:exclude-mapping path=""/>-->
<!--配置拦截器对象-->
<bean class="sise.cn.interceptor.MyInterceptor2"></bean>
</mvc:interceptor>
</mvc:interceptors>