来自http://blog.csdn.net/uciqxkj/archive/2008/11/06/3238853.aspx
本文以二个Listener实例来讲述ServletContext、HttpSession对象生命周期及ServletContext、HttpSession对象中属性变化情况。
实例一:
用于监听ServletContext对象生命周期及ServletContext对象中属性的变化情况的监听器ContextListener,分别实现了ServletContextListener,ServletContextAttributeListener接口。代码如下:
-
package
com.hc.znpb.servlet;
-
-
import
javax.servlet.ServletContextAttributeEvent;
-
import
javax.servlet.ServletContextAttributeListener;
-
import
javax.servlet.ServletContextEvent;
-
import
javax.servlet.ServletContextListener;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
public
class
ContextListener
implements
ServletContextListener,
-
ServletContextAttributeListener {
-
-
-
-
-
public
void
contextDestroyed(ServletContextEvent arg0) {
-
System.out.println(
"【监听到】应用被关闭!"
);
-
}
-
-
-
-
-
public
void
contextInitialized(ServletContextEvent arg0) {
-
System.out.println(
"【监听到】应用被启动!"
);
-
}
-
-
-
-
-
public
void
attributeAdded(ServletContextAttributeEvent arg0) {
-
System.out.println(
"【监听到】ServletContext对象中新增一名为"
+ arg0.getName()
-
+
"的属性,其属性值为:"
+ arg0.getValue());
-
}
-
-
-
-
-
public
void
attributeRemoved(ServletContextAttributeEvent arg0) {
-
System.out.println(
"【监听到】ServletContext对象中一名为"
+ arg0.getName()
-
+
"的属性被删除!"
);
-
}
-
-
-
-
-
public
void
attributeReplaced(ServletContextAttributeEvent arg0) {
-
System.out.println(
"【监听到】ServletContext对象中一名为"
+ arg0.getName()
-
+
"的属性被更新!"
);
-
}
-
}
实例二:
用于监听HttpSession对象生命周期及HttpSession对象中属性的变化情况的监听器SessionListener,分别实现了HttpSessionListener,HttpSessionAttributeListener接口。代码如下:
-
package
com.hc.znpb.servlet;
-
-
import
javax.servlet.http.HttpSessionAttributeListener;
-
import
javax.servlet.http.HttpSessionBindingEvent;
-
import
javax.servlet.http.HttpSessionEvent;
-
import
javax.servlet.http.HttpSessionListener;
-
-
import
com.hc.znpb.util.SysUtil;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
public
class
SessionListener
implements
HttpSessionAttributeListener,
-
HttpSessionListener {
-
-
-
private
int
userCount =
0
;
-
-
-
-
-
public
void
attributeAdded(HttpSessionBindingEvent arg0) {
-
System.out.println(
"【监听到】HttpSession对象中新增一名为"
+ arg0.getName()
-
+
"的属性,其属性值为"
+ arg0.getValue());
-
}
-
-
-
-
-
public
void
attributeRemoved(HttpSessionBindingEvent arg0) {
-
System.out.println(
"【监听到】HttpSession对象中一名为"
+ arg0.getName()
-
+
"的属性被删除!"
);
-
}
-
-
-
-
-
public
void
attributeReplaced(HttpSessionBindingEvent arg0) {
-
System.out.println(
"【监听到】HttpSession对象中一名为"
+ arg0.getName()
-
+
"的属性被修改!"
);
-
}
-
-
-
-
-
public
void
sessionCreated(HttpSessionEvent arg0) {
-
-
arg0.getSession().setAttribute(SysUtil.SESSION_COUNT_USERS,
-
new
Integer(
this
.userCount++));
-
System.out.println(
"【监听到】新用户"
+ arg0.getSession().getId() +
"上线!"
);
-
System.out.println(
"【在线用户数】"
+
this
.userCount +
"人"
);
-
}
-
-
-
-
-
public
void
sessionDestroyed(HttpSessionEvent arg0) {
-
-
arg0.getSession().setAttribute(SysUtil.SESSION_COUNT_USERS,
-
new
Integer(--
this
.userCount));
-
System.out.println(
"【监听到】新用户"
+ arg0.getSession().getId() +
"下线!"
);
-
System.out.println(
"【在线用户数】"
+
this
.userCount +
"人"
);
-
}
-
}
最后修改web.xml文件,如下:
-
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
-
<
web-app
xmlns
=
"http://java.sun.com/xml/ns/j2ee"
-
xmlns:xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
version
=
"2.4"
-
xsi:schemaLocation
=
"http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>
-
<
listener
>
-
<
listener-class
>
-
com.hc.znpb.servlet.ContextListener
-
</
listener-class
>
-
</
listener
>
-
<
listener
>
-
<
listener-class
>
-
com.hc.znpb.servlet.SessionListener
-
</
listener-class
>
-
</
listener
>
-
</
web-app
>
-
分享到:
相关推荐
8. **过滤器和监听器**:在J2EE应用中,过滤器(Filter)可以用来拦截和修改请求或响应,监听器(Listener)用于监听特定事件,如会话的创建和销毁。这些组件可以用来实现功能,如登录验证、权限控制和会话超时提醒...
5. **事件监听器**:通过`listener`元素注册事件监听器,比如`lee.MyLoadListener`和`lee.MySaveListener`。这种方式虽然简单,但是不能共享监听器实例,对于多个监听器来说,每次都会创建新的实例。 #### 四、事件...
在1.5版本中,Servlet 2.4规范引入了包括过滤器(Filter)和监听器(Listener)在内的增强功能,使开发者可以更灵活地控制请求和响应流程。 2. **JSP(JavaServer Pages)**:JSP是用于创建动态网页的Java技术。JSP...
1. **Servlet 2.3规范**:增加了过滤器(Filter)和监听器(Listener)的概念,增强了对HTTP请求处理的灵活性。 2. **JSP 1.2规范**:引入了EL(Expression Language),使得页面表达式更加简洁。 3. **EJB 2.0**:...
监听器用于监听应用程序中的某些事件,如应用程序初始化、销毁、会话创建等。 示例代码: ```java public class AppListener implements ServletContextListener { public void contextInitialized...
通过 web.xml 文件,我们可以对 Web 应用进行配置,例如设置应用程序的名称、描述、过滤器、监听器、Servlet、会话超时等等。 以下是 web.xml 文件中的一些常用元素: 1. `<web-app>`:web.xml 文件的根元素,用于...
此外,Servlet 2.5还增强了过滤器(Filter)和监听器(Listener)的功能。 ### 5. JavaMail API J2EE 5.0提供了JavaMail API,用于处理电子邮件。开发者可以通过`javax.mail`包中的类和接口发送、接收邮件,实现...
- **熟悉不同类型的监听器**:掌握Java Web环境中提供的多种监听器类型,并理解它们的应用场景。 - **掌握监听器的使用方法**:学会如何在项目中实现和部署监听器,以便监控和响应特定事件。 #### 二、监听器技术...
同时,监听器(Listener)则可以监听Web组件的生命周期事件,例如监听session的创建、销毁,或者监听ServletContext的初始化和销毁。 此外,课程可能还会涵盖MVC设计模式、JSP和JSTL的使用,以及Servlet与JDBC的...
7. **<listener>**: listener元素声明事件监听器,它们会在特定的Servlet容器事件(如会话创建、销毁等)发生时被调用。 8. ****: 此元素用于定义Servlet,包括其类名和初始化参数,使得Servlet能够在应用启动时被...
八、监听器(Listener) ServletContextListener、ServletRequestListener和ServletSessionListener等监听器接口,可以帮助我们在特定事件(如应用启动、请求到达、会话创建)发生时执行相应操作。 九、MVC框架与...
7. **过滤器和监听器**:Servlet 2.5引入了过滤器(Filter)和监听器(Listener)的概念,过滤器可以拦截请求和响应,实现数据转换、权限验证等功能;监听器则可以监听特定的事件,如会话的创建和销毁,以便进行相应...
5. **监听器(Listener)**:可以监听Servlet容器的特定事件,如会话创建、销毁等,实现自动化管理。 J2EE中文API文档是针对中国开发者编写的,旨在帮助他们更好地理解和使用这些技术。文档通常包括以下内容: 1. ...
面试中可能涉及Servlet的生命周期、过滤器(Filter)、监听器(Listener)的使用,以及Servlet与JSP的协同工作。 5. **EJB(Enterprise JavaBeans)**:EJB是J2EE中用于构建企业级应用的组件模型,提供了一种规范来...
面试中可能涉及消息队列、主题、持久化消息、消息监听器等。 7. **JNDI(Java Naming and Directory Interface)**:JNDI提供了查找和管理资源的接口,如查找EJB、数据源等。面试中可能涉及目录服务的基本概念和...
例如,增强了过滤器(Filter)和监听器(Listener)的功能,支持动态部署,以及更好的错误处理机制。 **6. JAX-RS(Java API for RESTful Web Services)** JAX-RS是Java中实现RESTful服务的标准API,首次在J2EE ...
14. Spring初始化:Spring的IOC容器初始化通常使用Servlet监听器(Listener)进行。 15. Struts2核心控制器:Struts2的核心控制器是过滤器(Filter)。 16. MVC模式:M代表模型(Model),C代表控制器(Controller...
书中的源代码部分将详细展示如何在实践中应用J2EE技术。 以下是基于J2EE的一些关键知识点: 1. **Servlet和JSP**:Servlet是Java EE中的核心组件,用于处理HTTP请求,而JSP(JavaServer Pages)则提供了方便的视图...
- **过滤器(Filter)与监听器(Listener)**:用于拦截请求、响应,监听Web组件的状态。 - **会话管理**:Cookie和Session的原理、使用和注意事项。 - **MVC模式**:模型-视图-控制器架构的理解及其在Web开发中...
7. **Listener**:Servlet 2.5支持事件监听器,如HttpSessionListener、ServletRequestListener和ServletContextListener,它们可以在特定事件(如session创建或销毁)发生时执行操作。 **J2EE API** J2EE API不仅...