Spring拦截器

# 作用

  HandlerInterceptor是springmvc提供的web请求前后的切入点,spring容器将会管理实现HandlerInterceptor接口实例,从而在请求到达接口前 或者返回客户端前做一些逻辑处理。

# 使用


  实现HandlerInterceptor接口,其中只有当preHandle返回true时,请求才会到达接口,如果请求是接口时,preHandle方法中的handler参数InstanceOf org.springframework.web.method.HandlerMethod,HandlerMethod包含所请求接口的bean和方法以及参数信息。postHandle方法在接口返回后,其中modelAndView参数表名可以 在返回客户端前处理视图,如果接口抛出异常并且没有捕获处理,那么会直接到afterCompletion方法;afterCompletion在返回客户端前执行,异常发生时,入参ex会包含异常信息。

public class AbstractUserInterceptor implements HandlerInterceptor{
    default boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
			throws Exception {
		return true;
	}

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        UnifiedUserInfoUtil.remove();
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
     
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21