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. PCB SQL SERVER 枚举分割函数(枚举值分解函数)

    在SQL SERVER字段采用枚举值作为字段后,如果直接查看字段的值是很难判断这个字段的带表什么意思, 在这里介绍如用函数的方法实现枚举值分割,只有分割后才很方便知道枚举值的意思. 一.问题说明 1. ...

  2. [Swift通天遁地]九、拔剑吧-(11)创建强大的Pinterest风格的瀑布流界面

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

  3. 【转】Linux账号管理之useradd

    转自:http://www.jb51.net/article/45848.htm Linux 系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然 ...

  4. Unity学习-碰撞检测(七)

    Unity脚本说明 Unity支持语言: C#(主流),JavaScript,Boo 创建脚本: [Assets-Create-C# Script] 学习案例 布置场景: 添加一个Plane,3个Cu ...

  5. Extension Methods(扩展方法)

    在 OOPL 中,有静态方法.实例方法和虚方法,如下:   public sealed class String {      public static bool  IsNullOrEmpty(st ...

  6. struts2.1.6存在中文乱码的bug

    如题,后续版本中已解决:可以通过添加filter的方式解决.

  7. photoshop制作古风画

    效果图: 素材结构: 前期准备: 素材准备,我的素材包括:印章.花束.二次元妹纸,背景图片. 软件准备,用的软件是 photoshop CS6. 把二次元妹纸拖入photoshop,把她抠出来,Ctr ...

  8. Android_撕衣服小案例

    一直都觉得做安卓开发挺有意思,最近一段时间都在学习这方面的知识以及练习敲代码这次要说的是一个简单有趣的案例,相信大家也是看了标题才进来的吧,是不是有点迫不及待的想看看效果图,嘿嘿,算了还是直接给上源码 ...

  9. CSS——img

    img标签初始化:在低版本的ie浏览器会自带边框,所以建议border:0px.

  10. (转)Hibernate的一级缓存

    http://blog.csdn.net/yerenyuan_pku/article/details/70148567 Hibernate的一级缓存 Hibernate的一级缓存就是指Session缓 ...