SpringMVC的拦截器主要是用于拦截控制器方法的执行;
概念:是一种动态拦截方法调用的机制,类似于过滤器。在Spring中动态拦截控制器中方法的执行。
作用:在指定的控制器中调用前后执行预先设定的代码,完成功能增强。
应用场合:AOP,日志,事务,权限管理
1.拦截器的基本使用
SpringMVC实现拦截器主要使用HanderInterceptor接口,拦截器需要注册到容器中
-
定义拦截器,定义注解Component,实现HandlerInterceptor接口,并且重写所有方法。注意两种拦截方式二选一!!!(Interceptor和Filter)
-
注册拦截器,其中/**为拦截所有
2、会话技术
会话:用户打开浏览器,访问web服务器的资源,会话开始建立,直到有一方断开连接,会话结束。再一次会话中可以包含多次请求和响应。
会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器,一边在统一会话的多次请求之间共享数据。
实现方式:
- 客户端会话技术:Cookie
- 服务端绘画技术:Session
代码实现
缺点
服务器集群环境下Session不能共享;
移动APP无法使用cookie;
3、过滤器
过滤器: Filter过滤器是javaWeb三大组件(Servlet、Filter、Listener)之一。
过滤器可以把对资源的请求拦截下来,从而实现一些特殊的处理。
过滤器一般完成一些通用操作,比如:登录鉴权、统一编码处理、敏感字符处理
- 定义类,实现Filter接口,并重写其所有的方法。
- 在类上定义@WebFilter注解,配置Filter拦截资源的路径
- 在doFilter方法中输出一句话,并放行
- 在引导类上只用@ServletComponentScan开启Serclet组件支持,其实就是让WebFilter生效