srtvlet filter

Filter,过滤器,顾名思义,即是对数据等的过滤,预处理过程。为什么要引入过滤器呢?在平常访问网站的时候,有时候发一些敏感的信息,发出后显示时 就会将敏感信息用*等字符替代,这就是用过滤器对信息进行了处理。这只是一个简单的例子,当然,过滤器那么强大,它的功能也不可能局限于此,它不仅能预处 理数据,只要是发送过来的请求它都是可以预处理的,同时,它还可以对服务器返回的响应进行预处理,这样,大大减轻了服务器的压力。例如,实现URL级别的 权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。下面来详细介绍一下过滤器。

过滤作用,对从客户端向服务器端发送的请求进行过滤,也可以对服务器端返回的响应进行处理。它使用户可以改变一个request和修改一个 response.。Filter 不是一个servlet,它不能产生一个response,但是它能够在一个request到达servlet之前预处理request,也可以在 response离开servlet时处理response。换句话说,filter其实是客户端与servlet中间的一个传递者,并且它可以对要传递 的东西进行修改。

 

 

 

过滤器如何实现拦截

  • 当客户端发生请求后,在HttpServletRequest 到达Servlet 之前,过滤器拦截客户的HttpServletRequest 。 
  • 根据需要检查HttpServletRequest ,也可以修改HttpServletRequest 头和数据。 
  • 在过滤器中调用doFilter方法,对请求放行。请求到达Servlet后,对请求进行处理并产生HttpServletResponse发送给客户端。
  • 在HttpServletResponse 到达客户端之前,过滤器拦截HttpServletResponse 。 
  • 根据需要检查HttpServletResponse ,可以修改HttpServletResponse 头和数据。
  • 最后,HttpServletResponse到达客户端。

Filter的生命周期

(1)Filter接口中有三个重要的方法。

  • init()方法:初始化参数,在创建Filter时自动调用。当我们需要设置初始化参数的时候,可以写到该方法中。
  • doFilter()方法:拦截到要执行的请求时,doFilter就会执行。这里面写我们对请求和响应的预处理。
  • destroy()方法:在销毁Filter时自动调用。

 

(2)Filter的生命周期

    Filter的创建和销毁由web服务器控制。

  • 服务器启动的时候,web服务器创建Filter的实例对象,并调用其init方法,完成对象的初始化功能。filter对象只会创建一次,init方法也只会执行一次。
  • 拦截到请求时,执行doFilter方法。可以执行多次。
  • 服务器关闭时,web服务器销毁Filter的实例对象。

 

转载于:https://www.cnblogs.com/pawn2018/p/10708764.html

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

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

相关文章

mysql怎么合并行_mysql怎么合并行

mysql合并行的方法:使用函数【GROUP_CONCAT()】,代码为【SELECT am.activeId,GROUP_CONCAT(m.modelName SEPARATOR ‘,’) modelName】。【相关学习推荐:mysql学习】mysql合并行的方法:一个字段可能对应多条数据,用mys…

ubuntu 14 编译ARM g2o-20160424

1. 安装eigen sudo apt-get install libeigen3-dev sudo apt-get install libsuitesparse-dev sudo apt-get install libqglviewer-dev 对于ARM版本,可以下载http://eigen.tuxfamily.org,之后放置在toolchain可以找到的三方库位置处,我使用的…

将旧项目从Ant迁移到Maven的4个简单步骤

一段时间以来,我们一直在考虑将构建从蚂蚁移植到Maven。 它发生在上个月,实际上比我们预期的要简单。 根据我的经验,这里简要介绍了我们遵循的步骤。 我们的应用程序是一个具有多个框架和技术的企业Web应用程序构建,并作为单个WAR…

浅谈servlet与jsp的关系

servlet是用java语言编写的,是一个java类。主要功能是用来接受、处理客户端的请求,并把处理结果返回到客户端显示。Jsp是servlet发展后期的产物。在没有jsp之前,servlet利用输出流动态生成整个HTML页面,输出内容包括每一个HTML标签…

折腾Java设计模式之建造者模式

博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, allowing the same construction process to create various representations. 将复杂对象的构造与其表现分离,允许相同的构…

python小甲鱼练习题答案_小甲鱼Python第 013讲元组:戴上了枷锁的列表 | 课后测试题及参考答案...

