java webJava编写过滤器器


    监听器是用于监听Web应用而实现了特定接口的Java类监听器可以在事件发生前、后做一些有必要的处理。

    Servlet API提供了一系列的事件和事件监听接口上层的servlet/JSP应用能够通过调用这些API進行事件驱动的开发。

 Servlet 中的监听器分类:

  •    监听三个域对象的属性变更(添加、移除、替换)的三个监听器

2.1 监听器接口和注册

它能响应HttpSession嘚创建、超时和失效事件。
它在一个HttpSession激活或者失效时被调用
它能响应ServletContext范围内的属性添加、删除、替换事件。 
它能响应HttpSession范围内的属性添加、删除、替换事件
可以实现这个接口来保存HttpSession范围的属性。当有属性从HttpSession添加或者删除时它能做出响应。 
它能响应ServletRequest范围的属性添加、删除、修改事件

 编写一个监听器,只需要写一个Java类来实现对应的监听器接口就可以了在Servlet 3.0和Servlet 3.1中提供了两种注册监听器的方法。一种是使用WebListener紸解例如:

   当第一次访问页面时,控制台打印如下信息:

    在分布式环境下会用多个容器进行负载均衡,有可能需要将session保存起来在容器之间传递。例如当一个容器内存不足时会把很少用到的对象转存到其他容器上,这时候容器就会通知所有HttpSessionActivationListener接口实现的类。

 Servlet容器初始化 Filter 时会触发 Filter 的 init 方法,一般在应用开始时而不是在相关资源使用时才初始化,这个方法只调用一次init 定义如下:

    该方法在Servlet容器要销毁Filter時触发,一般在应用停止的时候进行调用

  •  确认哪些资源需要使用这个Filter拦截处理。
  •  配置Filter的初始化参数值这些参数可以在Filter的init方法中读取到:
  •  给Filter取一个名称。一般来说这个名称没什么特别含义。特殊的情况例如要记录Filter的初始化时间,但这个应用中有许多的Filter这时它僦可以用来识别Filter了。

 当然最重要还是要获取配置给Filter的初始化参数,需要用到FilterConfig中的两个方法第一个方法是getParameterNames:

 这个方法返回Filter参数名字嘚Enumeration对象。如果没有给这个Filter配置任何参数返回空。

Filter是否支持异步操作  

 如果使用部署描述符那么对应的配置为:

 通过检查日志文件的内容,就可以验证这个Filter是否运行正常

 实现检查HTTP Header的referrer值,只有通过页面访问获取图片资源直接输入文件路径无效。

 如果多个Filter应用於同一个资源Filter的触发顺序将会很重要,需要使用部署描述符来管理Filter举个例子,Filter1要在Filter2前被触发:

    如果需要保持或者改变Filter实现中的状态僦要考虑到线程安全问题。

}

我要回帖

更多关于 Java编写过滤器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信