SpringMVC中拦截器的使用
什么是拦截器
拦截器通常一般指的是通过拦截从浏览器发往服务器的一些请求来完成某些功能的一段程序代码
一般在一个请求发生之前,发生时,发生后我们都可以对请求进行拦截
拦截器可以做什么
拦截器可以用于权限验证、解决乱码、操作日志记录、性能监控、异常处理等
自定义拦截器
可以通过继承Spring框架中的HandlerInterceptorAdapter类,然后重写preHandle,postHandle,afterCompletion三个方法,在三个方法中写我们自己要想实现的业务逻辑代码.
1 |
/** |
a) public boolean preHandle(HttpServletRequest request,HttpServletResponse response,
Object handler) throws Exception
该方法在action执行前执行,可以实现对数据的预处理,比如:编码、防重复提交安全控制等。
如果方法返回true,则继续执行action。返回false则拦截请求
b) public void postHandle(HttpServletRequest request,HttpServletResponse response,
Object handler,ModelAndView modelAndView) throws Exception
该方法在action执行后,生成视图前执行。在这里,我们有机会修改视图层数据。
c) public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception
最后执行,通常用于释放资源,处理异常。我们可以根据ex是否为空,来进行相关的异常处理。
注册拦截器
在xml文件中配置:
1 |
<mvc:interceptors> |
当有多个拦截器的时候可以写多个bean
当我们只想拦截部分指定请求时:
1 |
<mvc:interceptors> |
多个拦截器
xml配置:
1 |
<mvc:interceptors> |
当配置有多个拦截器的时候,会按拦截器顺序执行preHandle方法,然后再倒序执行postHandle和afterCompletion方法。
其他实现方式
- 实现接口
implements HandlerInterceptor - 实现接口
implements WebRequestInterceptor
注册拦截器方法不变
与过滤器的区别
1.过滤器是依赖于Servlet容器,基于回调函数,Intercepto依赖与框架,基于反射机制
2.过滤器的过滤范围更大,还可以过滤一些静态资源,拦截器只拦截请求
SpringMVC中拦截器的使用的更多相关文章
- springmvc中拦截器与springmvc全局异常处理器的问题
最近在做一个练手的小项目, 系统架构中用了springmvc的全局异常处理器, 做了系统的统一异常处理. 后来加入了springmvc的拦截器, 为了一些需求, 在拦截器中的 preHandle 方法 ...
- SSM-SpringMVC-33:SpringMVC中拦截器Interceptor讲解
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 拦截器Interceptor: 对处理方法进行双向的拦截,可以对其做日志记录等 我选择的是实现Handler ...
- springmvc中拦截器配置格式
对于springmvc,有两种方式配置拦截器. 一是实现HandlerInterceptor接口,如 public class MyInterceptor1 implements HandlerInt ...
- springmvc中拦截器的定义和配置
package com.hope.interceptor;import org.springframework.lang.Nullable;import org.springframework.web ...
- springmvc的拦截器
什么是拦截器 java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...
- SpringMVC利用拦截器防止SQL注入
引言 随着互联网的发展,人们在享受互联网带来的便捷的服务的时候,也面临着个人的隐私泄漏的问题.小到一个拥有用户系统的小型论坛,大到各个大型的银行机构,互联网安全问题都显得格外重要.而这些网站的背后,则 ...
- SpringMVC经典系列-14自己定义SpringMVC的拦截器---【LinusZhu】
注意:此文章是个人原创.希望有转载须要的朋友们标明文章出处.假设各位朋友们认为写的还好,就给个赞哈.你的鼓舞是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linusz ...
- SpringMVC 学习-拦截器 HandlerInterceptor 类
一.拦截器 HandlerInterceptor 类的作用 SpringMVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理. 二.怎么使用呢? 1. ...
- shiro中拦截器机制
8.1 拦截器介绍 Shiro使用了与Servlet一样的Filter接口进行扩展:所以如果对Filter不熟悉可以参考<Servlet3.1规范>http://www.iteye.com ...
随机推荐
- .net连接sql server的几种连接字符串的写法
.net连接sql server的几种连接字符串的写法 1, 混合验证模式登录 server=电脑名 或 电脑IP;database=数据库名;uid=数据库登录名;password=数据库登录密码 ...
- 构造函数、原型对象prototype、实例、隐式原型__proto__的理解
(欢迎一起探讨,如果有什么地方写的不准确或是不正确也欢迎大家指出来~) PS: 内容中的__proto__可能会被markdown语法导致显示为proto. 建议将构造函数中的方法都定义到构造函数的原 ...
- ubuntu在vim编辑时,方向键无法正常使用
/* 如果在普通用户下. */ [frankie@localhost ~]$ sudo apt-get install vim [frankie@localhost ~]$ cd /etc/vim [ ...
- 给mongodb设置密码权限
昨天装了个mongodb数据库用于测试用,装好后没有密码,现在就讲讲怎么设置密码 1.首先进入C:\mongodb\bin下面运行mongod.exe启动数据库. 2.在相同目录下启动mongo.ex ...
- NOIP 2011 Day 1
NOIP 2011 Day 1 tags: NOIP 搜索 categories: 信息学竞赛 总结 铺地毯 选择客栈 Mayan游戏 铺地毯 Solution 因为只会询问一个点被谁覆盖, 而且后面 ...
- srcache_nginx+redis构建缓存系统
http://www.ttlsa.com/nginx/construction-of-srcache_nginx_redis-caching-system/ http://blog.csdn.net/ ...
- 【转载】WebService到底是什么?
http://blog.csdn.net/wooshn/article/details/8069087/ 一.序言 大家或多或少都听过WebService(Web服务),有一段时间很多计算机期刊.书籍 ...
- ELK系列--justniffer0.5.12安装报错解决方法
现象: justniffer的0.5.12(安装后显示0.5.13版本)安装过程中需要升级boost至1.46以上版本,同时在make时会出现如下报错: /opt/Python-2.6.6/Pytho ...
- iwebshop 增加页面访问次数实时
class里面的主控制器初始化时添加如下代码 //更新页面访问次数 $siteConfig = new Config('site_config'); $sFilePath =$siteConfig-& ...
- PHP 边执行边输出
<?php for ($i = 1; $i <= 5; $i++) { print "#$i 完毕<hr>"; sleep(1); print str_pa ...