http请求方式过滤器与拦截器的区别

get:获取查询数据(查询)
post:数据的提交,新增操作(增加)
put:向服务端发送数据、改变信息,侧重点在于对数据的修改操作
delete:数据库数据的删除
head:一般用来判断类型、根据返回状态确定资源是否存在、资源是否更新以及更新的时间等
过滤器与拦截器的区别
过滤器,是在java web中,你传⼊的request,response提前过滤掉⼀些信息,或者提前设置⼀些参数,然后再传⼊servlet或者struts的 action进⾏业务逻辑,⽐如过滤掉⾮法url(不是login.do的地址请求,如果⽤户没有登陆都过滤掉),或者在传⼊servlet或者 struts的action前统⼀设置字符集,或者去除掉⼀些⾮法字符拦截器,是在⾯向切⾯编程的就是在你的service或者⼀个⽅法,前调⽤⼀个⽅法,或者在⽅法后调⽤⼀个⽅法⽐如动态代理就是拦截器的简单实现,在你调⽤⽅法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调⽤⽅法后打印出字符串,甚⾄在你抛出异常的时候做业务逻辑的操作。
拦截器与过滤器的区别:
1. 拦截器是基于java的反射机制的,⽽过滤器是基于函数回调。
2. 拦截器不依赖与servlet容器,过滤器依赖与servlet容器。
3. 拦截器只能对action请求起作⽤,⽽过滤器则可以对⼏乎所有的请求起作⽤。
4. 拦截器可以访问action上下⽂、值栈⾥的对象,⽽过滤器不能访问。
5. 在action的⽣命周期中,拦截器可以多次被调⽤,⽽过滤器只能在容器初始化时被调⽤⼀次
6. 拦截器可以获取IOC容器中的各个bean,⽽过滤器就不⾏,这点很重要,在拦截器⾥注⼊⼀个service,可以调⽤业务逻辑。
执⾏顺序:
过滤前 - 拦截前 - Action处理 - 拦截后 - 过滤后。个⼈认为过滤是⼀个横向的过程,⾸先把客户端提交的内容进⾏过滤(例如未登录⽤户不能访问内部页⾯的处理);过滤通过后,拦截器将检查⽤户提交数据的验证,做⼀些前期的数据处理,接着把处理后的数据发给对应的Action;Action处理完成返回后,拦截器还可以做其他过程(还没想到要做啥),再向上返回到过滤器的后续操作。
拦截器与过滤器使⽤场景:
SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,⽤于对处理器进⾏预处理和后处理。
1、⽇志记录:记录请求信息的⽇志,以便进⾏信息监控、信息统计、计算PV(Page View)等。
2、权限检查:如登录检测,进⼊处理器检测检测是否登录,如果没有直接返回到登录页⾯;
3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进⼊处理器之前记录开始时间,在处理完后记录结束时间,从⽽得到该请求的处理时间(如果有反向代理,如apache可以⾃动记录);
4、通⽤⾏为:读取cookie得到⽤户信息并将⽤户对象放⼊请求,从⽽⽅便后续流程使⽤,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使⽤拦截器实现。
5、OpenSessionInView:如hibernate,在进⼊处理器打开Session,在完成后关闭Session。
拦截器是AOP的⼀种实现,底层通过动态代理模式完成。
总结:
1.过滤器:所谓过滤器顾名思义是⽤来过滤的,在Java web中,你传⼊的request,response提前过滤掉⼀些信息,或者提前设置⼀些参数,然后再传⼊servlet或者struts的action进⾏业务逻辑,⽐如过滤掉⾮法url(不是login.do的地址请求,如果⽤户没有登陆都过滤掉),或者在传⼊servlet或者struts的action前统⼀设置字符集,或者去除掉⼀些⾮法字符(聊天室经常⽤到的,⼀些骂⼈的话)。filter 流程是线性的, url传来之后,检查之后,可保持原来的流程继续向下执⾏,被下⼀个filter, servlet接收等.
2.java的拦截器主要是⽤在插件上,扩展件上⽐如 hivernate spring struts2等有点类似⾯向切⽚的技术,在⽤之前先要在配置⽂件即xml⽂件⾥声明⼀段的那个东西。
相关文章:
http请求方式过滤器与拦截器的区别
get:获取查询数据(查询)post:数据的提交,新增操作(增加)put:向服务端发送数据、改变信息,侧重点在于对数据的修改操作delete:数据库数据的删除head:一般用来判断类型、根据返回状态确定资源是否存在、资源是否更新以及更新的时间等 过滤器与拦截器的区别…...
大语言模型初学者指南 (2023)
大语言模型 (LLM) 是深度学习的一个子集,它正在彻底改变自然语言处理领域。它们是功能强大的通用语言模型,可以针对大量数据进行预训练,然后针对特定任务进行微调。这使得LLM能够拥有大量的一般数据。如果一个人想将LLM用于特定目的ÿ…...
日常生活小技巧 -- 单位换算
开发过程中经常需要需要单位换算的地方。 可以使用工具进行转换: 工具:单位转换 常用单位: 1、角度转换 1弧度(rad) 180/PI 度(deg) 57.29577951308232 度(deg) 1度…...
利用深度蛋白质序列嵌入方法通过 Siamese neural network 对 virus-host PPIs 进行精准预测【Patterns,2022】
研究背景: 病毒感染可以导致多种组织特异性损伤,所以 virus-host PPIs 的预测有助于新的治疗方法的研究;目前已有的一些 virus-host PPIs 鉴定或预测方法效果有限(传统实验方法费时费力、计算方法要么基于蛋白结构或基因ÿ…...
opencv 车牌号的定位和识别+UI界面识别系统
目录 一、实现和完整UI视频效果展示 主界面: 识别结果界面:(识别车牌颜色和车牌号) 查看历史记录界面: 二、原理介绍: 车牌检测->图像灰度化->Canny边缘检测->膨胀与腐蚀 边缘检测及预处理…...
如何使用CSS实现一个自适应两栏布局,其中一栏固定宽度,另一栏自适应宽度?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用Float属性⭐ 使用Flexbox布局⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为那些对Web开发感…...
【PostgreSQL】导出数据库表(或序列)的结构和数据
导出 PostgreSQL 数据库的结构和数据 要导出 PostgreSQL 数据库的结构和数据,你可以使用 pg_dump 命令行工具。pg_dump 可以生成一个 SQL 脚本文件,其中包含了数据库的结构(表、索引、视图等)以及数据。下面是如何使用 pg_dump 导…...
Arcgis colorRmap
arcgis中colorRmap对应的名称: 信息来源:https://developers.arcgis.com/documentation/common-data-types/raster-function-objects.htm 在arcpy中使用方法: import arcpy cr arcpy.mp.ColorRamp("Yellow to Red")python中 ma…...
[JDK8环境下的HashMap类应用及源码分析] capacity实验
🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄、CSDN博客专家 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 系列文章目录 [Java基础] StringBuffer 和 StringBuilder 类应用及源码分析 [Java基础] 数组应用…...
【自动驾驶】TI SK-TDA4VM 开发板上电调试,AI Demo运行
1. 设备清单 TDA4VM Edge AI 入门套件【略】USB 摄像头(任何符合 V4L2 标准的 1MP/2MP 摄像头,例如:罗技 C270/C920/C922)全高清 eDP/HDMI 显示屏最低 16GB 高性能 SD 卡连接到互联网的 100Base-T 以太网电缆【略】UART电缆外部电源或电源附件要求: 标称输出电压:5-20VDC…...
基于LOF算法的异常值检测
目录 LOF算法简介Sklearn官网LOF算法应用实例1Sklearn官网LOF算法应用实例2基于LOF算法鸢尾花数据集异常值检测读取数据构造数据可视化,画出可疑异常点LOF算法 LOF算法简介 LOF异常检测算法是一种基于密度的异常检测算法,基于密度的异常检测算法主要思想…...
软考-系统可靠性原理
系统可靠性原理...
【Unity】【Amplify Shader Editor】ASE入门系列教程第二课 硬边溶解
黑色为0,白色为1 新建材质(不受光照影响) 拖入图片 设置 添加节点: 快捷键:K 组合通道:快捷键 V 完成图...
对神经网络理解的个人记录
对神经网络理解的个人记录 一、 神经网络为什么可以拟合函数、非线性函数二、 用向量表示特征(语音、文本、视频)。然后如何计算向量之间的相似度2.1 欧氏距离的计算2.2 点积运算2.3 余弦相似度计算一、 神经网络为什么可以拟合函数、非线性函数 第一个小短片:讲解神经网络为什…...
华为数通方向HCIP-DataCom H12-821题库(单选题:61-80)
第61题 关于 BGP 的Keepalive报文消息的描述,错误的是 A、Keepalive周期性的在两个BGP邻居之间发送 B、Keepalive报文主要用于对等路由器间的运行状态和链路的可用性确认 C、Keepalive 报文只包含一个BGP数据报头 D、缺省情况下,Keepalive 的时间间隔是180s 答案ÿ…...
Unity带有时效性的数据存储
Unity带有时效性的数据存储 引言 在Unity项目开发中,有时候会遇到带有时效性的数据存储,比如账号信息、token等,都是具有时效性的,这时候我们就需要在这些信息过期的时候将对应的信息作废。 实现 这个功能怎么实现呢ÿ…...
vue 子组件 emit传递事件和事件数据给父组件
1 子组件通过emit 函数 传递事件名init-complete 和 数据dateRange this.$emit(init-complete, dateRange) 2 父组件 创建方法 接收数据 handleInitComplete(dateRange) {} 3 父组件 创建的方法 和 子组件事件绑定 <component :is"currentComponent" :passOb…...
Zenity 简介
什么使 Zenity Zenity 是一个开源的命令行工具,它提供了一种简单的方式来创建图形化的用户界面(GUI)对话框,以与用户进行交互。它基于 GTK 库,可以在 Linux 和其他 UNIX-like 系统上使用。 Zenity 可以通过命令行或脚…...
c# 数组反转
一个数组是{1,2,3,4,5,6},把它变成{6,5,4,3,2,1} 1.创建一个和原数组长度类型一样的数组来接收反转的数据 private static void Main(string[] a…...
CSS学习笔记01
CSS笔记01 什么是CSS CSS(Cascading Style Sheets ):层叠样式表,也可以叫做级联样式表,是一种用来表现 HTML 或 XML 等文件样式的计算机语言。字体,颜色,边距,高度,宽度…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Oracle查询表空间大小
1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
