java过滤器的优点好处,Servlet过滤器概念特点等详谈

Servlet过滤器概念特点等详谈

一、Servlet过滤器的概念:

◆Servlet过滤器是在Java Servlet规范2.3中定义的,它能够对Servlet容器的请求和响应对象进行检查和修改。

◆Servlet过滤器本身并不产生请求和响应对象,它只能提供过滤作用。Servlet过期能够在Servlet被调用之前检查Request对象,修改Request Header和Request内容;在Servlet被调用之后检查Response对象,修改Response Header和Response内容。

Servlet过期负责过滤的Web组件可以是Servlet、JSP或者HTML文件。

二、Servlet过滤器的特点:

◆Servlet过滤器可以检查和修改ServletRequest和ServletResponse对象

◆Servlet过滤器可以被指定和特定的URL关联,只有当客户请求访问该URL时,才会触发过滤器

◆Servlet过滤器可以被串联在一起,形成管道效应,协同修改请求和响应对象

三、Servlet过滤器的作用:

◆查询请求并作出相应的行动。

◆阻塞请求-响应对,使其不能进一步传递。

◆修改请求的头部和数据。用户可以提供自定义的请求。

◆修改响应的头部和数据。用户可以通过提供定制的响应版本实现。

◆与外部资源进行交互。

四、Servlet过滤器的适用场合:

◆认证过滤

◆登录和审核过滤

◆图像转换过滤

◆数据压缩过滤

◆加密过滤

◆令牌过滤

◆资源访问触发事件过滤

◆XSL/T过滤

◆Mime-type过滤

五、Servlet过滤器接口的构成:

所有的Servlet过滤器类都必须实现javax.servlet.Filter接口。这个接口含有3个过滤器类必须实现的方法:

◆init(FilterConfig):

这是Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。在这个方法中可以读取web.xml文件中Servlet过滤器的初始化参数

◆doFilter(ServletRequest,ServletResponse,FilterChain):

这个方法完成实际的过滤操作,当客户请求访问于过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法。FilterChain参数用于访问后续过滤器

◆destroy():

Servlet容器在销毁过滤器实例前调用该方法,这个方法中可以释放Servlet过滤器占用的资源

六、Servlet过滤器的创建步骤:

◆实现javax.servlet.Filter接口

◆实现init方法,读取过滤器的初始化函数

◆实现doFilter方法,完成对请求或过滤的响应

◆调用FilterChain接口对象的doFilter方法,向后续的过滤器传递请求或响应

◆销毁过滤器

七、Servlet过滤器对请求的过滤:

◆Servlet容器创建一个过滤器实例

◆过滤器实例调用init方法,读取过滤器的初始化参数

◆过滤器实例调用doFilter方法,根据初始化参数的值判断该请求是否合法

◆如果该请求不合法则阻塞该请求

◆如果该请求合法则调用chain.doFilter方法将该请求向后续传递

八、Servlet过滤器对响应的过滤:

◆过滤器截获客户端的请求

◆重新封装ServletResponse,在封装后的ServletResponse中提供用户自定义的输出流

◆将请求向后续传递

◆Web组件产生响应

◆从封装后的ServletResponse中获取用户自定义的输出流

◆将响应内容通过用户自定义的输出流写入到缓冲流中

◆在缓冲流中修改响应的内容后清空缓冲流,输出响应内容

九、Servlet过滤器的发布:

◆发布Servlet过滤器时,必须在web.xml文件中加入﹤filter﹥元素和﹤filter-mapping﹥元素。

◆filter元素用来定义一个过滤器://属性                   含义

filter-name    指定过滤器的名字

filter-class    指定过滤器的类名

init-param    为过滤器实例提供初始化参数,可以有多个

◆filter-mapping元素用于将过滤器和URL关联://属性                     含义

filter-name    指定过滤器的名字

