Java-springMVC拦截器

1.定义

定义拦截器,实现HandlerInterceptor接口,接口中实现三个方法.

2.拦截器配置

  • 针对HandlerMapping进行的拦截器设置:

springmvc的拦截器是针对HandlerMapping进行拦截设置.如果在某个HandlerMapping中配置拦截器,经过该HandlerMapping映射成功的handler最终才使用该拦截器.
麻烦,不推荐使用.

  • 针对全局的拦截器:

springmvc配置类似全局的拦截器,springmvc的框架会将配置的类似全局的拦截器注入到每个HandlerMapping中,


    
        
        
            
            
            
        
    

3.测试总结,(假定有两个拦截器,且A在B前面)

* 两个拦截器都放行:

preHandle方法按顺序执行.
postHandle和afterCompletion逆向执行.

* 拦截器A放行,B不放行:

拦截器A放行,拦截器B的preHandle才会执行.
拦截器B的preHandle不放行,拦截器B的postHandle和afterCompletion不会执行.
只要有一个拦截器拦截不放行,postHandler不会执行.

*两个拦截器都不放行

只有A的preHandle方法执行,其他都不执行.

总结:

比如写一个日志的处理拦截器,需要该拦截器preHandle一定要放行,且将它放在拦截器链中第一个位置.
登录认证拦截器,放在拦截器链接中的第一位置,仅次于日志.
权限校验,放在登录认证之后.

4.三个拦截器方法的总结:

* preHandel

进入Handler方法之前执行.
用于身份认证,身份授权等...

* postHandle

进入Handler方法之后,返回modelAndView之前执行
应用场景从modelAndView出发,放一些通用的各种模型和数据和视图啥的.

* afterHandle

执行Handler完成执行此方法
统一的异常处理,统一的日志处理,

你可能感兴趣的:(Java-springMVC拦截器)