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 拦截器的实现

  1. 编写拦截器类实现HandlerInterceptor接口
  2. 将拦截器注册到Spring mvc框架中
<mvc:interceptors>
    <bean class="com.springmvc.test.interceptor.Test1Interceptor"/>
</mvc:interceptors>
  1. 配置拦截器的拦截规则
<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/viewAll.form"/>
        <bean class="com.springmvc.test.interceptor.Test1Interceptor"/>
    </mvc:interceptor>
</mvc:interceptors>

2-3 拦截器的方法介绍

  1. preHandle方法,在请求被处理之前进行调用
    返回值:表示我们是否需要将当前的请求拦截下来
    如果返回false,请求将被终止
    如果返回true,请求会被继续执行

  2. postHandle方法,在请求被处理之后进行调用
  3. 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方法没有返回值,不能终止请求

第三章 拦截器的使用场景

使用原则:处理所有请求的共同问题

  1. 解决乱码问题
  2. 解决权限验证问题

第四章 拦截器和过滤器的对比

  • 过滤器Filter依赖于Servlet容器,基于回调函数,过滤范围大
  • 拦截器Interceptor依赖于框架容器,基于反射机制,只过滤请求

总结:

  • 拦截器可以处理web应用中请求的一些通用性问题
  • 共性问题在拦截器中处理,可以减少重复代码,便于维护

SSM(spring mvc+spring+mybatis)学习路径——2-2、spring MVC拦截器的更多相关文章

  1. SSM(spring mvc+spring+mybatis)学习路径——2-1、spring MVC入门

    目录 2-1 Spring MVC起步 一.回顾Servlet 二.SpringMVC简介 三.搭建SpringMVC第一个案例 四.简单流程及配置 五.使用注解开发Controller 六.参数绑定 ...

  2. SSM(spring mvc+spring+mybatis)学习路径——1-1、spring入门篇

    目录 1-1 Spring入门篇 专题一.IOC 接口及面向接口编程 什么是IOC Spring的Bean配置 Bean的初始化 Spring的常用注入方式 专题二.Bean Bean配置项 Bean ...

  3. SSM(spring mvc+spring+mybatis)学习路径——1-2、spring事务管理

    目录 1-2 Spring事务管理 概念介绍 事务回顾 事务的API介绍 Spring 事务管理 转账案例 编程式事务管理 声明式事务管理 使用XML配置声明式事务 基于tx/aop 使用注解配置声明 ...

  4. myBatis学习笔记(10)——使用拦截器实现分页查询

    1. Page package com.sm.model; import java.util.List; public class Page<T> { public static fina ...

  5. MyBatis学习系列三——结合Spring

    目录 MyBatis学习系列一之环境搭建 MyBatis学习系列二——增删改查 MyBatis学习系列三——结合Spring MyBatis在项目中应用一般都要结合Spring,这一章主要把MyBat ...

  6. 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 ...

  7. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  8. MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)

    前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...

  9. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

随机推荐

  1. Gym - 101982A 2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) A. Exam

    题面 题意:你和朋友一起做了n道判断题,现在你知道你们两的答案,也知道你朋友对了k个,问你至少对了几个 题解:假设你和朋友n个答案都一样,那你是不是也对了k个,假设你和朋友有1个答案不一样,是不是,你 ...

  2. [Swift通天遁地]二、表格表单-(7)电子邮件Mail:实现单元格左右滑动调出功能按钮

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  3. [Swift通天遁地]四、网络和线程-(13)创建一个Socket客户端

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...

  4. --NSArray与NSMutableArray用copy修饰还是strong(转)

    一.NSMutableArray 被copy.strong修饰后的变化: 把NSMutableArray用copy修饰有时就会crash,因为对这个数组进行了增删改操作,而copy后的数组变成了不可变 ...

  5. 【洛谷4770/UOJ395】[NOI2018]你的名字(后缀数组_线段树合并)

    题目: 洛谷4770 UOJ395 分析: 一个很好的SAM应用题-- 一句话题意:给定一个字符串\(S\).每次询问给定字符串\(T\)和两个整数\(l\).\(r\),求\(T\)有多少个本质不同 ...

  6. C# asp.net repeater实现排序功能,自动排序,点击头部排序,点击列排序

    在网上看到好多关于repeater排序的,自己动手用了,发现一些问题,贴源码后把发现的问题以及解决方法给出 repeater实现排序功能(单击升序排列,再单击降序排列).原理很简单,在<TD&g ...

  7. HeadFirst HTML&CSS

    CH1 认识HTML HTML和CSS是我们用来创建网页的语言:HTML是超文本标记语言(HyperText Markup Language)的缩写,用来建立网页的结构:CSS是层叠样式表(Casca ...

  8. C#调用Win32 api时的内存操作

    一般情况下,C#与Win 32 Api的互操作都表现的很一致:值类型传递结构体,一维.二维指针传递IntPtr.在Win32 分配内存时,可以通过IntPtr以类似移动指针的方式读取内存.通过IntP ...

  9. Lvs Keepalive DR模式高可用配置

    Lvs Keepalive DR模式配置 一.环境 #DIP# eth0:192.168.233.145#VIP# eth0:0 192.168.233.250/32 #RIP1:192.168.23 ...

  10. CAD在网页中增加一个射线

    主要用到函数说明: IMxDrawBlockTableRecord::AddRay 向记录中增加一个射线,详细说明如下: 参数 说明 point1 射线上的点1 point2 射线上的点2 js代码实 ...