url-pattern    指定和过滤器关联的URL,为”/*”表示所有URL

十一、Servlet过滤器使用的注意事项

◆由于Filter、FilterConfig、FilterChain都是位于javax.servlet包下,并非HTTP包所特有的,所以其中所用到的请求、响应对象ServletRequest、ServletResponse在使用前都必须先转换成HttpServletRequest、HttpServletResponse再进行下一步操作。

◆在web.xml中配置Servlet和Servlet过滤器,应该先声明过滤器元素,再声明Servlet元素

◆如果要在Servlet中观察过滤器生成的日志,应该确保在server.xml的localhost对应的﹤host﹥元素中配置如下﹤logger﹥元素:﹤LoggerclassName= “org.apache.catalina.logger.FileLogger”

directory= “logs”prefix= “localhost_log.”suffix=”.txt”

timestamp= “true”/﹥

Servlet过滤器的情况就向你介绍到这里,那么你对Servlet过滤器是否有了了解呢?

什么是Servlet以及常用Servlet API有哪些

JSP Servlet开发最初那点事

Java Servlet API文档实用说明

整合Apache中JSP和PHP

JSP和Servlet中的几个编码的作用及原理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/501536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ionic 支持float吗_机器人协会 | 一起拼机器人吗?

数字生活改变世界科技创新引领未来机器人协会开始招新啦~~东莞职业技术学院机器人协会成立于2016年,由东莞职业技术学院电子与电气工程学院支持,由工业机器人技术专业的学生成立。协会位于东莞市东莞职业技术学院实训楼6C4-203。协会成员于2018年获得世界…

JAVA入门级教学之(this关键字)

this关键字 关于java语言中的this关键字 1.this是一个关键字,翻译为:这个 2.this是一个引用,this是一个变量,this变量中保存了内存地址指向了自身,this存储在JVM堆内存java对象内部 3.创建100个java对象&#xf…

qsplitter 折叠_河南断桥折叠门效果

断桥折叠门效果。天津庭窗之星建材优秀的表面处理型材工艺,人性化的设计理念,精湛的制造工艺。产品具有环保,耐用,耐腐蚀不褪色,安全、保温、隔音等特性。阳光房框架结构不坚固 阳光房框架结构不坚固,是导致…

php 计划任务管理,使用php管理crontab计划任务

1.使用php-crontab-manager管理计划任务要求 PHP>5.3使用方法举例use php\manager\crontab\CrontabManager;$crontab new CrontabManager();$crontab->enableOrUpdate(/tmp/my/crontab.txt);$crontab->save();添加一个简单的计划任务:use php\manager\crontab\Cronta…

串行口方式二 波特率_一文就能看懂“串口通讯”的概念、3个通讯方式、9大注意事项...

串行通信是数据处理设备和外围设备之间最广泛使用的信息传输方法。每个设备可能是您的个人电脑或移动设备在运行串行协议。该协议是一种安全可靠的通信形式,由源主机(发送方)和目的主机(接收方)制定一套规则。为了获得更好的洞察力,我已经解释了串行通信…

冯提莫在B站的受欢迎度

本来以为冯提莫在离开斗鱼之后,离开了那些喜欢她的粉丝之后!很难发展起来,但谁能想到冯提莫在离开斗鱼之后,加入了B站,之前的老粉丝们也一下子涌入了B站,为B站带来了很多的流量!同样冯提莫也收获…

php中如何将验证码放入页面,如何在php中生成验证码图片

1.获取生成验证码字体:在php文件路径新建一个fonts文件夹,里面有字体文件。//判定字体资源if(empty($fonts))$fonts"arial.ttf";//确认字体路径$fonts__DIR__."/fonts/".$fonts;$fontsstr_replace("/","\\",$fo…

无法确定域的标识_标识标牌设计的基本要求:虽然是基本要求,你未必也都知道哦...

标识设计不仅是实用物的设计,也是一种图形艺术的设计。标识圈认为标识标牌设计须充分考虑其实现的可行性,标识设计不是要与众不同,而是要善与人同,能被受众迅速归类。当我们在大街上看到一个路标,一个招牌,它给到我的只有一个信息…

JAVA入门级教学之(static关键字)

static关键字: package com.lbj.javase07; /*** "中国人"类* * 什么时候成员变量声明为实例变量呢?* -所有对象都有这个属性,但是这个属性的值会随着对象的变化而变化【不同对象的这个属性具体的值不同】* * 什么时候成员变量声…

怎样配oracle环境,oracle配置会话环境(set命令)

一般在SQL>下进行SQLPLUS操作,都需要进行必要的环境设置才能完成我们所需要的输出。所有环境的设置由SET命令加相应的环境变量来完成。下面是常用的环境设置:2.5.1ARRAYSIZE(取回的行数)SET ARRAY[SIZE]{integer}一次可以提取(Fetch)的行的数目&#…

rpgmvp图片怎么看_拼多多商城图片和视频下载不了怎么办,看这里。。。。

最近拼多多商城规则变动,很多软件都不能下载拼多多商城图片和视频。小编今天试了一种新的方法可以同时下载商城里的图片和视频。现在一起来看看是如何操作的吧。准备软件:下图高手高级版软件实例操作步骤1、打开拼多多商城,按F12进入开发者工…

JAVA入门级教学之(static静态代码块)

定义一个测试类测试static静态代码块: package com.lbj.javase08; /*** 可以使用static关键字来定义"静态代码块"* * 1.语法格式:* static{* java语句;* }* * 2.静态代码块在类加载的时候执行,并且只执行一次* * 3.静态…

oracle关闭rs,Oracle 关闭(shutdown immediate)时hang住

昨天晚上生产的两套10.2.0.4的数据库修改了参数,需要重启。在发出shutdown immediate命令后等了大概10分钟的时间,数据库还没有down下来。检查后台alert日志,发现从开始shutdown到最后只输出几条日志,其中最后一条日志是&#xff…

web大作业介绍自己的家乡_襄阳市恒大名都小学2018—2019年度寒假实践作业

亲爱的同学们: 经过一个学期的成长,我们带着满满的收获开启了期盼已久的寒假生活。那么如何让这个寒假生活变得多姿多彩,充满意义呢?为了让我们度过一个健康、愉快、长知识、增才干,获得幸福感的寒假,…

JAVA入门级教学之(方法重写/方法重载)

方法重写: package com.lbj.javase10;public class Bird extends Animal {public void move(){System.out.println("鸟会飞");} }package com.lbj.javase10;public class Cat extends Animal{public void move(){System.out.println("猫会爬")…

oracle 异常返回值,oracle - java.sql.SQLException:无效的列类型:调用具有行类型返回值的函数时为1111 - 堆栈内存溢出...

我在一个名为“ MyPackage”的Oracle软件包中有一个函数:FUNCTION MyFunction(name IN VARCHAR2) RETURN MyTable%rowtype;我正在尝试通过JDBC调用它。CallableStatement cs connection.prepareCall("{ ? call MyPackage.MyFunction(?) }");cs.regist…

台式电脑键盘按键错乱_收藏篇:电脑键盘上的每个按键的作用和命令你都会用么...

办公,家用,设计,游戏等等都了解电脑键盘上的全部功能么?F1帮助F2改名F3搜索F4地址F5刷新F6切换F10菜单CTRLA全选CTRLC复制CTRLX剪切CTRLV粘贴CTRLZ撤消CTRLO打开SHIFTDelete永久删除Delete删除ALTENTER属性ALTF4关闭CTRLF4关闭ALT…

docker 安装 oracle12,Centos7下利用docker安装oracle12c

实战在windows局域网下可以进行连接,并执行sql语句:执行结果具体的步骤如下:1、在centos7下安装docker[rootlocalhost /]# yum install docker2、启动docker[rootlocalhost /]# systemctl start docker.service3、查找docker镜像可以在docker…

JAVA入门级教学之(多态)

JAVA入门级教学之(多态) 怎么理解多态:你本身就该喊你爹叫爹,你让你爹叫你爹就是强制认做爹 多态的使用: A a new D(); D类继承A类,父类型引用指向子类型对象 * 关于java语言汇总的多态语法机制&#x…

beanutils.copyproperties属性值丢失_[ASP.NET Core 3.1]浏览器嗅探解决部分浏览器丢失Cookie问...

今天的干货长驱直入,直奔主题看了前文的同学们应该都知道,搜狗、360等浏览器在单点登录中反复重定向,最终失败报错。原因在于,非Chrome80浏览器不识别Cookie上的SameSitenone属性值,导致认证Cookie在后续请求中被抛弃。截至2020/3…