过滤器-监听器

来源:互联网 发布:手机淘宝用邮箱注册 编辑:程序博客网 时间:2024/05/16 01:39

过滤器

1、Fliter

public voidinit(FliterConfig config) throws ServletException

publc voiddoFilter(ServletRequest request,

ServletResponse  response,

FilterChain chain) throws ServletException,IOException

    public void destroy();

 过滤链

web.xml

<filter>

  <filter-name> </filter-name>

  <filter-class>  </filter-class>

<init-param>

  <param-name></param-name>

  <param-value></param-value>

</init-param>

</filter>

<filter-mapping>

   <filter-name></filter-name>

   <url-pattern></url-pattern>  适用路径 /jsp/ *.do

   <dispatcher></dispatcher>    REQUEST/FORWARD/INCLUDE/ERROR

</filter-mapping>

url-pattern和dispatcher为且关系

 

应用

防盗链/ 字符编码

日志记录

  建立log4j.properties  commons-logging

  导入Lgo4J.jar等包

异常捕获

   Throwable rootCase = e;

  While(rootCase.getCause() != null){

    rootCause = rootCause.getCause();

  }

  

   rootCase .getMessage();

   rootCase.getClass().getName()

 

权限验证

javaweb一般适用session和cookie记录登陆及权限,Filter在servlet提交前对session和cookie校验

权限配置放置于配置文件或者数据库

内容替换

自定义response

通过继承HttpServletResponseWrapper,覆盖其中的方法getOutputStream()

 和getWriter()

  properties要进行Unicode编码

GZIP压缩

 提升网络传输速率,适用是要判断客户浏览器是否支持GZIP自动解压

 自定义response

缓冲Filter

  适用于变化不大的数据,不能够适用post方式提交数据

  数据更新后删除缓存,

XSLT

 

配置fliter时应当注意其配置的顺序,其彼此之间会产生影响

 

 

监听器

监听创建、修改、删除session/request/context等

1.

publicclass SessionListener implements HttpServletListener{

  public void sessionCreated(HttpSessionEventse){

 

  }

  public void sessionDestroyed(HttpSessionEventse){

    

  }

}

创建时服务器调用sessionCreated(),销毁时sessionDestroyed()

web.xml

<listener>

  <listener-class>

      packageName.className

  </listener-class>

</listener>

 

(1)第一类接口

  HttpSessionListener  

   sessionCreated(HttpSessionEventse)

sessionDestoryed(HttpSessionEvente)

  ServletContextListener

        contextInitialized(ServletContextEventevent)

        contextDestoryed(ServletContextevent)

  ServletRequestListener

        requestInitialized(ServletRequestevent)

        requestInitialized(ServletRequestevent)

   分别监听session context requestc创建销毁

 (2)第二类接口

  用于监听session/context/request的属性变化,

接口名称为HttpSession/ServletContext/ServletRequestAttributeListener

  向被监听对象添加、更新、删除属性时,分别执行

**Added()  **Replaced() **Removed()

  session / request / context

 (3)第三类接口

  监听session内的对象

  HttpSessionBindingListener

当对象放到session中时执行valueBound(HttpSessionBindingEvent evnet)

当对象移除时                valueUnBound(HttpSessionBindingEvent)

 HttpSessionActivationListener

服务器关闭,会将session中的内容保存到硬盘上,这个过程叫钝化

  sessionWillPassivate(HttpSessionEvent)

服务器启动,会将session内容重新加载,

  sessionDidActivate(HttpSessionEvent)

 

(4)案例

单态登陆

显示在线用户

 

 

 

 

0 0