过滤器Filter

过滤器也是一种servlet   它也可以对用户的请求进行处理  , 但是他所做的处理,只是一些轻量级的处理。Fileter就好像jsp页面与servlet之间的一道关卡,如果这个web应用有Filter那么,jsp页面的请求在到达要去的servlet之前,先被Filter解惑,在Filter做一些处理之后,然后再让该请求去它原本要去的servlet。同理,Filter也可以对servlet生成的响应,进行拦截处理,让后再让它去它原本要去的jsp页面。

一个Filter类,要实现javax.servlet.Filter接口,这个接口提供如下三个方法:

init(FilterConfig  config)    ------对生成的Filter对象进行初始化    传入的config对象  可以可以调用方法来获取该Filter在web.xml中的配置参数

destory()                            ------在销毁Filter对象之前,自动调用该方法对资源进行回收

doFilter(ServletRequest  request , ServletResponse  response, Filterchain  chain)

------  在该方法内对拦截到达请求或响应   进行一些处理   然后交给它 目的servlet或jsp页面

传入的request对象   表示 拦截到的request对象

传入的response对象   表示拦截到的response对象

传入的chain对象     可以通过调用chain.doFilter(request,response)   表示过滤器已经处理完了,将请求或者响应转发到它们想去的servlet

或者jsp页面

Filter实例对象的生命周期

牢记Filter也是一种提供轻量级服务的servlet,它提供服务同servlet一样,是通过实例对象调用处理方法

web应用加载→ 创建Filter类的实例对象 → 自动调用init()方法对该实例对象进行初始化  →   调用doFilter()方法对请求或响应进行处理  .........合适的时间  自动调用derstory()方法()进行资源回收  →  该Filter类的实例对象被销毁

Filter类的配置

监听器Listener

通过过滤器 和servlet  可以看出它们两者都是对请求或者响应提供服务的。一个web应用被启动之后 ,内部不仅仅是请求和响应在活动,还有session对象开始,结束,web应用开始,结束,等等很多事件,

而监听器就像一双耳朵,应用中发生了某些事件,而这些事件发生之后,我就要做一些处理 。

监听器也提供了好几个接口,用来监听不同的事件:

ServletContextListener接口      -------监听web应用的启动和关闭

ServletContextAttributeListener接口    -------监听application对象(ServletContext类的实例对象)内的值得变化

ServletRequestListener接口                --------监听request对象(ServletRequest类的实例对象)

ServletRequestAttributeListener接口      -----监听request对象(ServletRequest类的实例对象)内值的变化

HttpSessionListener接口                      ------监听session对象(HttpSession类的实例对象)的开始和结束

HttpSessionAttribute接口                      -----监听session对象(HttpSession类的实例对象)中值的变化

每个接口中都定义了若干方法   ,用于在某个事件被监听到之后自动调用,也是通过Listener实例对象调用方法实现的 。Listener实例对象和Filter实例对象,都是在web应用被加载时创建的,这点不同与servlet,因为servlet实例对象的创建根据配置不同,有两个时间点去创建。

Listener的配置

相对于Filter与Servlet来说,Listener的配置最简单 。

