处理器拦截器(interceptor)是做什么用的?

想知道处理拦截器做什么用的,你要先了解下处理·流程链·。

前端控制器(dispatcherServlet)接收到请求,通过handleMapping映射处理器获取处理流程链,处理流程链包括,拦截器interceptor和处理器controller。

在没有配置拦截器的情况下,直接由处理器处理请求,如果配置了拦截器,就是拦截器对HandlerController(处理器)方法执行前后的一个处理。

我的理解就是拦截器有点像aop的概念,面向切面的意思。下面演示下springmvc是怎样实现控制器的。

 拦截器的使用场景

 处理所有请求共性问题:

1、乱码问题:用request,response参数去设置编码;

2、解决权限验证问题(是否登陆,取session对象查看);

拦截器与过滤器的区别

1、拦截器Interceptor依赖于框架容器,基于反射机制,只过滤请求;

2、过滤器Filter依赖于Servlet容器,基于回调函数,过滤范围大;


首先,实现接口HandlerInterceptor,并实现他的三个方法,afterCompletion,postHandler,preHandler。

//Interceptor拦截者
public class MyInterceptor implements HandlerInterceptor {
// 整个请求处理完毕回调方法,返回视图之后调用。

// 常用于作于资源的销毁,流等.类似于析构函数.
@Override
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
throws Exception {
System.out.println("----------------执行after");
}
// 后处理回调方法,返回视图之前调用。

//modelAndView:可以通过modelAndView参数改变显示的视图,或者修改发往视图的方法
@Override
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
throws Exception {
System.out.println("--------------------执行post");
}
// 预处理回调方法,实现处理器的预处理。
// 返回true,执行下一个拦截器或者处理器,返回false中断执行。

//Object arg2 表示的是被拦截的请求的目标对象

// 可以做权限校验,在返回false时可以用response做出响应处理。
@Override
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception {
System.out.println("-------------执行pre");
return true;
}

}


然后到spring.xml中注册拦截器(拦截路径,表示拦截哪些请求的url,启用拦截器,表示给哪个类启用这个拦截器)

<!-- 拦截器配置 学习-http://elim.iteye.com/blog/1750680 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截路径 -->
<mvc:mapping path="/myController/*" />
<!-- 启用拦截器 -->
<bean class="com.xxx.util.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>


下面是被拦截的类

@Controller
@RequestMapping("/myController")
public class MyController {
@RequestMapping("/toSuccess")
public String toSuccessPage() {
System.out.println("执行mycontroller的success方法");
return "success";
}
}

好了这就是拦截器。

springmvc处理器拦截器的更多相关文章

  1. SpringMVC处理器拦截器 Interceptor

    拦截器概念 Java 里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以在一个action执行前阻止其执行,同时也提供了一种 ...

  2. springmvc中拦截器与springmvc全局异常处理器的问题

    最近在做一个练手的小项目, 系统架构中用了springmvc的全局异常处理器, 做了系统的统一异常处理. 后来加入了springmvc的拦截器, 为了一些需求, 在拦截器中的 preHandle 方法 ...

  3. SpringMVC学习--拦截器

    简介 Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理. 拦截器定义 定义拦截器,实现HandlerInterceptor接 ...

  4. SpringMVC 学习-拦截器 HandlerInterceptor 类

    一.拦截器 HandlerInterceptor 类的作用 SpringMVC 的拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理. 二.怎么使用呢? 1. ...

  5. 转 :关于springmvc使用拦截器

    原博客: http://elim.iteye.com/blog/1750680 SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的 ...

  6. 初学springMVC的拦截器

    springMvc拦截器的执行顺序! 拦截器的各个方法的作用: /** * 登录验证拦截器 */      public class Intercepter implements HandlerInt ...

  7. SpringMVC的拦截器讲解

    Spring MVC 的处理器拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理. 用户可以自己定义一些拦截器来实现特定的功能. 谈到拦截器,还要向大家提一个词 ...

  8. SpringMVC:拦截器

    SpringMVC:拦截器   概述 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.开发者可以自己定义一些拦截器来实现特定的功能. 过 ...

  9. springmvc的拦截器

    什么是拦截器                                                         java里的拦截器是动态拦截action调用的对象.它提供了一种机制可以使 ...

随机推荐

  1. html5 嵌入元素 img map areaiframe embed meter object meter

    <img src="路径">            src 路径可以是img.jpg 也可以是 绝对和相对路径+img.jpg <img src="路径 ...

  2. window.frames在不同浏览器中的用法

    document.frames 等同于 window.frames,用来取得当前页面内 window 对象的集合. 不支持Firefox,其他浏览器(chrome.opera.IE.360)均支持. ...

  3. Eclipse Equinox DS(Declarative Service)

    Equinox DS's METE-INF/MANIFEST.MF Manifest-Version: 1.0 Lazy-ManifestFilter: (Service-Component=*) B ...

  4. Android自定义之ScrollView下拉刷新

    公司项目,需要用到ScrollView的下拉刷新,一开始使用的时候PullToRefresh三方库的下拉刷新,我比较纠结第三档库,很强大,但是,公司项目的需求,PullToRefresh就不能做到了, ...

  5. C++异步编程资料汇集贴

    C++异步编程 http://www.cnblogs.com/zjjcy/archive/2012/03/18/2404214.htmlhttp://www.cnblogs.com/zjjcy/arc ...

  6. 设计模式之模板方法模式(Template)

    一.介绍 模板方法模式是编程中经常用到的模式.它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现.这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤. 二.场景举例 当一 ...

  7. 遍历目录树 - Unicode 模式

    =info     遍历目录树 支持 Unicode     Code by 523066680@163.com     2017-03         V0.5 使用Win32API判断目录硬链接 ...

  8. 别跑了,看看脚下有木有money

       别跑了,看看脚下有木有money 1.长大论坛   本来是想做个博客的,无奈级别不够,博客过于复杂,所以就做了这个类似于贴吧的东西.在这里,你可以发帖:可以吐槽学校.可以向他人寻求帮助.甚至可以 ...

  9. 2018.12.15 struts.xml 一般配置文件写法 && 配置动态方法

    struts.xml 原始配置文件 配置 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE s ...

  10. 【iOS】那些年,遇到的小坑

    'NSInvalidArgumentException', reason: '-[__NSPlaceholderDictionary initWithObjectsAndKeys:]: second ...