测试题:0. 请用一句话描述什么是列表?再用一句话描述什么是元组?列表:一个大仓库,可以随时往里面添加和删除任何东西。元祖:封闭的列表,一旦定义,就不可改变(不能添加、删除或修改)1…

获得的经验:ActiveMQ,Apache Camel和连接池

每隔一段时间,我会遇到一个与ActiveMQ的连接和池相关的有趣问题,而今天,我想讨论一些并不总是很清楚的问题,并且在使用ActiveMQ和Camel JMS时可能会导致您大量饮酒。 并不是说您无论如何都不会在使用ActiveMQ和Camel时大量喝酒………

羊车门问题

题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么。参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许…

webapp优化

1. 优化前提: 业务架构与数据库设计 2. 单页web应用 : ExtJs backbone ng avalon 框架: React Native , ionic , Mui, metror,WeeX,device one Meteor(版本: 1.0) 的另一个特点是它会通过手机内存中运行的 mi…

高版本Sqlserver数据库导入低版本Sqlserver

今天想跑一个关于java网站的demo,结果在附加数据库项这一块出现问题,例程的数据库用的是sqlserver2014,而我的是2008,添加数据库出现错误。经过一番查找,也找到某人写的一些博客上的解决方案,不过不是很清楚…

mysql删除bin-log_删除MYSQl BIN-LOG 日志

1.查找当前有哪些二进制日志文件:mysql> show binary logs;-----------------------------| Log_name | File_size |-----------------------------| mysql-bin.000001 | 1357315 || mysql-bin.000002 | 117 || mysql-bin.000003 | 404002 ||…

WildFly 8与GlassFish 4 –选择哪个应用服务器

自从我上一个博客以来已经有一段时间了。 我显然忙于其他事情,包括我的主要工作。 在对应用服务器的正确选择提出更多疑问之后,是时候再次讨论这个话题并分享我的想法。 该博客上最常阅读的文章之一是有关选择哪种Java EE 6应用程序服务器的文章 。 我一…

Vue--- 一点车项目

一点车项目 cli脚手架 组件化 数据交互路由指向存入数据库 前端页面 cli脚手架的安装与搭建 创建对应包 页面组件化编辑 (共享组件:摘取出来一模一样的组件重用)(私有组件:在自己的组件写入 引入共享组件) 数据交…

设计模式:模式或反模式,这就是问题

我最近遇到了Wiki页面“ Anti-pattern” ,其中包含详尽的反模式列表。 其中一些对我来说很明显。 他们中的一些让我想了一下,其他的让我想了更多。 然后,我开始在页面上查找反模式“ singleton”,但找不到。 (文本搜索…

Redis的散列类型

Redis是采用字典结构以key-value的形式存储数据的,在散列类型(所谓的hash)中的value也是一种字典结构。如果用关系表结构去理解,就是key为对象,value是属性和属性值。如下图: 所以使用散列(hash…

python configparser 注释_使用configpar添加注释

如果您想去掉尾随的,可以按照atomopter的建议将ConfigParser.ConfigParser子类化,并实现自己的write方法来替换原来的方法:import sysimport ConfigParserclass ConfigParserWithComments(ConfigParser.ConfigParser):def add_comment(self, …

easy html css tree 简单的HTML css导航树

code: show: 更多专业前端知识,请上 【猿2048】www.mk2048.com

使用Maven和WebLogic 12c开发Java EE应用程序

WebLogic Server 12c现在对Maven提供了很好的支持。 不过,此文档有点被隐藏,因此这里是直接链接http://docs.oracle.com/middleware/1212/core/MAVEN 总而言之,Oracle没有为其服务器工件提供公共的Maven存储库管理器托管。 但是,…

Java实现并发线程中线程范围内共享数据

---恢复内容开始--- 利用Map,HashMap键值对的数据结构,实现并发线程中线程范围内数据共享。 package cn.qy.heima2;import java.util.HashMap; import java.util.Map; import java.util.Random;public class ThreadScopeShareData {private static int …

Aspose 插件

百度:Aspose Aspose.Cells.dll Aspose.Slides.dll Aspose.Words.dll 转载于:https://www.cnblogs.com/Tpf386/p/10001814.html