新建一个类,实现
HandlerInterceptor 接口
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyInterceptor implements HandlerInterceptor {
/*preHandler方法会[早于]控制器中的方法先执行
如果该方法返回false,则不执行控制器的方法(相当于之前没有执行放行代码)
返回true,则继续执行控制器的方法
* */
@Override
public boolean preHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object o) throws Exception {
System.out.println("MyInterceptor的preHandler方法被执行了");
return true;
}
/*
* postHandle方法[晚于]控制器方法执行-1
* 控制器方法执行完,在准备跳转页面之前,先执行该方法,此时ModelAndView中存储着控制器要跳转的页面路径和
* 存储作用域数据*/
@Override
public void postHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object o, ModelAndView modelAndView) throws Exception {
System.out.println("MyInterceptor的postHandle方法被执行了");
}
/*afterCompletion
* 方法[晚于]控制器方法执行-2
* 等页面跳转渲染了才会执行*/
@Override
public void afterCompletion(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse,
Object o, Exception e) throws Exception {
System.out.println("MyInterceptor的afterCompletion方法执行了");
}
}
在mvc.xml配置控制器
<!--拦截器相关配置-->
<mvc:interceptors>
<mvc:interceptor>
<!--指定要拦截器的请求路径
/* 只能拦截器http://ip地址:8081/项目名/test3.do请求
/** 拦截所有请求
-->
<mvc:mapping path="/**"/>
<!--exclude(排除)排除一些不拦截的请求路径
<mvc:mapping path=""/>
-->
<!--拦截器的全类名-->
<bean class="com.test.MyInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>