SpringMVC拦截器(四)
拦截器,本质类似于AOP,主要的应用场景:
- 日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV等。
- 权限检查:如登录检测,进入处理器检测是否登录,没有登录返回登录页面。
- 性能监控:记录拦截器进入处理器和离开处理器的时间。
- 通用行为:读取cookie中的用户信息放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器的需要都可以使用拦截器实现。
- OpenSessionView:如Hibernate,在进入处理器打开Session,在完成后关闭Session。
拦截器有两种实现方式:
1. 实现拦截器处理器接口:org.springframework.web.servlet.HandlerInterceptor
- preHandle(HttpServletRequest request,HttpServletResponse response, Object handler):预处理回调方法,在Controller前执行,返回true继续执行下一个流程(interceptor或handler)。返回false中断执行,不会再调用拦截器或处理器,可以操作reponse来产生响应。
- postHandle(HttpServletRequest request,HttpServletResponse response, Object handler,ModelAndView modelAndView):后处理回调方法,在Controller后(渲染视图前)执行,可以通过对ModeAndView进行处理或对视图进行处理,ModeAndView可能为null
- afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex):整个请求完毕的回调方法,在视图渲染完毕时回调。
2. 继承拦截器适配器类:org.springframework.web.servlet.handler.HandlerInterceptorAdapter
实现拦截器需要重写三个接口,拦截器适配器为这三个方法做了空实现,可以继承这个类,根据需要重写拦截器的1~3个方法。
区别:
拦截器适配器为拦截器接口的三个方法做了空实现,可以根据需要复写这1~3个方法。
拦截器适配器实现了AsyncHandlerInterceptor接口,提供afterConcurrentHandlingStarted()函数,用于处理Controller的异步请求
项目配置:
<!-- 拦截器定义 -->
<bean id="logInterceptor" class="com.wang.interceptor.LogInterceptor"/>
<bean id="performanceInterceptor" class="com.wang.interceptor.PerformanceInterceptor"/>
<bean id="testInterceptorAdapter" class="com.wang.interceptor.TestInterceptorAdapter"/> <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
<!-- 拦截器配置,顺序执行 -->
<property name="interceptors">
<list>
<ref bean="logInterceptor"/>
<ref bean="performanceInterceptor"/>
<ref bean="testInterceptorAdapter"/>
</list>
</property>
</bean>
SpringMVC拦截器(四)的更多相关文章
- Java Servlet 过滤器与 springmvc 拦截器的区别?
前言:在工作中,遇到需要记录日志的情况,不知道该选择过滤器还是拦截器,故总结了一下. servlet 过滤器 定义 java过滤器能够对目标资源的请求和响应进行截取.过滤器的工作方式分为四种 应用场景 ...
- SpringMVC之八:基于SpringMVC拦截器和注解实现controller中访问权限控制
SpringMVC的拦截器HandlerInterceptorAdapter对应提供了三个preHandle,postHandle,afterCompletion方法. preHandle在业务处理器 ...
- Springboot中SpringMvc拦截器配置与应用(实战)
一.什么是拦截器,及其作用 拦截器(Interceptor): 用于在某个方法被访问之前进行拦截,然后在方法执行之前或之后加入某些操作,其实就是AOP的一种实现策略.它通过动态拦截Action调用的对 ...
- SpringMVC拦截器的使用
SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...
- SpringMVC拦截器详解[附带源码分析]
目录 前言 重要接口及类介绍 源码分析 拦截器的配置 编写自定义的拦截器 总结 总结 前言 SpringMVC是目前主流的Web MVC框架之一. 如果有同学对它不熟悉,那么请参考它的入门blog:h ...
- SpringMVC拦截器2(资源和权限管理)(作为补充说明)
SpringMVC拦截器(资源和权限管理) 1.DispatcherServlet SpringMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServle ...
- SpringMVC拦截器(实现登录验证拦截器)
本例实现登陆时的验证拦截,采用SpringMVC拦截器来实现 当用户点击到网站主页时要进行拦截,用户登录了才能进入网站主页,否则进入登陆页面 核心代码 首先是index.jsp,显示链接 <%@ ...
- Spring+SpringMVC+MyBatis深入学习及搭建(十七)——SpringMVC拦截器
转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7098753.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十六)--S ...
- SpringMVC拦截器Interceptor
SpringMVC拦截器(Interceptor)实现对每一个请求处理前后进行相关的业务处理,类似与servlet中的Filter. SpringMVC 中的Interceptor 拦截请求是通过Ha ...
- 五 : springMVC拦截器
springMVC拦截器的实现一般有两种方式 第一种方式是要定义的Interceptor类要实现了Spring的HandlerInterceptor 接口 第二种方式是继承实现了HandlerInte ...
随机推荐
- python通过重启线程,实现服务的热加载
这个思路后来证明不能用于工作. 因为线程调用没有及时返回,所以不能用这种方式来重启服务. 但作为脑洞,也应该作个记录. import os import shutil import datetime ...
- 自定义v-color指令
在自定义指令的时候,和js行为有关的,最好就写在inserted中去,防止js代码不生效.和样似有关的操作放在bind中去Vue.direactive [d儿 Rai K T V] 没有s哈 < ...
- ios App 开发指南
开发者账号申请 http://www.applicationloader.net/blog/zh/547.html https://zhuanlan.zhihu.com/p/66118041 http ...
- 【oracle】查看表空间对应文件所在位置
select file_name , tablespace_name from dba_data_files;select * from dba_data_files;
- R语言-记号体系
安装xlsx包 #装之前先装jdk,配置环境变量 install.packages("xlsx") 代表安装成功 必须先加载包然后再使用包library() $提取符号 当一个函数 ...
- WPF DataGrid 绑定数据及时更新的处理
原文:WPF DataGrid 绑定数据及时更新的处理 默认情况下datagrid 绑定数据源后,在界面编辑某一列后,数据不会及时更新到内存对象中.如在同一行上有一个命令对来获取 当前选中行(内存对象 ...
- <Matrix> 311 378
311. Sparse Matrix Multiplication 稀疏矩阵的计算.稀疏矩阵的特点是有大量的0,如果采用暴力算法则比然会有很多无意义的计算. C[ i ][ j ] += A[ i ] ...
- Salesforce 开发整理(一)测试类最佳实践
在Sales force开发中完善测试类是开发者必经的一个环节,代码的部署需要保证至少75%的覆盖率,那么该如何写好测试类呢. 测试类定义格式如下: @isTest private class MyT ...
- 黄聪:PHP转换网址相对路径到绝对路径的一种方法
相信很多程序(尤其是采集类的程序)都会有需要把网址的相对路径转换成绝对路径的需要,例如采集到某页面的HTML代码中包含资源文件经常会看到这样的文件名: <link rel="style ...
- idea创建maven的web项目
前言 今天搭xfire的时候,我想对xfire进行一下测试,就想弄个web工程试试,发现网上写的很多没有用的,就自己写了一下.十分精简.也介绍了如何解决maven骨架建立项目非常慢的问题. 介绍 1. ...