SSM(spring mvc+spring+mybatis)学习路径——2-2、spring MVC拦截器
目录
SSM学习路径分为4个阶段
- 战斗伊始——Spring
- 转战阵地——SpringMVC
- 再下一城——MyBatis
- 终极目标——整合案例
转战阵地——SpringMVC
2-2 Spring MVC拦截器
第一章 概述
1. 课程内容
- 了解拦截器
- 掌握Spring mvc拦截器的原理和使用
- 掌握Spring mvc拦截器的使用场景
- Spring mvc拦截器的对比和总结
2. 什么是拦截器?
- 拦截器是指通过统一拦截从浏览器发往服务器的请求来完成功能的增强
sequenceDiagram
浏览器->>服务器: 请求数据
服务器->>浏览器: 返回数据
- 使用场景:解决请求的共性问题(如:乱码问题、权限验证问题等)
第二章 Spring mvc拦截器的实现
2-1 拦截器的工作原理
- Spring mvc可以通过配置过滤器来解决乱码问题
- 拦截器的工作原理和过滤器非常相似
2-2 拦截器的实现
- 编写拦截器类实现
HandlerInterceptor接口 - 将拦截器注册到Spring mvc框架中
<mvc:interceptors>
<bean class="com.springmvc.test.interceptor.Test1Interceptor"/>
</mvc:interceptors>
- 配置拦截器的拦截规则
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/viewAll.form"/>
<bean class="com.springmvc.test.interceptor.Test1Interceptor"/>
</mvc:interceptor>
</mvc:interceptors>
2-3 拦截器的方法介绍
preHandle方法,在请求被处理之前进行调用
返回值:表示我们是否需要将当前的请求拦截下来
如果返回false,请求将被终止
如果返回true,请求会被继续执行- postHandle方法,在请求被处理之后进行调用
afterCompletion方法,在请求结束之后才进行调用
2-4 多个拦截器应用

多个拦截器可以想象成从A到B经过2个收费站。假设A开车到B,先后经过收费站1和收费站2,此时依次执行收费站1的preHandle方法和收费站2的preHandle方法。从B回到A,依次经过收费站2和收费站1,依次执行收费站2的postHandle方法和收费站1的postHandle方法,然后收费站寄来发票,因为回来是先经过的收费站2,所以理论上是收费站2的发票先出来,所以依次执行收费站2的afterCompletion和收费站1的afterCompletion
2-5 拦截器的其他实现方式
拦截器的类还可以通过实现WebRequestInterceptor接口来编写,向Spring mvc框架注册的写法不变
弊端:preHandle方法没有返回值,不能终止请求
第三章 拦截器的使用场景
使用原则:处理所有请求的共同问题
- 解决乱码问题
- 解决权限验证问题
第四章 拦截器和过滤器的对比
- 过滤器Filter依赖于Servlet容器,基于回调函数,过滤范围大
- 拦截器Interceptor依赖于框架容器,基于反射机制,只过滤请求
总结:
- 拦截器可以处理web应用中请求的一些通用性问题
- 共性问题在拦截器中处理,可以减少重复代码,便于维护
SSM(spring mvc+spring+mybatis)学习路径——2-2、spring MVC拦截器的更多相关文章
- SSM(spring mvc+spring+mybatis)学习路径——2-1、spring MVC入门
目录 2-1 Spring MVC起步 一.回顾Servlet 二.SpringMVC简介 三.搭建SpringMVC第一个案例 四.简单流程及配置 五.使用注解开发Controller 六.参数绑定 ...
- SSM(spring mvc+spring+mybatis)学习路径——1-1、spring入门篇
目录 1-1 Spring入门篇 专题一.IOC 接口及面向接口编程 什么是IOC Spring的Bean配置 Bean的初始化 Spring的常用注入方式 专题二.Bean Bean配置项 Bean ...
- SSM(spring mvc+spring+mybatis)学习路径——1-2、spring事务管理
目录 1-2 Spring事务管理 概念介绍 事务回顾 事务的API介绍 Spring 事务管理 转账案例 编程式事务管理 声明式事务管理 使用XML配置声明式事务 基于tx/aop 使用注解配置声明 ...
- myBatis学习笔记(10)——使用拦截器实现分页查询
1. Page package com.sm.model; import java.util.List; public class Page<T> { public static fina ...
- MyBatis学习系列三——结合Spring
目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...
- Spring Boot 2+gRPC 学习系列1:搭建Spring Boot 2+gRPC本地项目
Spring Boot 2+gRPC 学习系列1:搭建Spring Boot 2+gRPC本地项目 https://blog.csdn.net/alinyua/article/details/8303 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)
前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...
- MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)
前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
随机推荐
- PCB 脱离IIS的Web应用
在用.net Web编程中,我们写好的Web应用首选会挂在IIS上面,因为它足稳定并且功能齐全,但这不是我们唯一的选择,微软给我们提供了Owin组件,Web应该的宿主可以不再是IIS了,有了Owin后 ...
- 理解JavaScript中的闭包
(这篇文章后面关于onclick事件的解释是错误的,请不要被误导了2016.6.16) 闭包这个概念给JavaScript初学者心中留下了巨大的阴影,网络上关于闭包的文章不可谓不多,但是能让初学者看懂 ...
- [Swift通天遁地]四、网络和线程-(4)使用Alamofire实现网络请求
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- Java系列学习(十二)-开始Eclipse
1.用Eclipse来写一个HelloWorld (1)选择工作空间 工作空间其实就是我们写的源代码所在的目录 (2)创建一个Java项目 [File-New-Java Project] (3)创建包 ...
- html——表单控件
基本的表单控件还有html5的一些新的表单控件: <!DOCTYPE html> <html> <head> <meta charset="utf- ...
- apk的包名修改
今天,想在android手机上安装两个相同的应用,本以为可以安装不同版本的,试了几次,均相互覆盖了,于是,只能设法修改apk所对应的包名(package name). 目的声明:本文只是为了满足DIY ...
- 配置tfs2017的agent
tfs支持四种验证方式,分别是:PAT.Negotiate.Integrated.Alternate 我们使用Negotiate方式 首先,登录tfs服务器,设置iis的身份验证 添加一个Negot ...
- S-HR之OSF
1):getWorkDayCount ->ArrayList data = (ArrayList) com.kingdee.shr.rpts.ctrlreport.osf.OSFExecutor ...
- Django - app
1.app目录 migrations:数据库操作的记录(只记录修改表结构的记录); __init__文件:python2中必须填加,python3中无要求,可以不添加: admin:django为我们 ...
- c3p0 连接池配置
C3P0 可使用properties 配置文件方式,将c3p0.properties放在classpath目录下,如果为WEB应用,放在WEB-INF\classes下 c3p0.properties ...