springmvc之interceptor(拦截器)
1.自定义MyInterceptor impletments HandlerInterceptor
public class MyInterceptor implements HandlerInterceptor { private int num; public int getNum() { return num; } public void setNum(int num) { this.num = num; } /** * 预处理(调用Controller之前执行),进行参数检查,登录认证,编码等操作 * 在业务处理器处理请求之前对该请求进行拦截处理 * 每个Interceptor的preHandle调用会依据它的声明顺序依次执行 * * @param httpServletRequest * @param httpServletResponse * @param o * @return true(继续调用下一个Interceptor 的preHandle)、false(请求结束) * @throws Exception */ public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception { String id = httpServletRequest.getParameter("id"); if (num > Integer.parseInt(id)) { System.out.println("-------dada-------"); } return false; } /** * 后处理(调用Controller之后,返回结果或者展示模型之前),可以对返回结果(ModelAndView对象)进行修改 * 每个Interceptor的preHandle调用会依据它的声明顺序反向执行(与preHandle相反) * * @param httpServletRequest * @param httpServletResponse * @param o * @param modelAndView * @throws Exception */ public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception { } /** * 整个请求完毕的回调,即在视图渲染完毕时回调 * 性能监控中我们可以在此记录结束时间并输出消耗时间,还可以进行一些资源清理,类似于try-catch-finally中的finally * * @param httpServletRequest * @param httpServletResponse * @param o * @param e * @throws Exception */ public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception { } }
2.mvc-servlet.xml配置
<beans xmlns="xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!-- 拦截器 --> <mvc:interceptors> <mvc:interceptor> <!-- 定义在mvc:interceptor下面的表示是对特定的请求才进行拦截的 --> <mvc:mapping path="/user/*"/> <bean class="com.ytud.web.interceptor.OutTimeInterceptor"> <!-- get/set必不可少 --> <property name="num"> <value>100</value> </property> </bean> </mvc:interceptor> </mvc:interceptors>