filter与servlet对照
最近在开java物自,还记得刚开始使用servlet这是一个调试ajax什么时候,然后,我不知道怎么用,你知道写的路径来调用,总是提示404错,,到最后自己一点点的调通了,知道servlet是须要server编译执行,是须要配置web.xml的。到学习filter,发现他们的套路全然是一样的。也须要在web.xml中进行对应的配置。
能够说是基本一样的,我不禁要问,他们之间有什么异同呢。
遇到问题的时候也是学习的时候,我就在网上找了点相关的资料,与大家分享一下:
主要从例如以下四个方面介绍他们之间的差别:
1.概念。
2.生命周期。
3.职责。
4.运行过程。
一、概念:
1、servlet:servlet是一种执行server端的java应用程序,具有独立于平台和协议的特性,而且能够动态的生成web页面,它工作在client请求与server响应的中间层。
2、filter:filter是一个能够复用的代码片段。能够用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应。它仅仅是改动对某一资源的请求,或者改动从某一的响应。
二、生命周期:
1、servlet:servlet的生命周期始于它被装入webserver的内存时,并在webserver终止或又一次装入servlet时结束。servlet一旦被装入webserver,一般不会从webserver内存中删除,直至webserver关闭或又一次结束。
(1)、装入:启动server时载入Servlet的实例;
(2)、初始化:webserver启动时或webserver接收到请求时,或者两者之间的某个时刻启动。
初始化工作有init()方法负责运行完毕;
(3)、调用:从第一次到以后的多次訪问。都是仅仅调用doGet()或doPost()方法;
(4)、销毁:停止server时调用destroy()方法。销毁实例。
2、filter:(一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行)
(1)、启动server时载入过滤器的实例,并调用init()方法来初始化实例。
(2)、每一次请求时都仅仅调用方法doFilter()进行处理。
(3)、停止server时调用destroy()方法,销毁实例。
三、职责
1、servlet:
创建并返回一个包括基于客户请求性质的动态内容的完整的html页面;
创建可嵌入到现有的html页面中的一部分html页面(html片段);
读取client发来的隐藏数据;
读取client发来的显示数据;
与其它server资源(包含数据库和java的应用程序)进行通信;
通过状态代码和响应头向client发送隐藏数据。
2、filter:
filter可以在一个请求到达servlet之前预处理用户请求。也可以在离开servlet时处理http响应:
在运行servlet之前。首先运行filter程序,并为之做一些预处理工作。
依据程序须要改动请求和响应;
在servlet被调用之后截获servlet的运行
四、差别:
1,servlet 流程是短的,url传来之后。就对其进行处理,之后返回或转向到某一自己指定的页面。它主要用来在 业务处理之前进行控制.
2,filter 流程是线性的。 url传来之后,检查之后,可保持原来的流程继续向下运行。被下一个filter, servlet接收等,而servlet 处理之后,不会继续向下传递。
filter功能可用来保持流程继续依照原来的方式进行下去。或者主导流程。而servlet的功能主要用来主导流程。
filter可用来进行字符编码的过滤。检測用户是否登陆的过滤,禁止页面缓存等
五、运行流程图:
1、servlet:
2、filter:
总结:
刚刚開始java的学习,对于两者的理解也仅仅有这些了,可是在我的学习过程中,发现事实上不止是有这两个的比較,还有listener和interceptor。他们四者的差别和联系。我如今还没有非常好的把控。等学到的时候一起做总结吧。
版权声明:本文博客原创文章。博客,未经同意,不得转载。
filter与servlet对照的更多相关文章
- springboot之filter/listener/servlet
简介 SpringBoot可以简化开发流程,但是在其中如何使用传统的J2EE servlet/listener/filter呢 @Bean配置 在Configuration类中加入filter和ser ...
- Filter and servlet
filter与servlet的区别与联系呢? 1. Filter 实现javax.servlet.Filter接口,在web.xml中配置与标签指定使用哪个Filter实现类过滤哪些URL链接. ...
- Filter与Servlet的区别与联系
Filter与Servlet的区别与联系 转自 http://blog.csdn.net/gaibian0823/article/details/51027495 在我们写代码时,在web.xml中总 ...
- Spring 管理Filter和Servlet
本文转载自:http://www.open-open.com/lib/view/open1417248512252.html 在使用spring容器的web应用中,业务对象间的依赖关系都可以用cont ...
- weblogic中配置自定义filter和servlet
情景:最近公司产品要接入其它厂商的单点服务器,本来我是在Tomcat上进行测试,使用的是spring boot 的注解方式@webFilter和@webServlet注解写过滤器和servlet类,启 ...
- web容器调用Filter和Servlet顺序学习
web容器调用Filter和Servlet顺序学习 一直对Filter和Servlet在哪里被web容器调用迷惑,后查看tomcat源码,揭开了其面纱.1. 下面是一个简单的时序图: 2. 对上 ...
- filter与servlet的比较
filter与servlet的比较 主要从如下四个方面介绍他们之间的区别: 1.概念. 2.生命周期. 3 ...
- Spring管理Filter和Servlet(在servlet中注入spring容器中的bean)
在使用spring容器的web应用中,业务对象间的依赖关系都可以用context.xml文件来配置,并且由spring容器来负责依赖对象 的创建.如果要在servlet中使用spring容器管理业务对 ...
- A filter or servlet of the current chain does not support asynchronous operations. 错误解决记录
做视频文件上传一直报这个错误: java.lang.IllegalStateException: A filter or servlet of the current chain does not s ...
随机推荐
- 基于visual Studio2013解决C语言竞赛题之1016循环打印矩阵
题目 解决代码及点评 /* 找规律,编程序打印6×6的矩阵: 1 2 3 5 8 13 1 4 9 17 30 51 1 6 19 45 92 173 . . . */ ...
- 纯css实现苹果表盘动画
欢迎訪问我们的博客:http://www.w3ctrain.com/2015/07/06/Apple-Watch-Dials/ 随着苹果表的大量生产,我想.用CSS来实现拨号动画的时候到了. 在这篇文 ...
- tomcat加载时报The web application [/dmscs] created a ThreadLocal with key of type
严重: The web application [/dmscs] created a ThreadLocal with key of type [com.opensymphony.xwork2.inj ...
- 重操JS旧业第三弹:Array
数组在任何编程语言中都是非常重要的,因为函数在最大程度上代表了要实现的功能,而数组则是这些函数所要操作的内存一部分. 1 构建数组 js与其他非脚本语言的灵活之处在于要实现一个目标它可能具有多种方式, ...
- zoj1028-Flip and Shift
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=28 题意:有相互交叉的黑白两种颜色的小球,每一个小球每次可以跳两格:问你是否可以 ...
- POJ 2762推断单个联通(支撑点甚至通缩+拓扑排序)
Going from u to v or from v to u? Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14789 ...
- 关于如何解决谷歌Chrome浏览器空白页的问题
谷歌Chrome浏览器突然不打开任何网页,无论是任何站点(如http://www.baidu.com), 还是Chrome浏览器的设置页面(chrome://settings/), 扩展页面 ( ch ...
- Boost下载安装编译配置使用指南(含Windows和Linux
理论上,本文适用于boost的各个版本,尤其是最新版本1.45.0:适用于各种C++编译器,如VC6.0(部分库不支持),VS2003,VS2005,VS2008,gcc,C++ Builder等.先 ...
- 关于Delphi中的字符串的浅析(瓢虫大作,里面有内存错误的举例)
关于Delphi中的字符串的浅析 只是浅浅的解析下,让大家可以快速的理解字符串. 其中的所有代码均在Delphi7下测试通过. Delphi 4,5,6,7中有字符串类型包括了: 短字符串(Short ...
- Lucene.Net 2.3.1开发介绍 —— 三、索引(一)
原文:Lucene.Net 2.3.1开发介绍 -- 三.索引(一) 在说索引之前,先说说索引是什么?为什么要索引?怎么索引? 先想想看,假如现在有一个文本,我们会怎么去搜索.比如,有一个string ...