本文共 1273 字,大约阅读时间需要 4 分钟。
监听器详解
servlet规范当中定义的一种特殊的组件,用来监听容器产生的事件。
注:
容器产生的事件主要有两大类
1)生命周期相关的事件
容器创建了或者销毁了request,session,servletContext(servlet上下文)时产生的事件。
2)绑订数据相关的事件
调用了request,session,servlet上下文的setAttribute,removeAttribute时产生的事件。容器启动之后,会为每一个web应用创建唯一的一个符合ServletContext接口要求的对象。
特点
a.唯一性:一个web应用对应唯一的一个上下文。
b.持久性:只要容器没有关闭,并且应用没有被删除,则上下文会一直存在。
GenericServlet, ServletConfig,FilterConfig,HttpSession提供了一个getServletContext方法来获得上下文。
a.绑订数据
setAttribute,getAttribute,removeAttribute
注:
将数据绑订到上下文,可以随时访问。在满足使用条件的情况下,优先使用生命周期短的(request < session < 上下文)。request对象上绑定的数据只有同一个请求所涉及的各个web组件可以共享,比如:
一个servlet将数据绑定到request,然后转发到一个jsp。
请求闲交给过滤器来处理,然后调用servlet。 session对象上绑定的数据是同一个会话所涉及的各个web组件可以共享。servletContext绑定的数据是公开的,谁都可以访问,而且随时可以访问。
b.访问全局的初始化参数
step1,配置
<context-param>
<param-name>...</param-name>
<param-value>...</param-value>
</context-param>
step2,读取
// 可以被同一个应用中所有的servlet,filter共享。
String getInitParameter(String paramName);
step1,写一个java类,实现相应的监听器接口。
注:
要依据监听的事件类型来选择合适的接口。
比如,要监听session的创建和销毁,需要实现HttpSessionListener接口。
step2,在接口方法当中,实现监听处理逻辑。
step3,配置(web.xml)。
例子:
统计在线人数,
HttpSessionListener(监听session)、ServletContextListener(监听上下文)
转载地址:http://czrws.baihongyu.com/