过滤器Filter与监听器Listener的更多相关文章

  1. 过滤器(filter),监听器(listener),与servlet的执行顺序

    创建: 加载顺序 监听器-->过滤器-->Servlet.项目启动后,容器会首先创建声明的各种监听器,为后继的各个事件监听做准备,然后创建过滤器,最后是Servlet.销毁的时候是反序进行 ...

  2. 二十五、过滤器Filter,监听器Listener,拦截器Interceptor的区别

    1.Servlet:运行在服务器上可以动态生成web页面.servlet的声明周期从被装入到web服务器内存,到服务器关闭结束.一般启动web服务器时会加载servelt的实例进行装入,然后初始化工作 ...

  3. Servlet过滤器Filter和监听器

    一.Servlet过滤器的概念: *********************************************************************************** ...

  4. JavaWeb学习篇之----Servlet过滤器Filter和监听器

    首先来看一下Servlet的过滤器内容: 一.Servlet过滤器的概念: ************************************************************** ...

  5. 8-过滤器Filter和监听器Listener

    一.web监听器:监听特殊事件的发生1.监听实现步骤 a.写一个java类,实现特定的接口,重写相关方法 b.在web.xml中,牌配置 <listener> <listener-c ...

  6. Java Web(五) 监听器Listener

    监听器概述 在上一篇里介绍了过滤器Filter,而Listener是Servlet的另一个高级特性.Listener用于监听Java Web程序中的事件,例如创建,修改,删除Session,reque ...

  7. 过滤器(Filter)、拦截器(Interceptor)、监听器(Listener)

    一.Filter 过滤器 1.简介 Filter也称之为过滤器,它是Servlet技术中最实用的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servle ...

  8. Introduction of Servlet Filter(介绍javaweb组件之一过滤器filter)

    javaweb的三大组件都需要交给web服务器运行,都需要在web.xml文件中配置. ①Servlet:javax.servlet.Servlet通过http协议接受客户端的请求,并作出响应的Jav ...

  9. SSH项目web.xml文件的常用配置【struts2的过滤器、spring监听器、解决Hibernate延迟加载问题的过滤器、解决中文乱码的过滤器】

    配置web.xml(struts2的过滤器.spring监听器.解决Hibernate延迟加载问题的过滤器.解决中文乱码的过滤器) <!-- 解决中文乱码问题 --> <filter ...

随机推荐

  1. Android继承AppCompatActivity实现全屏设置

    转载 2016年05月25日 13:20:25 标签: android / style / android studio / 继承 4839 Android studio创建新项目后Activity默 ...

  2. 【BZOJ3529】数表(莫比乌斯反演,树状数组)

    [BZOJ3529]数表(莫比乌斯反演,树状数组) 题解 首先不管\(A\)的范围的限制 要求的东西是 \[\sum_{i=1}^n\sum_{j=1}^m\sigma(gcd(i,j))\] 其中\ ...

  3. [BZOJ3110][ZJOI2013]K大数查询(整体二分)

    BZOJ Luogu sol 整体二分,其实很简单的啦. 对所有询问二分一个答案mid,把所有修改操作中数字大于mid的做一个区间覆盖(区间加1) 查询就是区间查询 然后左右分一分即可 注意是第k大 ...

  4. Bitset([HZOI 2015]偏序++)

    Bitset简介 下面介绍C++ STL 中一个非常有用的东西: Bitset 类似于二进制状压,它可以把信息转化成一个01串存储起来 定义方法: 首先要#include<bitset>或 ...

  5. 进一步理解阿贾克斯(Ajax)

    一.ajax简介 1.Asynchronous JavaScript and XML(异步的Javascript和XML) 2.是一种在无需重新加载整个网页的情况下能够更新部分网页的技术. 二.aja ...

  6. Micropython TurnipBit 电子时钟 青少年编程入门

    电子时钟是一个很常用但是制作非常简单的小玩具了,对于Micropython初学者来说,制作一个电子时钟是非常简单又容易检验自己学习成果的实验了.TurnipBit相比于其他开发板,制作电子时钟就更加简 ...

  7. Spring+Mybatis+Mysql搭建分布式数据库访问框架

    一.前言 用Java开发企业应用软件, 经常会采用Spring+MyBatis+Mysql搭建数据库框架.如果数据量很大,一个MYSQL库存储数据访问效率很低,往往会采用分库存储管理的方式.本文讲述如 ...

  8. webstorm提交版本时,忽略特定文件

    项目提交时,部分本地配置文件,不需要提交,这时候需要在整个版本控制中忽略掉文件的提交. 操作如下: File -> Settings -> Version Control -> Ig ...

  9. java设计模式单例模式 ----懒汉式与饿汉式的区别

    常用的五种单例模式实现方式 ——主要: 1.饿汉式(线程安全,调用率高,但是,不能延迟加载.) 2.懒汉式(线程安全,调用效率不高,可以延时加载.) ——其他: 1.双重检测锁式(由于JVM底层内部模 ...

  10. 我的linux学习之路——(一)

    prompt:命令提示符 命令: command options...... arguments...... 选项: 短选项 长选项 带参数的选项 参数: list----ls 列出,列表 列出制定路 ...