java---servlet与filter的联系与区别
filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。
最近使用插装的时候,改用cookie对计算机进行识别,加入了过滤,仔细研究了一下servlet和filter,区别主要是:
过滤器的生命周期一般都要经过下面三个阶段:
servlet的特点是:
初始化
当容器第一次加载该过滤器时,init() 方法将被调用。该类在这个方法中包含了一个指向 Filter Config 对象的引用。我们的过滤器实际上并不需要这样做,因为其中没有使用初始化信息,这里只是出于演示的目的。
过滤
过滤器的大多数时间都消耗在这里。doFilter方法被容器调用, 同时传入分别指向这个请求/响应链中的 Servlet Request、Servlet Response 和 Filter Chain 对象的引用。然后过滤器就有机会处理请求,将处理任务传递给链中的下一个资源(通过调用 Filter Chain 对象引用上的 doFilter方法),之后在处理控制权返回该过滤器时处理响应。
析构
容器紧跟在垃圾收集之前调用 destroy()方法,以便能够执行任何必需的清理代码。
关于chain.doFilter(request,response)他的作用是将请求转发给过滤器链上下一个对象。这里的下一个指的是下一个filter,如果没有filter那就是你请求的资源。 一般filter都是一个链,web.xml 里面配置了几个就有几个。一个一个的连在一起
request -> filter1 -> filter2 ->filter3 -> .... -> request resource.
filter是链式操作,那么在处理单个filter时必须最后跳转到servlet对请求进行响应。
如果走chain的话,通过chain.doFilter(request,response)这个方法会立即跳转到被拦截的servlet并且执行完还要再返回filter.chain相当于一扇门,从这扇门出去再从这扇门回来.调用filter的方法就是在web.xml中配置,需要配置一个与你需要拦截的servlet相同的url-pattern.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<!-- 配置一个过滤器 -->
<filter>
<filter-name>suibianxie</filter-name>
<filter- class >com.etoak.filter.MyEncoding</filter- class >
<!-- 配置一个私有参数 --> <init-param> <param-name>mycode</param-name> <param-value>gbk</param-value> </init-param> </filter>
<!-- 拦截的先后顺序和mapping的顺序有关 --> <filter-mapping> <filter-name>suibianxie</filter-name>
<!-- 注意这里和要拦截的servlet的url-pattern必须一致,等于是过滤器 抢在servlet之前拦截住了 -->
<url-pattern>/servlet/Test</url-pattern> </filter-mapping>
<!-- 配置第二个过滤器 -->
<filter>
<filter-name>suibianxie2</filter-name>
<filter- class >com.etoak.filter.Naming</filter- class >
</filter>
<filter-mapping>
<filter-name>suibianxie2</filter-name>
<url-pattern>/servlet/Test</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>Test</servlet-name>
<servlet- class >com.etoak.servlet.Test</servlet- class >
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/servlet/Test</url-pattern>
</servlet-mapping>
|
以上所述是小编给大家介绍的Servlet和Filter之间的区别与联系,希望对大家有所帮助!
转载于:https://www.cnblogs.com/w-wfy/p/6416134.html
java---servlet与filter的联系与区别相关推荐
- java中servlet filter_lua学习笔记(二)仿java servlet中Filter功能
2)代码 Filter.lua--[[ 过滤器接口 ]]-- local FilterChain = require("FilterChain") local Filter = { ...
- Java Servlet中Filter过滤器的原理以及使用方式
详细介绍了Java Web Servlet中的Filter过滤器的原理以及常见用法. 文章目录 1 Filter接口 1.1 过滤器的生命周期 1.2 doFilter过滤方法 2 Filter的使用 ...
- struts1-2,springMVC原理基本对比(单例,多例)-servlet与filter区别
2019独角兽企业重金招聘Python工程师标准>>> 最近做项目用到了struts2,之前一直是用struts1和springMVC.感觉到了struts2从很大程度上和这两个还是 ...
- servlet和filter的区别
从四个方面来区分: 概念 servlet是一种运行在服务器端的Java应用程序,独立于平台和协议,可以动态的生成web页面,它工作于客户端请求和服务器的中间层 filter是一个可以复用的代码片段,可 ...
- Java+Servlet+filter+javascript+html+jsp登入注册更新个人信息
eclipse+Java+Servlet+filter+javascript+html+jsp+EL登入注册更新个人信息 数据库sql用vs2008或者mysql用mysql 代码粗糙,提示信息未处理 ...
- java servlet filter_Java的Servlet、Filter、Interceptor、Listener
写在前面: 使用Spring-Boot时,嵌入式Servlet容器可以通过扫描注解(@ServletComponentScan)的方式注册Servlet.Filter和Servlet规范的所有监听器( ...
- java servlet filter_Java Servlet Filter
做web开发的人对于Filter应该不会陌生,一直在很简单的使用,但是一直没有系统的总结一下,随着年纪的慢慢长大,喜欢总结一些事情,下面说说我对Filter的理解,官方给出的Filter的定义是在请求 ...
- Java的Servlet、Filter、Interceptor、Listener
写在前面: 使用Spring-Boot时,嵌入式Servlet容器可以通过扫描注解(@ServletComponentScan)的方式注册Servlet.Filter和Servlet规范的所有监听器( ...
- java nodefilter类,Java Servlet Filter过滤器概述
Java Servlet Filter过滤器概述 Filter是Servlet的过滤器,是Servlet 2.3规范中新增加的一个功能,主要用于完成一些通用的操作,如编码的过滤.判断用户的登录状态等. ...
- Java Servlet Filter
做web开发的人对于Filter应该不会陌生,一直在很简单的使用,但是一直没有系统的总结一下,随着年纪的慢慢长大,喜欢总结一些事情,下面说说我对Filter的理解,官方给出的Filter的定义是在请求 ...
最新文章
- Jsp/Servlet:实现文件上传与下载
- python推荐入门书籍-这些都是Python官方推荐的最好的书籍(推荐)
- SQL语言包含4个部分
- 日志分析系统分类有哪些_SEO优化中网站日志起到的重要性作用
- 【STM32】SPI程序示例
- hadoop学习4 调测错误备案
- 初探asp.net异步编程之await
- 蓝桥杯 ALGO-96 算法训练 Hello World!
- python nonlocal的用法_python global和nonlocal用法解析
- 顺序容器和关联容器添加新元素方法详解
- 移动端常用Axure组件库 元件库下载 包含微信 支付宝常用组件元素
- 求oracle学习资料(最好是视频)
- 阿龙学堂-Java手机号码归属地查询
- Win10x64-WDM设备驱动开发入门 - 第六章 VMware-Win10x64+WDK10+VS2015/2019环境搭建与双机调试
- 也致第一次安装Rime的你
- PSB格式转换太麻烦?Aspose.PSD教你用代码将大型PSB文件转换为PDF/JPEG格式
- java毕业设计——基于java+JDBC+sqlserver的固定资产管理系统设计与实现(毕业论文+程序源码)——固定资产管理系统
- IDEA插件-XTools
- java的paypal支付demo_paypal支付demo
- Android Studio挂载第三方模拟器
热门文章
- auto cad 打印颜色变浅_CAD初学者最容易忽视的CAD打印线宽问题,你“中枪”了吗?...
- js密码强度正则表达式_相信我,这20个正则表达式,能让你少写1000多行代码,建议收藏...
- Oracle中将0x1D转为字符,orcle導入大數據文件
- PySpark : Structured Streaming
- 翻译: 4.4. 模型选择Model Selection、欠拟合Underfitting和过拟合Overfitting pytorch
- Label高度根据内容变化SnapKi
- 关于linux操作系统的特点,LINUX操作系统有哪些概念和特点?
- python爬虫总结
- 公式推导 11-14
- python的规模有多大_Python项目可以有多大?最多可以有多少行代码?