简单了解一下过滤器和拦截器:

过滤器是servlet规范中的一部分,任何java
web工程都可以使用;在url-pattern中配置/*之后,可以对所有要访问的资源拦截。拦截器是springMVC框架自己的一部分,只有使用springMVC框架的工程才能用;拦截器只会拦截控制器方法,即Controller中的方法,访问jsp,HTML,css,image,js是不会进行拦截的。

springMVC的拦截器,作用于Controller方法执行前后,通过实现org.springframework.web.servlet.HandlerInterceptor接口来实现。
接口中有三个方法:preHandle作用于Controller方法调用之前,预处理;postHandle作用于Controller方法调用之后,后处理;afterCompletion顾名思义作用于页面模板引擎加载完成过后,主要用于一些资源回收工作。
preHandle方法有返回值,当返回false时,将不会执行Controller方法,也就不会进入到目标的页面去。可以通过方法参数中的httpServletRequest做请求转发。

    @Overridepublic boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {return false;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {}

下面简单为实现拦截器的操作步骤:

  1. 编写Controller
    和普通的控制器方法无差,在方法中输出一段语句,后面可根据控制台打印结果查看相关方法的执行顺序。
@Controller
public class TestInterceptorController {@RequestMapping("/testInterceptor")public String testInterceptor(){System.out.println("testInterceptor...");return "success";}
}
  1. 编写拦截器
public class TestInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {System.out.println("preHandle...");return true;}@Overridepublic void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {System.out.println("postHandle...");}@Overridepublic void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {System.out.println("afterCompletion...");}
}
  1. 配置拦截器
    除了配置包扫描、注解驱动、视图解析器外,这里需要配置拦截器,将拦截器和控制器方法关联起来。如果存在多个拦截器需要配置,在 <mvc:interceptors>标签下再添加多个<mvc:interceptor>单元模块即可。如果针对同一个控制器方法,有多个拦截器,会按照配置的先后顺序执行。
    <!--配置拦截器--><mvc:interceptors><mvc:interceptor><mvc:mapping path="/testInterceptor"/><bean class="com.wuwl.interceptor.TestInterceptor"/></mvc:interceptor></mvc:interceptors>
  1. 编写前端页面
    简单的超链接即可。
    <a href="testInterceptor">testInterceptor</a>
  1. 编写成功页面
    这里我们在jsp页面加一句后台输出,可以看到拦截器执行的顺序。
    <p>you success</p><%System.out.println("loading jsp success");%>
  1. 启动tomcat,测试demo
  2. 查看控制台输出
    这里我们可以清楚的看到,添加拦截器过后,访问/testInterceptor请求时,先来到拦截器的preHandle方法,做预处理;返回true后,执行控制器方法,方法返回的字符串;执行拦截器的postHandle方法,做后处理;同时视图解析器根据返回的字符串进行拼接,指向跳转页面;页面加载完成后,须再执行拦截器的afterCompletion方法,进行相关资源的回收。
preHandle...
testInterceptor...
postHandle...
loading jsp success
afterCompletion...

注:如果存在多个拦截器拦截同一个请求,这里演示两个,我们将拦截器的输出语句加上编号。这样最后控制台的输出语句将变成:

preHandle111...
preHandle222...
testInterceptor...
postHandle222...
postHandle111...
loading jsp success
afterCompletion222...
afterCompletion111...

postHandleafterCompletion执行的顺序和preHandle的顺序是相反的,这个顺序来自原springmvc.xml配置拦截器的先后顺序。

springMVC使用拦截器针对控制器方法做预处理、后处理、资源清理相关推荐

  1. SpringMVC:拦截器(12)

    拦截器 1. 拦截器概念 2. 拦截器入门案例 2.1 环境准备 2.2 拦截器开发 步骤1: 创建拦截器类 步骤2: 配置拦截器类 步骤3: SpringMVC添加SpringMvcSupport包 ...

  2. SpringMVC自定义拦截器与异常处理(自定义异常)

    SpringMVC自定义拦截器与异常处理 拦截器概念 拦截器代码演示 创建maven工程 pom.xml <?xml version="1.0" encoding=" ...

  3. 【SpringMVC】拦截器和过滤器

    拦截器: 拦截器是springmvc中的一种,需要实现HandlerInterceptor接口. 拦截器和过滤器类似,功能方向侧重点不同. 过滤器是用来过滤器请求参数,设置编码字符集等工作. 拦截器是 ...

  4. SpringMVC的拦截器

    Spring MVC 的拦截器类似于Servlet 开发中的过滤器Filter,用于对Controller进行预处理和后处理. 使用SpringMVC拦截器步骤: 1.定义拦截器类 1.1 实现接口 ...

  5. SpringMVC之拦截器和文件上传下载

    过滤器与拦截器的区别:拦截器是AOP思想的具体应用. 过滤器 : servlet规范中的一部分,任何java web工程都可以使用 在url-pattern中配置了/*之后,可以对所有要访问的资源进行 ...

  6. springmvc如何拦截html页面,SpringMVC实现拦截器

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

  7. Marco's Java【SpringMVC入门(五) 之 SpringMVC的拦截器的使用】

    前言 我们知道在web开发中,一般有三大板块:Servlet(服务连接器) .Listener(监听器) 和Filter(过滤器),而今天我们要学习的拦截器可以算是一个精致的过滤器"法宝&q ...

  8. SpringMVC 简单拦截器配置

    拦截器的目的就是:用户所属的session不存在后进行对控制器请求的拦截,使跳转到首页或者登陆页面. 1.首先在web.xml中配置dispatcher-servlet.xml .代码中对应的< ...

  9. springMVC教程--拦截器详解

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

最新文章

  1. 超星未来发布新一代高级别自动驾驶车载计算平台
  2. 这些Python常用的工具和学习资源你都知道么?
  3. ejb 2.0 3.0_Java EE 6测试第I部分– EJB 3.1可嵌入API
  4. 不容按钮、下拉框 执行同一个函数或者同一种函数的用法
  5. 网络协议从入门到底层原理(8)HTTPS(成本、通信过程、TLS1.2的连接,配置服务器HTTPS)
  6. 学习用TypeScript写React组件
  7. DataGrid 首次进入页面时,不要加载任何数据
  8. 计算机操作员有关大学专业,如何根据自身特长选大学专业,这样操作最简单直接!...
  9. GJB150.18A-2009机械冲击试验测试要求
  10. IATF16949认证辅导,IATF16949第六章容易发生的问题点及处理方案
  11. 在windows系统上搭建CTS测试环境过程记录
  12. 游戏地图与场景设计常用名词
  13. 怎样删除计算机硬盘记录,有什么方法能删除电脑里使用过的移动硬盘的记录
  14. C++中二维数组的动态创建于处理(zzl)
  15. 写乐100道练习题_写乐大型21K详细评测(文长慎入)
  16. On-premises software 释义http://en.wikipedia.org/wiki/On-premises_software
  17. 基于matlab数字交换网络的仿真,基于MATLAB数字交换网络的仿真
  18. Mysql8.x安装教程
  19. java http头_JAVA如何获取HTTP请求头
  20. 激光投影虚拟键盘的设计与实现

热门文章

  1. 如何在Linux命令行中替换多个文件中的字符串
  2. XmlSerializer保存xml文件android
  3. passwd: 鉴定令牌操作错误_user 及passwd 设置
  4. (转)MTK 消息分发及窗口管理
  5. 问答| 为何会采用倒车入库(侧方位停车)方式?
  6. linux内核3,升级linux内核到3.10
  7. apache在线升级yum_linux yum安装apache
  8. 通过css3制作熊在冰川奔跑效果(animation、精灵图)
  9. 【Spring第三篇】什么是Bean?
  10. 洛谷——P1422 小玉家的电费