springmvc之interceptor(拦截器)

时间:2022-05-07 09:01:26

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>