拦截器执行细节以及和过滤器的区别

2023-10-27

过滤器Filter和拦截器Interceptor区别

  • 过滤器是 servlet 规范中的一部分,任何 java web 工程都可以使用。

  • 拦截器是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。

  • 过滤器在 url-pattern 中配置了/*之后,可以对所有要访问的资源拦截。

  • 拦截器它是只会拦截访问的控制器方法,如果访问的是 jsp,html,css,image 或者 js 等静态资源是不会进行拦截的。

拦截器执行细节

通过实现HandlerInterceptor接口和继承HandlerInterceptorAdapter实现类可以自定义接口
这是一个简单的实现类:

public class FirstInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("preHandle");
        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("preHandle");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("preHandle");
    }
}

我们介绍其中三个方法:

  • preHandle:在业务处理器处理请求之前进行拦截处理,也就是Controller方法之前
  • postHandle:在控制器处理完请求后,在DispatcherServlet向客户端返回响应之前执行
  • afterCompletion:在DispatcherServlet完成处理后执行

我们稍后会详细介绍这三个方法执行时机
我们通过一个案例来探究这些细节,接着上面的代码,我们实现了拦截器接口,要想让他起作用我们必须注册它:

1.注册

在这里插入图片描述
我们通过bean标签方式注册

2.编写控制类进行分析
@Controller
public class InterceptorContorller {

    @RequestMapping("/testIn")
    public String testIn(){
        return "success";
    }

}

我们打开浏览器,在idea中debug运行该项目

3.通过断点分析

在这里插入图片描述
点击开始:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

拦截器执行细节以及和过滤器的区别 的相关文章

随机推荐

  • 如何在 Ubuntu 20.04 上安装 Python 3.9

    Python 是世界上最流行的编程语言之一 它是一种多功能语言 用于构建各种应用程序 从简单的脚本到复杂的机器学习算法 凭借其简单易学的语法 Python 成为初学者和经验丰富的开发人员的热门选择 Python 3 9 是 Python 语
  • 如何修复 WordPress 白屏死机

    如果您有 WordPress 网站 则其中之一最常见的错误您可能会遇到白屏死机 WSOD 然而 经历它可能会很可怕 因为您可能想知道 WSOD 的根本原因 并且不知道下一步 WSOD 可能有多种可能的原因 确定它们并不容易 特别是如果您不熟
  • 如何在 CentOS 7 上安装 Go

    Go 通常称为 golang 是由 Google 创建的现代开源编程语言 许多流行的应用程序 包括 Kubernetes Docker Hugo 和 Caddy 都是用 Go 编写的 在本教程中 我们将向您展示如何在 CentOS 7 系统
  • 如何在 Ubuntu 18.04 上安装 VirtualBox

    虚拟盒子是一款开源跨平台虚拟化软件 允许您同时运行多个来宾操作系统 虚拟机 在本教程中 我们将向您展示如何在 Ubuntu 18 04 计算机上安装 VirtualBox 的两种不同方法 第一种方法描述了从 Oracle 存储库安装 Vir
  • 转化为布尔值的规则

    对于基本类型的数据 null和undefined直接转化为false 字符串 空字符串转化为false 其他全为true 数字 0和NaN转化为false 其他全为true 对于引用类型数据 全为true 所以 的结果是true 分析 中
  • 电脑数据恢复,哪种方法靠谱?

    信息化时代 电脑的需求增加了 那么很多的数据都会保存在电脑上面 万一数据丢失了 那么有什么办法能恢复呢 要想恢复电脑里面丢失的数据 也不是没有办法找回的 可以借助专业的数据恢复软件EasyRecovery进行恢复 访问http wm mak
  • 【Linux】配置网络和firewall防火墙(超详细介绍+实战)

    Liunx学习记录篇 篇一 Linux VMware安装unbuntu18 04虚拟机 超详细步骤 附镜像文件 篇二 Linux ubuntu18 04系统基础配置及操作 篇三 Linux 用户与组的操作详细介绍 篇四 Linux 管理Li
  • 彻底搞懂==和equals的区别

    概述 一提 和equals的区别很多人就会说前者是比较地址 即是否是同一个对象 而equals则是比较对象的内容是否一样 其实这是太正确的 接下来仔细分析这俩者的区别 文章目录 1 基本数据类型存储的位置 2 3 为什么所有的java类都是
  • 结构体成员内存对齐规则

    关于结构体成员内存对齐 主要有以下三方面原则 原则1 结构体中元素是按照定义顺序一个一个放到内存中去的 但并不是 紧密排列的 从结构体存储的首地址开始 每一个元素放置到内存中时 它都 会认为内存是以它自己的大小来划分的 因此元素放置的位置一
  • 爬虫中的异常处理

    URLError和HTTPError HTTPError类是URLError类的子类 导入包 import urllib error http 错误是针对浏览器无法连接到服务器而增加的错误提示 引导并告诉浏览者该页是哪里出现了问题 通过ur
  • Springboot + elementUI实现上传用户头像

    最近一直在做一个背单词的小项目练手 准备着加入个新功能 想了很多种办法 本来准备利用sm ms图床 把用户头像上传到图床然后返回链接把链接存到数据库里 后来想了想 感觉用户的头像存在那不太好 于是还是决定把用户头像存储在项目里的一个文件夹好
  • 【图像去模糊2】SRN-DeblurNet论文笔记

    一 论文概述 本论文中 作者研究了图像去模糊中的 coarse to fine 方案并提出了一个尺度循环网络 SRN DeblurNet 用于图像去模糊任务 该网络具有更简单的网络结构 更少的参数数量并且更容易训练 二 论文的提出背景 图像
  • GUI+SQLServer考试系统

    文章目录 1 概述 1 1 目的与要求 1 2 设计环境 2 需求分析 2 1 系统功能要求设计 2 2 系统模块设计 2 3 数据字典 3 概念模型设计 4 逻辑和物理结构设计 4 1 由系统E R图转化而得到的关系模式如下 4 2 确定
  • 机器学习算法(六): 基于XGBoost的分类预测(基于天气数据集的XGBoost分类实战)

    机器学习算法 六 基于XGBoost的分类预测 1 实验室介绍 1 1 XGBoost的介绍 XGBoost是2016年由华盛顿大学陈天奇老师带领开发的一个可扩展机器学习系统 严格意义上讲XGBoost并不是一种模型 而是一个可供用户轻松解
  • CTFshow--web入门--文件上传

    目录 开始 web151 改后缀 禁js web152 改后缀 web153 user ini web154 155 user ini 短标签 web156 web157 158 159 反引号执行命令 web160 日志包含绕过 web1
  • ES快速学习

    ES 用于 存储 分析 检索 的工具 组成及与类比到mysql组成 倒排索引
  • centos8 Nginx配置反向代理时出现的13: Permission denied) while connecting to upstream, client: 127.0.0.1

    1 条件不允许的情况下 不能随意重启计算机 执行下列代码 setsebool P httpd can network connect 1 2 其他情况下获取root权限 vim etc selinux config 找到 SELINUX e
  • 鸡啄米VS2010/MFC编程入门教程——学习1初次接触

    2015年5月12日23 13 44 2013年 2014年 在九固开发伺服上位机的时候 刚开始的时候还想用VC6 0开发的 但是在WIN7下 各种不兼容 索性干脆直接换了VC2010 原本想装VS2012的 但是安装过程中 总有问题 后来
  • repo遍历所有git仓库

    repo遍历所有git仓库 repo forall c 命令 其中 参数有 c 后面可以带的任何可以被系统支持的shell命令 ls cp pwd等 p 在shell命令输出之前列出项目名称 v 列出执行shell指令输出的错误信息 该命令
  • 拦截器执行细节以及和过滤器的区别

    过滤器Filter和拦截器Interceptor区别 过滤器是 servlet 规范中的一部分 任何 java web 工程都可以使用 拦截器是 SpringMVC 框架自己的 只有使用了 SpringMVC 框架的工程才能用 过滤器在 u