拦截器的使用
@Component
public class MyInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
HttpSession session = request.getSession();
Object user = session.getAttribute("user");
System.out.println("==========前置===========");
return true;
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
System.out.println("==========后置===========");
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
System.out.println("==========清理===========");
}
}
创建一个类实现HandlerInterceptor接口,重写三个方法,相当于AOP切到方法中,三个方法分别对应前置,后置以及清理,清理视图渲染后的。
配置拦截器:
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<ref bean="myInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
/**代表目录下的文件以及所有的子文件,
/*代表当前目录下的文件
只包含请求路径,不包含jsp!
Controller:
RestController
@RequestMapping("/ c1")
public class TestController {
@RequestMapping("/t1")
public String test(){
System.out.println("TestController的test()执行了!");
return "Ok";
}
}
配置Tomcat运行: