葵花宝典 十一 过滤器 监听器

来源:互联网 发布:c语言闰年流程图 编辑:程序博客网 时间:2024/06/08 16:08

请求 会话 上下文比较

在 HttpServletRequest HttpSession ServletContext有三个相同的方法,都与属性有关

set get remove Attribute(String name,Object value)
都可以通过名字 获取 属性

过滤器的概念及作用
过滤器相关的API
servletAPI中,与过滤器相关的 API共有三个接口,分别是Filter、FilterChain、FilterConfig
Filter接口
Filter接口是过滤器类必须实现的接口,该接口中有三个方法
init dofilter dodestory
FilterChain接口
该接口类型作为Filter接口中doFilter方法中的参数使用。FilterChain接口中有一个方法
doFilter,该方法可以将当前的请求和响应传递到过滤链上的下一个资源,可能是下一个过滤器,也可能是目标资源
FileterConfig接口
该接口类型作为Filter接口中的init的参数使用,FilterConfig接口中有一个常用方法 getInitParameter(String name),该方法获得过滤器的初始化参数,在web.xml中可以为每一个Filter配置需要的初始化参数,与servlet的 类似,过滤器的初始化参数可以通过FilterConfig中的getInitParameter方法获取
过滤器要生效,必须在web.xml中配置,主要配置以及
过滤器总结
过滤器用来实现通用的功能,减少代码冗余,提高可维护性
一个过滤器可以配置给多个资源使用
一个资源也可以配置多个过滤器,按照配置顺序调用

监听器的概念和作用
监听器是为了监听事件并处理的,所以要理解监听器的概念,首先要理解事件的概念
某些操作总会触发一种事件的发生, 如启动或关闭容器,创建和销毁会话,API中已经定义好了事件的类型,容器也进行了实现,当某些特定的操作发生时,会自动触发响应的事件
六种事件类型
Servlet API中定义了6种事件类型
ServletContextEvent:该类表示上下文事件,当应用上下文对象发生改变,如创建或销毁上下文对象时,将触发上下文事件。
ServletContextAttributeEvent:该类表示上下文属性事件,当应用上下文的属性改变,如增加、删除、覆盖上下文中的属性时,将触发上下文属性事件。
ServletRequestEvent:该类表示请求事件,当请求对象发生改变,如创建或销毁请求对象时,触发请求事件。
ServletRequestAttributeEvent:该类表示请求属性事件,当请求中的属性改变,如增加、删除、覆盖请求中的属性时,触发请求属性事件。
HttpSessionEvent:该类表示会话事件,当会话对象发生改变,如创建或销毁会话对象,活化或钝化会话对象时,将触发会话事件。
HttpSessionBindingEvent:该类表示会话绑定事件,当会话中的属性发生变化时,如增加、删除、覆盖会话中的属性时,将触发会话绑定事件。

八种监听器接口
用来监听不同的事件类型
Servlet API中定义了8种监听器接口,用来监听不同的事件类型
ServletContextListener:上下文监听器,监听ServletContextEvent事件。
ServletContextAttributeListener:上下文属性监听器,用来监听ServletContextAttribute事件。
ServletRequestListener:请求监听器,监听ServletRequestEvent事件。
ServletRequestAttributeListener:请求属性监听器,用来监听ServletRequestAttributeEvent事件。
HttpSessionListener:会话监听器,监听HttpSessionEvent。
HttpSessionActivationListener:会话活化监听器,监听HttpSessionEvent事件。
HttpSessionAttributeListener:会话属性监听器,监听HttpSessionAttributeEvent事件。
HttpSessionBindingListener:会话绑定监听器,监听HttpSessionAttributeEvent事件。

事件与监听器的关系
事件对象是由容器创建的,触发的条件也已经定义好,例如,只要容器关闭,启动就会触发ServletContextEvent 容器会创建该类型的对象

基本上操作和过滤器大同小异,先创建类然后实现监听器接口,然后到web.xml配置
VisitCountsListener类实现接口ServletContextListener,其中有两个方法, contextInitialized方法在上下文初始化时自动调用, contextDestroyed方法在上下文被销毁时自动调用


com.chinasofti.ch09.listener.VisitCountsListener
/listener-class>

原创粉丝点击