应用程序事件提供ServletContext和HttpSession以及ServletRequest对象状态更改的通知,用户编写响应状态更改的事件监听器类,并配置和部署他们。Servlet容器会调用事件监听器中的方法

监听器实例和线程

在将第一个请求执行到应用程序之前,容器要完成监听器类的实例化,并维护监听器类的实例直到处理完最后一个请求为止

Servlet上下文和HTTP对话的属性改变可能同时发生,但是容器不需要将这些通知同步到监听器之间,监听器类负责维持数据的完整性并明确地处理这种情况

不同监听器的作用

  • Servlet上下文监听类用于管理应用程序JVM层级上的资源和状态
  • Http会话的监听器类用于管理和进入Web应用程序的请求有关的资源和状态,这些请求来自同一客户端
  • Servlet请求监听器用于管理贯穿于servlet请求生命周期的状态
  • 异步监听器用于管理异步事件比如超时或者异步过程的完成

流程:

  • 用户创建一个实现其中一个侦听器接口的事件侦听器类。
  • 此实现在部署描述符中注册。
  • 在部署时,servlet容器构造事件侦听器类的实例。(这就是公共构造函数必须存在的原因,如编写事件监听器类中所述。)
  • 在运行时,servlet容器调用侦听器类的实例。

事件类型和监听器接口

事件监听器的配置

  • 在Web.xml用<listener>配置
  • 按照他们被调用的顺序注册
  • 必须直接跟在 <filter> and <filter-mapping>后面
  • 必须直接在<servlet>前面

编写事件监听类

  • 实现一个或多个指定的接口
  • 必须含有一个公开的无参构造函数
  • 放在classes文件夹中或是打包成jar放到lib文件夹中
  • 接收的类:
    • javax.servlet.http.HttpSessionEvent提供对HTTP会话对象的访问
    • javax.servlet.ServletContextEvent提供对servlet上下文对象的访问。
    • javax.servlet.ServletContextAttributeEvent提供对servlet上下文及其属性的访问
    • javax.servlet.http.HttpSessionBindingEvent提供对HTTP会话及其属性的访问

Java web application——Listener的更多相关文章

  1. ThreadLocal Memory Leak in Java web application - Tomcat

    ThreadLocal variables are infamous for creating memory leaks. A memory leak in Java is amount of mem ...

  2. Java Web Application使Session永不失效(利用cookie隐藏登录)

    在做 Web Application 时,因为 Web Project 有 session 自动失效的问题,所以如何让用户登录一次系统就能长时间运行三个月,就是个问题. 后来,看到 session 失 ...

  3. A candidate solution for Java Web Application - current session

    Motivation Do it once, resue for ever. Audience myself, Java Web developers Scope 应用案例 图书借阅系统 阶段1需求: ...

  4. java web.xml listener servlet 和filter加载顺序

    在该项目中总会遇到一些关于加载的优先问题.最近遇到了同样的类别似的,所以,如果你发现信息汇总下,以下是转载其他一些人,毕竟,人们写的不错.它不重复创建的轮.只是略作修改自己的观点. 首先能够肯定的是, ...

  5. Centos + nginx + JBOSS AS 7 搭建Java web application

    最近做了一个Java的web app,一直想在Centos环境中搭建一个完整的web服务器,现在开始动手. 先说说环境: 操作系统: Centos 6.3 WEB服务器: nginx-1.2.5 Ap ...

  6. Java web中listener、 filter、servlet 加载顺序

    真正的加载顺序为:context-param -> listener -> filter -> servlet 加载顺序与它们在 web.xml 文件中的先后顺序无关.即不会因为 f ...

  7. java Web 监听器Listener详解

    简介 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext.HttpSession和 ServletRequest这三大域对象的创建 ...

  8. Java web application——基础

    概述 一个WAR文件包含了构成一个Web应用程序所需要的文件.WAR文件作为一个单元部署在一个或多个WebLogic Server实例上. WebLogic Server上的Web存档始终包含以下文件 ...

  9. Java Web Application——servlet

    概述 是一个部署于web服务器中的实现了servlet接口的Java类,用于响应web请求 Web容器(也称为servlet容器)本质上是与servlet交互的Web服务器的组件.Web容器负责管理s ...

随机推荐

  1. linux ps 命令查看进程状态

    显示其他用户启动的进程(a) 查看系统中属于自己的进程(x) 启动这个进程的用户和它启动的时间(u) 使用“date -s”命令来修改系统时间 比如将系统时间设定成1996年6月10日的命令如下. # ...

  2. POJ 1950暴搜

    思路: 暴力枚举好了..每回判断一下-- 用long long会超时 但是10^20会爆int... 不过仔细想一想 超过10^9的数肯定拼不回0啊-- 猥琐用int AC了 (当然可以打表 ) // ...

  3. mybatis的sql中字段两种映射(映射到实体)方式

    mybatis的xml配置文件中,字段映射的两种方式: 1.resultMap标签中将数据库的字段与实体类中的字段对应: <resultMap id="BaseResultMap&qu ...

  4. P2742 [USACO5.1]圈奶牛Fencing the Cows

    题目描述 农夫约翰想要建造一个围栏用来围住他的奶牛,可是他资金匮乏.他建造的围栏必须包括他的奶牛喜欢吃草的所有地点.对于给出的这些地点的坐标,计算最短的能够围住这些点的围栏的长度. 输入输出格式 输入 ...

  5. POJ 2029 Get Many Persimmon Trees 【 二维树状数组 】

    题意:给出一个h*w的矩形,再给出n个坐标,在这n个坐标种树,再给出一个s*t大小的矩形,问在这个s*t的矩形里面最多能够得到多少棵树 二维的树状数组,求最多能够得到的树的时候,因为h,w都不超过50 ...

  6. vue之父子组件间通信实例讲解(props、$ref、$emit)

       组件间如何通信,也就成为了vue中重点知识了.这篇文章将会通过props.$ref和 $emit 这几个知识点,来讲解如何实现父子组件间通信. 组件是 vue.js 最强大的功能之一,而组件实例 ...

  7. BZOJ 4668 冷战(按秩合并并查集+LCA)

    4668: 冷战 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 627  Solved: 303[Submit][Status][Discuss] D ...

  8. linux 杀掉端口

    netstat -apn|grep 8184 tcp        0      0 0.0.0.0:8184            0.0.0.0:*               LISTEN    ...

  9. centos安全配置

    http://www.dedecms.com/knowledge/servers/linux-bsd/2012/0819/8506.html 引言: 我们必须明白:最小的权限+最少的服务=最大的安全 ...

  10. 转:强制Visual Studio以管理员身份运行

    Windows 8的一个既安全又蛋疼之处是UAC的行为被改变了.以往在Windows 7中,只要关闭了UAC,自己的帐号又是本机管理员组的,任何程序都会以管理员身份启动.然而,在Windows 8上, ...