这篇文章主要介绍 servlet filter listener interceptor 之 知识点。博文主要从 概念,生命周期,使命介绍其区别。详情如下:

  概念 生命周期 使命
servlet servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。 servlet的生命周期始于它被装入web服务器的内存时,并在web服务器终止或重新装入servlet时结束。servlet一旦被装入web服务器,一般不会从web服务器内存中删除,直至web服务器关闭或重新装入。(1). 装入:启动服务器时加载Servlet的实例(如果你设置<load-on-startup>的值是一个大于0的数,则tomcat在启动时就会创建servlet,如果没有设置这个属性,则是第一次访问时创建);
(2). 初始化:web服务器启动时或web服务器接收到请求时,或者两者之间的某个时刻启动。初始化工作有init方法负责执行完成;(init方法只执行一次)
(3). 调用:从第一次到以后的多次访问,都是只调用doGet()或doPost()方法;
(4). 销毁:停止服务器时调用destroy()方法,销毁实例。
接受请求,相应请求
filter filter是一个可以复用的代码片段。它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。 (一定要实现javax.servlet包的Filter接口的三个方法init()、doFilter()、destroy(),空实现也行)
(1). 启动服务器时加载过滤器的实例,并调用init()方法来初始化实例;
(2). 每一次请求时都只调用方法doFilter()进行处理;
(3). 停止服务器时调用destroy()方法,销毁实例。
在执行servlet之前,首先执行filter程序,并为之做一些预处理工作;侧重对请求的加工处理

listener 监听器,从字面上可以看出listener主要用来监听。通过listener可以监听web服务器中某一个执行动作,并根据其要求作出相应的响应。 web.xml 的加载顺序是:context- param -> listener -> filter -> servlet 主要使命即为监听,监听web服务器中某一个执行动作,并根据其要求作出相应的响应
interceptor 在面向切面编程的,就是在你的service或者一个方法,前调用一个方法,或者在方法后调用一个方法,比如动态代理就是拦截器的简单实现,在你调用方法前打印出字符串(或者做其它业务逻辑的操作),也可以在你调用方法后打印出字符串,甚至在你抛出异常的时候做业务逻辑的操作。 以struts的拦截器为例,加载了struts.xml以后,初始化相应拦截器。当action请求来时调用intercept方法,服务器停止销毁interceptor。 与过滤器十分相似,通过层层拦截,处理用户的请求和响应。
汇总 servlet、filter、listener是配置到web.xml中,interceptor不配置到web.xml中,struts的拦截器配置到struts.xml中。spring的拦截器配置到spring.xml中。    
       
     

servlet filter listener interceptor 知识点的更多相关文章

  1. servlet/filter/listener/interceptor区别与联系

    转自:http://www.cnblogs.com/doit8791/p/4209442.html servlet.filter.listener是配置到web.xml中(web.xml 的加载顺序是 ...

  2. 【转】servlet/filter/listener/interceptor区别与联系

    原文:https://www.cnblogs.com/doit8791/p/4209442.html 一.概念: 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台 ...

  3. [转]web.xml中servlet ,filter ,listener ,interceptor的作用与区别

    原文链接:https://blog.csdn.net/netdevgirl/article/details/51483273 一.概念: 1.servlet:servlet是一种运行服务器端的java ...

  4. servlet & filter & listener & interceptor

    web.xml 的加载顺序是:context- param -> listener -> filter -> servlet * Servlet 对URL生效,用户处理用户的URL请 ...

  5. JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下)

    JavaWeb三大组件(Servlet,Filter,Listener 自己整理,初学者可以借鉴一下) Reference

  6. SpringBoot学习笔记(6)----SpringBoot中使用Servlet,Filter,Listener的三种方式

    在一般的运用开发中Controller已经大部分都能够实现了,但是也不排除需要自己实现Servlet,Filter,Listener的方式,SpringBoot提供了三种实现方式. 1. 使用Bean ...

  7. ServletContextInitializer添加 servlet filter listener

    ServletContextInitializer添加 servlet filter listener https://www.cnblogs.com/pomer-huang/p/9639322.ht ...

  8. SpringBoot---注册Servlet,Filter,Listener

    1.概述 1.1.当使用  内嵌的Servlet容器(Tomcat.Jetty等)时,将Servlet,Filter,Listener  注册到Servlet容器的方法: 1.1.1.直接注册Bean ...

  9. filter listener interceptor的区别

    转自: http://www.cnblogs.com/shangxiaofei/p/5328377.html https://www.cnblogs.com/jinb/p/6915351.html 一 ...

随机推荐

  1. node安装升级过程中遇到的问题汇总

    一.Node already installed, it's just not linked 第一步:sudo chown -R $(whoami) $(brew --prefix)/* 第二步:br ...

  2. python后续学习

    关于使用python输出中文字符的问题: Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错. 解决方法为只要在文件开头加入 # -*- co ...

  3. mongo 改数据库名称

    用命令 db.copyDatabase('old_name', 'new_name') 可以备份出一个新的数据库. 然后  use old_name 并db.dropDatabase() 即可删除旧的 ...

  4. lua 随机数 math.random()和math.randomseed()用法

    用法一:  不给范围,就随机算一个0~1之间的小数: 用法二:给一个参数,就取1~n之间的随机数 用法三:给两个参数,就取m~n之间的随机数 math.randomseed()用法:     由于C中 ...

  5. go-redis 基于beego正确使用序列化存储数据和反序列化获取数据

    安装go-redis // 安装命令 go get github.com/gomodule/redigo/redis // 导入使用 import( "github.com/gomodule ...

  6. NOIP2012 疫情控制 题解(LuoguP1084)

    NOIP2012 疫情控制 题解(LuoguP1084) 不难发现,如果一个点向上移动一定能控制更多的点,所以可以二分时间,判断是否可行. 但根节点不能不能控制,存在以当前时间可以走到根节点的点,可使 ...

  7. 【游戏体验】FlyGuy(小飞人)

    关于FlyGuy这款游戏:https://en.wikipedia.org/wiki/Fly_Guy_(video_game) 这款游戏可以说是古董了 游戏的自由度比较高,玩法简单. 个人测评 游戏性 ...

  8. RTMP 协议规范(中文版)

    本文是为截至发稿时止最新 Adobe 官方公布的 RTMP 规范.本文包含 RTMP 规范的全部内容.是第一个比较全面的 RTMP 规范的中译本.由于成文时间仓促,加上作者知识面所限,翻译错误之处在所 ...

  9. Django Auth组件->扩展用户

    Auth用户 1.声明用户表 djangauth/settings.py..............................AUTH_USER_MODEL = 'app01.UserInfo' ...

  10. 已解决:解压Python-3.6.1.tar.xz提示tar (child): xz:无法 exec: 没有那个文件或目录

    安装一个xz后解决了 yum install xz 再次解压成功了