`
wx1569484809
  • 浏览: 63772 次
文章分类
社区版块
存档分类
最新评论

过滤器与监听器

 
阅读更多

1、什么是过滤器?
过滤器是在执行某个url前所需要做的事情,url可能是某个serlvet所对应的,也有可能是jsp页面

特点:
声明式的
动态的
灵活的
模块化的
可移植的
可重用的
透明的

用处:
统一的认证处理
对用户的请求做检查、做更精确的纪录
监视或对用户所传递的参数做前置处理,如防止数据隐藏码攻击
改变图像文件的格式
对响应做编码的动作
对响应做压缩处理
对XML的输出使用xslt来转换


2、过滤器的写法
1)自定义类,实现javax.servlet.Filter接口
2)分别实现init(FilterConfig), doFilter(ServletRequest, ServletResponse, FilterChain)
destroy()
3)在web.xml中配置该filter
告诉web容器存在这么一个filter,可以使用<init-param>配置filter的初始化参数,在Filter代码中用FilterConfig对象获取初始化参数

<filter>
<filter-name></filter-name>
<filter-class></filter-class>
</filter>

告诉web容器此filter对哪个url进行过滤

<filter-mapping>
<filter-name></filter-name>
<servlet-name></servlet-name> 准确地告诉filter该过滤哪个servlet
<url-pattern></url-pattern> 可以使用通配符过滤多个servlet
</filter-mapping>

3、Filter的生命周期
*1)init(FilterConfig)初始化方法
在tomcat容器启动的时候就会对过滤器进行初始化
2)在执行其过滤的url时,先初始化该url所对应的serlvet
*3)调用filter的doFilter()方法,进行过滤,使用chain.doFilter传递给下一个过滤器或servlet
4)执行下一个过滤器的doFilter方法,或者servlet的service方法
*5)在关闭web容器时,调用 destroy()销毁过滤器

4、什么是FilterChain?
FilterChain对象是过滤器链,可以由一个Filter传递到另外的一个Filter,或者直接传递到被过滤的servlet
如果下一个是过滤器,则传递给过滤器,执行下一个过滤器的doFilter;
如果下一个是servlet,则传递给servlet。执行此servlet的service方法

使用FilterChain对象的doFilter()方法进行过滤器链的传递

doFilter(ServletRequest, ServletResponse), 会把在这里修改的request和response传递给下一个过滤器或者Servlet

在chain.doFilter前执行的方法叫前置方法
在chain.doFilter后执行的方法叫后置方法
filter1执行前置方法,filter1的doFilter到filter2, filter2执行前置方法,filter2的doFilter到servlet,
servlet执行service方法,
返回到filter2执行后置方法,
返回到filter1执行后置方法

5、过滤器中的执行顺序
根据web.xml中配置的filter的顺序来执行,如果两个或多个filter最终都是过滤同一个servlet,则按照顺序从上往下执行每个filter

6、ServletContextListener web上下文监听器
对部署在tomcat等web容器的应用的初始化和销毁进行监听

写自己的监听器实现javax.servlet.ServletContextListener接口

1 contextInitialized(ServletContextEvent sce) // 当web应用初始化时调用 的方法
2 contextDestroyed(ServletContextEvent sce) // 当tomcat等web容器关闭时调用的方法

使用情景:访问人数的初始化,web应用的全局配置

7、javax.servlet.ServletContextAttributeListener 对application(ServletContext) 对象中属性的添加,移除,更新的监听

attributeAdded(ServletContextAttributeEvent scae)  //添加属性时调用的方法
attributeRemoved(ServletContextAttributeEvent scae)  //移除属性时调用的方法
attributeReplaced(ServletContextAttributeEvent scae) // 更新属性时调用的方法

scae.getName()可以获取到属性的名称
scae.getValue()获取到属性的值

8、javax.servlet.http.HttpSessionListener接口 对session创建与销毁的监听
tomcat容器关闭时产不调用sessionDestroyed(HttpSessionEvent se); 是在session.invalidat()或者timeout
第一次访问的时候就会创建Session,则会调用sessionCreated(HttpSessionEvent se)。并不是说在request.getSession()时调用

9、javax.servlet.http.HttpSessionAttributeListener 对session中属性的监听

1 attributeAdded(HttpSessionBindingEvent se)  //添加属性时调用的方法
2 attributeRemoved(HttpSessionBindingEvent se)  //移除属性时调用的方法
3 attributeReplaced(HttpSessionBindingEvent se)  //更新属性时调用的方法

10、javax.servlet.http.HttpSessionActivationListener
Activate与Passivate是用于置换对象的动作,当Session对象由于资源利用或负载平衡等原因而必须
暂时储存至硬盘或其它储存器上时(透过对象序列化),所作的动作称之为Passivate,
而硬盘或储存器上的Session对象重新加载JVM时所作的动作称之为Activate

11、javax.servlet.http.HttpSessionBingingListener
实现了该接口的其他类的对象被添加到session的属性中时或从Session中移除,而调用的

1 valueBound(HttpSessionBindingEvent event); 该类的对象被添加到session时调用
2 valueUnbound(HttpSessionBindingEvent event); 该类的对象从session中移除时调用

12、javax.servlet.ServletRequestListener
监听request请求的初始化和销毁

requestDestroyed(ServletRequestEvent sre)  //请求销毁时调用
requestInitialized(ServletRequestEvent src)  //请求初始化时调用

13、javax.servlet.ServletRequestAttributeListener
当设置属性到request中,或从Request中移除,更新属性所调用的

1 attributeAdded(ServletRequestAttributeEvent srae) 添加属性时调用的方法
2 attributeRemoved(ServletRequestAttributeEvent srae) 移除属性时调用的方法
3 attributeReplaced(ServletRequestAttributeEvent srae) 更新属性时调用的方法

14、事件对象

javax.servlet.ServletContextEvent getServletContext();
javax.servlet.http.HttpSessionEvent getSission();
javax.servlet.ServletRequestEvent getServletRequest();

15、java.util.Propertis类的使用
用于读取.properties文件,根据properties文件中指定的key值获取到对应的value值
参考WEB-INF目录下test.properties, ConfigUtil.java, PathUtil.java


转载于:https://my.oschina.net/A0926/blog/736424

分享到:
评论

相关推荐

    JavaWeb13-过滤器与监听器.rar

    JSP+servlet+javabean学习 里面有PDF文件对该章节的详细讲解,培训老师才讲的到的,非常详细......资源内容如下: JavaWeb02-request与response.rar JavaWeb03-会话跟踪cookie与...JavaWeb13-过滤器与监听器.rar

    jsp过滤器与监听器

    jsp过滤器与监听器,很好的讲课和学习的ppt

    Servlet过滤器与监听器

    Servlet过滤器与监听器

    servlet中的过滤器与监听器

    在Servlet技术中,过滤器(Filter)和监听器(Listener)是两个非常重要的概念,它们帮助开发者实现对请求和响应的拦截、处理以及管理应用程序的状态。 ### 1. Servlet过滤器 **过滤器** 是Servlet API提供的一种...

    servlet过滤器与监听器.pdf

    Servlet 过滤器与监听器 概述: Servlet 过滤器(Filter)和监听器(Listener)是 Java Web 应用程序中常见的两种组件,它们提供了各种扩展 Web 应用程序功能的方式。过滤器和监听器都可以通过 Java Web 应用程序...

    JSP动态网页设计:第6章 过滤器与监听器.ppt

    第六章:过滤器与监听器在JSP动态网页设计中的应用 在JSP(JavaServer Pages)技术中,过滤器(Filter)和监听器(Listener)是两种关键的组件,它们扩展了Servlet API的功能,提供了更强大的控制和管理能力。本章...

    javaweb_高级_过滤器_监听器

    【JavaWeb 高级:过滤器与监听器详解】 在JavaWeb开发中,过滤器(Filter)和监听器(Listener)是两种非常重要的组件,它们能够帮助我们实现更精细的控制和管理应用程序的行为。本篇将详细介绍过滤器的原理、使用...

    Servlet过滤器与监听器.doc

    Servlet过滤器和监听器是Java Servlet技术中两个重要的组件,它们极大地增强了Web应用程序的功能和灵活性。Servlet过滤器在Servlet 2.3规范中被引入,主要用于处理通用任务,如请求预处理、响应后处理,以及诸如编码...

    过滤器和监听器的使用与区别

    在Java Web开发中,过滤器(Filter)和监听器(Listener)是两种非常重要的组件,它们主要用于增强应用程序的功能和管理应用程序的状态。本篇文章将详细解释这两种技术的使用、配置及其区别。 首先,我们来了解过滤...

    过滤器和监听器.

    过滤器和监听器

    过滤器filter和监听器listener的应用总结

    在Java Web开发中,过滤器(Filter)和监听器(Listener)是两个非常重要的概念,它们主要用于增强应用程序的功能和管理应用程序的状态。这篇文章将对这两者的应用进行深入的总结。 **过滤器Filter** 过滤器是在...

    关于过滤器和监听器的使用模板

    在Java Web开发中,过滤器(Filter)和监听器(Listener)是两个非常重要的组件,它们主要用于增强应用程序的功能和管理应用程序的状态。以下是关于这两个概念的详细说明。 **过滤器(Filter)** 过滤器是Servlet...

    jsp/servlet中过滤器和监听器的区别

    - **生命周期**:过滤器的生命周期与请求相关,一个请求完成后,过滤器实例可能被复用;监听器则通常在整个应用程序生命周期内有效。 理解并熟练使用过滤器和监听器对于开发高质量的Java Web应用至关重要。它们...

    servlet匹配,过滤器与监听器比较

    servlet的匹配原则,过滤器的匹配和执行过程,监听器的执行

    过滤器和监听器笔记.md

    过滤器和监听器的简要介绍及实际场景中的运用

    过滤器和监听器的使用

    在Java Web开发中,过滤器(Filter)和监听器(Listener)是两个非常重要的概念,它们主要用于增强应用程序的功能和管理应用程序的生命周期。过滤器主要负责对HTTP请求和响应进行拦截和处理,而监听器则用来监听和...

    java 过滤器和监听器 java 过滤器和监听器

    java 过滤器和监听器

Global site tag (gtag.js) - Google Analytics