[转]web.xml中servlet,filter,listener,interceptor的作用与区别蓝月博宇

1、servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。最早支持Servlet技术的是JavaSoft的JavaWebServer。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:

Filter有如下几个用处。

Filter有如下几个种类。

创建一个Filter只需两个步骤:

下面先介绍一个简单的记录日志的Filter,这个Filter负责拦截所有的用户请求,并将请求的信息记录在日志中。

上面程序实现了doFilter()方法,实现该方法就可实现对用户请求进行预处理,也可实现对服务器响应进行后处理——它们的分界线为是否调用了chain.doFilter(),执行该方法之前,即对用户请求进行预处理;执行该方法之后,即对服务器响应进行后处理。

在上面的请求Filter中,仅在日志中记录请求的URL,对所有的请求都执行chain.doFilter(request,reponse)方法,当Filter对请求过滤后,依然将请求发送到目的地址。如果需要检查权限,可以在Filter中根据用户请求的HttpSession,判断用户权限是否足够。如果权限不够,直接调用重定向即可,无须调用chain.doFilter(request,reponse)方法。

在web.xml文件中我们需要对其需要拦截的请求配置监听范围,或者说过滤哪些url。

12logfilter3com.mine.test.LogFilter456logfilter7/*8

其实struts2本身就依托于一个总过滤器:

struts2org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilterstruts2/*

多个匹配的Filter,是按照其在web.xml中配置的顺序来执行的。

所以这也就是,把自己的Filter或者其他的Filter(比如UrlRewrite的Filter)放在Struts的DispatcherFilter的前面的原因。因为,它们需要在请求被Struts2框架处理之前,做一些前置的工作。当Filter被调用,并且进入了Struts2的DispatcherFilter中后,Struts2会按照在Action中配置的InterceptorStack中的Interceptor的顺序,来调用Interceptor。

3、listener:监听器,从字面上可以看出listener主要用来监听只用。通过listener可以监听web服务器中某一个执行动作,并根据其要求作出相应的响应。通俗的语言说就是在application,session,request三个对象创建消亡或者往其中添加修改删除属性时自动执行代码的功能组件。比如spring的总监听器会在服务器启动的时候实例化我们配置的bean对象、hibernate的session的监听器会监听session的活动和生命周期,负责创建,关闭session等活动。

Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。主要作用是:做一些初始化的内容添加工作、设置一些基本的内容、比如一些参数或者是一些固定的对象等等。

4、interceptor:是在面向切面编程的,就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法,是基于JAVA的反射机制。比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。

servlet、filter、listener是配置到web.xml中(web.xml的加载顺序是:context-param->listener->filter->servlet),interceptor不配置到web.xml中,struts的拦截器配置到struts.xml中。spring的拦截器配置到spring.xml中。

二、生命周期:

(1)、装入:启动服务器时加载Servlet的实例;(2)、初始化:web服务器启动时或web服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有init()方法负责执行完成;(3)、调用:从第一次到以后的多次访问,都是只调用doGet()或doPost()方法;(4)、销毁:停止服务器时调用destroy()方法,销毁实例。

2、filter:(必须实现javax.Servlet.Filter接口,并且必须定义以下三个方法:init(),destory(),doFilter(),空实现也行)(1)、启动服务器时加载过滤器的实例,并调用init()方法来初始化实例;(2)、每一次请求时都只调用方法doFilter()进行处理;(3)、停止服务器时调用destroy()方法,销毁实例。

3、listener:Servlet的监听器Listener,它是实现了javax.servlet.ServletContextListener接口的服务器端程序,它也是随web应用的启动而启动,只初始化一次,随web应用的停止而销毁。

web.xml的加载顺序是:context-param->listener->filter->servlet

4、interceptor:以struts的拦截器为例,加载了struts.xml以后,初始化相应拦截器。当action请求来时调用intercept方法,服务器停止销毁interceptor。

三、职责

1、servlet:

创建并返回一个包含基于客户请求性质的动态内容的完整的html页面;创建可嵌入到现有的html页面中的一部分html页面(html片段);读取客户端发来的隐藏数据;读取客户端发来的显示数据;与其他服务器资源(包括数据库和java的应用程序)进行通信;通过状态代码和响应头向客户端发送隐藏数据。

2、filter:

3、listener:职责如概念。

servlet2.4规范中提供了8个listener接口,可以将其分为三类,分别如下:第一类:与servletContext有关的listner接口。包括:ServletContextListener、ServletContextAttributeListener第二类:与HttpSession有关的Listner接口。包括:HttpSessionListner、HttpSessionAttributeListener、HttpSessionBindingListener、HttpSessionActivationListener;第三类:与ServletRequest有关的Listener接口,包括:ServletRequestListner、ServletRequestAttributeListener

4、interceptor:与过滤器十分相似,通过层层拦截,处理用户的请求和响应。

四、几个区别:

1,servlet流程是短的,url传来之后,就对其进行处理,之后返回或转向到某一自己指定的页面。它主要用来在业务处理之前进行控制.2,filter流程是线性的,url传来之后,检查之后,可保持原来的流程继续向下执行,被下一个filter,servlet接收等,而servlet处理之后,不会继续向下传递。filter功能可用来保持流程继续按照原来的方式进行下去,或者主导流程,而servlet的功能主要用来主导流程。filter可用来进行字符编码的过滤,检测用户是否登陆的过滤,禁止页面缓存等3,servlet,filter都是针对url之类的,而listener是针对对象的操作的,如session的创建,session.setAttribute的发生,在这样的事件发生时做一些事情。可用来进行:Spring整合Struts,为Struts的action注入属性,web应用定时任务的实现,在线人数的统计等4,interceptor拦截器,类似于filter,不过在struts.xml中配置,不是在web.xml,并且不是针对URL的,而是针对action,当页面提交action时,进行过滤操作,相当于struts1.x提供的plug-in机制,可以看作,前者是struts1.x自带的filter,而interceptor是struts2提供的filter.与filter不同点:

(1)不在web.xml中配置,而是在struts.xml中完成配置,与action在一起(2)可由action自己指定用哪个interceptor来在接收之前做事

5,struts2中的过滤器和拦截器的区别与联系:

(1)、拦截器是基于java反射机制的,而过滤器是基于函数回调的。(2)、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器。(3)、拦截器只能对Action请求起作用,而过滤器则可以对几乎所有请求起作用。(4)、拦截器可以访问Action上下文、值栈里的对象,而过滤器不能。(5)、在Action的生命周期中,拦截器可以多次调用,而过滤器只能在容器初始化时被调用一次。

THE END
1.农e行种业进销存系统消息× loading.. 记住密码 登录 ? 2021 济南晟禾网络科技有限公司 版权所有 技术支持:晟禾网络 服务热线:0531-67871203 备案号:鲁ICP备20017360号 https://www.seed-erp.com/
2.农业板块最新行情分析食疗养生最近,农业板块可是引起了不小的关注,不是因为它的绿色多么养眼,而是因为它的“钱”景。你没听错,农业也能赚钱,而且最近还赚得不少呢! 一、种植篇:土里的金子 玉米、小麦:疯狂的黄金粒 大家都知道,粮食是民生的根本。而最近,玉米和小麦这两大粮食巨头可是风光无限。原因嘛,就是全球气候问题导致了许多国家粮食减https://www.zgslys.cn/post/40181.html
3.15类农机报废更新可获补贴单机补贴额度最高提高了8000元9月2日,湖南省“两重”“两新”送解优专项行动新闻发布会在长沙召开。省农业农村厅副厅长龚昕介绍,和以往国家支持农机报废更新政策相比,本次超长期特别国债资金支持政策的补贴范围更宽,补贴额度更高,补贴办理更便捷。 国、省两级支持报废更新补贴农机种类已增加至15类。本轮农机报废更新补贴政策,全国补贴范围新增了播http://zhzizix.org.cn/index.php?c=show&id=98135
4.农资进销存台账管理系统精准记录高效运营的农业供应链关键农资进销存台账管理系统的定义与作用 系统简介:农资进销存台账管理系统是农业生产中的一项重要工具,它通过电脑软件对农药、化肥等农用化学品的购入、库存、销售等环节进行自动化控制和信息录入,提高了工作效率。 农资进销存台账管理系统在提升经营决策中的作用 https://www.msv8oom8y.cn/ke-yan-xiang-mu/17995.html
5.乐销药农资进销存管理系统农销乐农资进销存管理系统是专业的农药电子台账提供商,已成功帮助中国10万家农药店办理农药经营许可证。通过农销乐农资进销存管理系统/农药电子台账,您可以了解每个客户或每种产品有多少收益、在过去哪个产品卖的最好,账目一目了然,专业易用,一看就会!通过一站式服务https://nongxiaole.com/articles
6.农药种子进销存管理系统台账操作演示,佳易王农资进销存怎么用教程1、农资进销存,商品可分为两种,一种是无二维码,比如化肥 另外一种是有二维码,二维码也叫追溯码 2、对于第一种情况,软件可以自编码 第二种情况,可以用二维码扫描器直接扫描二维码 软件里定价格,在销售的时候自动显示金额,自动计算 如上图,光标在追溯码框中即可扫描二维码 https://blog.csdn.net/qq_29129627/article/details/139858693
7.广饶县农产品质量安全监管平台东营益稼农资有限公司 山东中石药业有限公司 备案通过 2024-09-12 24、 广申240523000515号 甲维·茚虫威… 广饶瀚海科技有限公司 山东百农思达生物科技有限… 备案通过 2024-09-11 25、 广申240523000514号 甲维·茚虫威… 广饶瀚海科技有限公司 山东野田生物科技有限公司 备案通过 2024-09-11 26、 广申240523000513号http://grnyzf.com/home
8.农资进销售管理系统农资进销售管理系统是一种能够提高农资进销售效率和准确性的工具。通过全程追溯、供应链管理和智能化推荐等功能,该系统可以帮助农民提高农作物的产量和质量,保护环境和生态,推动农业的可持续发展。随着互联网技术的不断发展,农资进销售管理系统将会在农业生产中发挥越来越重要的作用。https://www.dugusoft.com/zixun/zixun49291.html
9.中农供应商管理系统App StorePreview 中农供应商管理系统More By This Developer 凯福云管理 Productivity 奥宝龙商城 Shopping 中农销售管理系统 Utilities 中农仓库物流系统 Lifestyle 中农旺购 Shopping 智条 Businesshttps://apps.apple.com/vg/app/%E4%B8%AD%E5%86%9C%E4%BE%9B%E5%BA%94%E5%95%86%E7%AE%A1%E7%90%86%E7%B3%BB%E7%BB%9F/id1514321225?see-all=developer-other-apps
10.安徽联智创新软件有限公司种业产销一体化防伪追溯进销存育种智慧农资 了解更多 更多解决方案 产品中心 敏捷运筹,决胜千里、提供互联网+项目全生命周期管理与服务 智慧销售管理系统 了解更多 防伪溯源系统 了解更多 农业大托管系统 了解更多 智慧种业产销一体化系统 了解更多 制种基地数字化制种系统 了解更多 更多产品 http://www.uicsoft.com/
11.头条文章成品油增值税专用发票、增值税普通发票、增值税电子普通发票左上角没有打印“成品油”字样,说明发票不是通过增值税发票管理新系统中成品油发票开具模块开具的,不能报销! 09成品油发票“单位栏”填写错误 成品油发票“单位”栏应选择“吨”或“升”,填写其他单位的,不能报销。 https://card.weibo.com/article/m/show/id/2309404577331409715289
12.水族箱十大品牌家用鱼缸什么品牌好居前十的有:森森SUNSUN、闽江水族MINJIANG、博宇BOYU、佳宝JEBO、日生RESUN、海利HAILEA、可丽爱Cleair、ADA、创星ATMAN、仟湖QIUAN HU等,上榜水族箱·鱼缸十大品牌榜单和著名水族箱·鱼缸品牌名单的是口碑好或知名度高、有实力的品牌,排名不分先后,仅供借鉴参考,想知道什么牌子的水族箱·鱼缸好?您可以多比较,选择自己https://www.maigoo.com/maigoo/987xg_index.html
13.2019年度“中国公路学会科学技术奖”评审结果公示主要完成人:马祖桥,石雪飞,陈修和,王胜斌,刘志权,梅应华,许垒,袁助,赵金磊,席进,吴平平,黄维树,吴红波,魏民,宋军 5.远洋深海珊瑚礁地层特大型桥梁建设关键技术 主要完成单位:中交第二航务工程局有限公司,中交公路规划设计院有限公司, 中铁大桥勘测设计院集团有限公司,中交二航局第二工程有限公司,中交武汉港湾工https://dy.163.com/v2/article/detail/EV32LJT90511RN8S.html
14.融通创业板指数增强型证券投资基金更新招募说明书摘要(2019年第2号务以来,秉承“诚实信用、勤勉尽责”的宗旨,依靠严密科学的风险管理和内部控制体系、规范的管理模式、先进的营运系统和专业的服务团队,严格履行资产托管人职责,为境内外广大投资者、金融资产管理机构和企业客户提供安全、高效、专业的托管服务,展现优异的市场形象和影响力。建立了国内托管银行中最丰富、最成熟的产品线。拥https://fund.eastmoney.com/gonggao/161613,AN201912311373133273.html
15.观察者网我们从中国抗疫模式的成功和西方抗疫模式的溃败中,庆幸自己生活在中国,生活在一个最尊重生命的社会主义国家,生活在一个经得起全方位国际比较的伟大国家。 [全文] 31459 41 这就是中国 · 中国给力,人民心胜! · 西方真的认为他们的“自由民主”可以“护体”吗? 一周军评:这个火箭军明明超强,却“过分谨慎” https://www.guancha.cn/historyIndex/2021-01-10-13-index.shtml
16.活力中国丨在数字化浪潮中感受中国经济活力穿行在寿光市智慧农业科技园的玻璃温室内,一个个模样、功能不一的机器人正在有序作业,而发布各种“指令”的是机器人“小金”,它的后台系统已将相关种植标准数据录入其中,将传统农业生产经验数据化,通过温室的2000多个监测探头,收集二氧化碳浓度、光照强度、温度、湿度等各类数据信息。获得了数据,这个程序就https://content-static.cctvnews.cctv.com/snow-book/index.html?item_id=2814183975937605858&track_id=ABB6965C-0450-49C4-A1F8-9C36225CB4C2_695105784578
17.[武汉中洋博宇科技发展有限公司]详细地址,位置示意图,地图位置武汉中洋博宇科技发展有限公司,电话:027-82284685,地址位于湖北武汉市江岸区武汉市江岸区二七路东立国际22栋2单元1001,靠近东立街、二七街、拥军路和韦桑路天桥。在公共交通方面,附近设有多个公交站,包括韦桑路八十一中、韦桑路工农兵路口、解放大道二七路、招呼站等,可以换乘30路、528路、电3路、346路等多条https://m.city8.com/wh/zhuanyejigou/9439762_DVTG
18.徐汇区第十二届教育科学研究成果评奖结果内容12、翻转课堂模式在高中语文教学中有效性迁移的案例研究 上海市中国中学:杨漪沁、马雯雯 二等奖 1、拓展型课程“快乐”平台开发与应用研究 徐汇区汇师小学:宓莹、刘汝敏、郭文、陈博宇、林佳妮、徐雄、周琦 2、以“四课制”为核心的教师综合学习活动系统策划和实施的研究 https://tpd.xhedu.sh.cn/cms/app/info/doc/index.php/90888