Java Web 过滤器&监听器

Filter 过滤器

过滤器能对Servlet容器传给Web组件的ServletRequest对象和ServletResponse对象进行检查和修改。

doFilter

实现过滤的方法签名为void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    code1;
    chain.doFilter(request,response)
    code2;
}

img

init destroy

过滤器有初始化和销毁方法,初始化方法接收一个FilterConfig参数来读取过滤器的配置信息。

web.xml

过滤器的配置信息

<filter>
	<filter-name>过滤器名称</filter-name>
	<filter-class>过滤器所在的路径</filter-class>
</filter>
<filter-mapping>
	<filter-name>过滤器名称</filter-name>
	<url-pattern>需要过滤的资源</url-pattern> 
</filter-mapping>

Listener 监听器

监听器的概念多用于图形化界面的开发当中。

监听器术语

  • 事件源:被监听的对象
  • 监听器:用于监听的对象
  • 事件源与监听器的绑定
  • 事件:事件源对象的改变
  • 其他术语(非监听):
    • 钝化:session 中对象持久化到一个存储设备中
    • 活化:session 从一个存储设备中恢复对象

Servlet中的监听器

按照事件源的域,可以分为三个监听域:

  • ServletContext
  • HttpSession
  • ServletRequest

按照事件不同,可分为以下监听事件:

  • 对象的创建与销毁
  • 对象属性的变更(增删改)
  • HttpSession中JavaBean的状态改变(钝化、活化、绑定、解除绑定)

ServletContextListener

  • 监听 ServletContext 对象创建:contextInitialized(ServletContextEvent sce)
  • 监听 ServletContext 对象销毁:contextDestroyed(ServletContextEvent sce)

Spring框架实现此接口为ContextLoaderListener,用于加载框架配置文件。

HttpSessionListener

用来监听 HttpSession 对象的创建和销毁

  • 创建:

    • 服务器端第一次调用 getSession() 方法时创建
  • 销毁:

    • Session 过期,默认过期时间为30分钟;
    • 非正常关闭服务器;
    • 手动调用 session.invalidate();
  • 监听 HttpSession 对象创建:sessionCreated(HttpSessionEvent se)

  • 监听 HttpSession 对象销毁:sessionDestroyed(HttpSessionEvent se)

ServletRequestListener

用来监听 ServletRequest 对象的创建和销毁

  • 创建:从客户端向服务器发送一次请求,服务器就会创建 request 对象;
  • 销毁:服务器做出了响应之后,request 对象就销毁了;
  • 监听 ServletRequest 对象创建:requestInitialized(ServletRequestEvent sre)
  • 监听 ServletRequest 对象销毁:requestDestroyed(ServletRequestEvent sre)

ServletContextAttributeListener

监听 ServletContext 对象中的属性变更(属性添加、移除、替换)的监听器

HttpSessionAttributeListener

监听 HttpSession 对象中的属性变更(属性添加、移除、替换)的监听器

ServletRequestAttributeListener

监听 ServletRequest 对象中的属性变更(属性添加、移除、替换)的监听器

HttpSessionBindingListener

用来监听 Java类 在 HttpSession 中的绑定和解除绑定的监听器

HttpSessionActivationListener

用来监听 HttpSession 中 Java类 的钝化和活化的监听器

posted @ 2021-06-09 08:07  呆炜  阅读(77)  评论(0编辑  收藏  举报