java中拦截器什么用,[Java教程]SpringMVC中拦截器的使用

[Java教程]SpringMVC中拦截器的使用

0

2015-12-28 12:00:08

什么是拦截器

拦截器通常一般指的是通过拦截从浏览器发往服务器的一些请求来完成某些功能的一段程序代码

一般在一个请求发生之前,发生时,发生后我们都可以对请求进行拦截

拦截器可以做什么

拦截器可以用于权限验证、解决乱码、操作日志记录、性能监控、异常处理等

自定义拦截器

可以通过继承Spring框架中的HandlerInterceptorAdapter类,然后重写preHandle,postHandle,afterCompletion三个方法,在三个方法中写我们自己要想实现的业务逻辑代码.1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38/**

* 自定义拦截器

* @author admol

*/

public class MyInterceptor extends HandlerInterceptorAdapter {

/**

* 在请求之前执行

* @param request

* @param response

* @param handler 表示被拦截的请求目标

* @return false:拦截请求,终止请求 true:继续执行请求

*/

@Override

public boolean preHandle(HttpServletRequest request, HttpServletResponse response,

Object handler) throws Exception {

//业务逻辑代码编写...(如:解决乱码,权限验证)

request.setCharacterEncoding("utf-8");

return true;

}

/**

* @param modelAndView 可以对视图进行操作

*/

@Override

public void postHandle(HttpServletRequest request, HttpServletResponse response,

Object handler, ModelAndView modelAndView) throws Exception {

//业务逻辑代码编写...(如:操作日志记录,更改视图信息)

}

/**

* @param ex 异常

*/

@Override

public void afterCompletion(HttpServletRequest request, HttpServletResponse response,

Object handler, Exception ex) throws Exception {

//业务逻辑代码编写...(如:,资源销毁,异常处理)

}

}

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是否为空,来进行相关的异常处理。

注册拦截器

在1

2

3

当有多个拦截器的时候可以写多个bean

当我们只想拦截部分指定请求时:1

2

3

4

5

多个拦截器

1

2

3

4

当配置有多个拦截器的时候,会按拦截器顺序执行preHandle方法,然后再倒序执行postHandle和afterCompletion方法。

其他实现方式实现接口 implements HandlerInterceptor

实现接口 implements WebRequestInterceptor

注册拦截器方法不变

与过滤器的区别

1.过滤器是依赖于Servlet容器,基于回调函数,Intercepto依赖与框架,基于反射机制

2.过滤器的过滤范围更大,还可以过滤一些静态资源,拦截器只拦截请求

本文网址:http://www.shaoqun.com/a/171787.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

Spring

0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值