监听器
命名:
都是Listener所以以Listener结尾
如果只对生命周期监听: XXListener:如ServletContextListener,HttpSessionListener
如果要对属性监听: XXAttributeListener:
是针对于整个Web环境的监听
主要有以下三类:
1。ServletContext:对整个应用监听
2。Session:对Session监听
3。Request监听
1。对ServletContext监听
在Web端实现监听 = 实现一系列的监听接口
1.ServletContextListener:对整个Servlet上下文监听(启动,销毁)
public void contextInitialized(ServletContextEvent sce);上下文初始化
public void contextDestroyed(ServletContextEvent sce);//上下文销毁
ServletContextEvent事件类:
public ServletContext getServletContext(); //得到application对象
2 . -----只有getServletContext().setAttribute("aa","bb");这样的东西才起作用
ServletContextAttributeListener: 对Servlet上下文属性的监听
public void attributeAdded(ServletContextAttributeEvent scab); 增加属性
public void attributeRemoved(ServletContextAttributeEvent scab);
public void attributeReplaced(ServletContextAttributeEvent acab);
ServletContextAttributeEvent 属性事件类:
public String getName(); //得到属性名称
public Object getValue(); //得到属性的值
因为Listener与连接无关,所以他只要配置一个
<listener>
<listener-class>cn.mldn.listener.ServeletContextDemo</listener-class>
</listener>
public class ServletContextDemo
implements ServletContextListener,ServletContextAttributeListener
{
private ServletContext application = null ;
// 实现方法
public void contextInitialized(ServletContextEvent sce)
{
this.application = sce.getServletContext() ;
System.out.println("** 上下文初始化 ...") ;
System.out.println("** 当前虚拟目录的绝对路径:"+this.application.getRealPath("/")) ;
}
public void contextDestroyed(ServletContextEvent sce)
{
System.out.println("** 上下文销毁 ...") ;
}
public void attributeAdded(ServletContextAttributeEvent scab)
{
System.out.println("** 增加属性:"+scab.getName()+" --> "+scab.getValue()) ;
}
public void attributeRemoved(ServletContextAttributeEvent scab)
{
System.out.println("** 删除属性:"+scab.getName()+" --> "+scab.getValue()) ;
}
public void attributeReplaced(ServletContextAttributeEvent scab)
{
System.out.println("** 替换属性:"+scab.getName()+" --> "+scab.getValue()) ;
}
};
上下文监听主要是正对容器的:初始化,销毁,属性操作
二:Session监听
对Session的创建,销毁,属性操作
1. HttpSessionListener:对session整体状况的监听
public void sessionCreated(HttpSessionEvent e);
public void sessionDestroyed(HttpSessionEvent e);
HttpSessionEvent事件:
public HttpSession getSession();取得当前操作的session
2.HttpSessionAttributeListener:对session属性的监听
public void attributeAdded(HttpSessionBindingEvent se); //属性增加
public void attributeRemoved(HttpSessionBindingEvent se);
public void attributeReplaced(HttpSessionBIndingEvent se)
HttpSessionBindingEvent事件:
public String getName();
public String getValue();
public HttpSession getSession();
Session如何销毁
1。session超时
需要在web.xml中进行配置
<session-config>
<session-timeout>1</session-timeout> //代表一分钟失效
</session-config>
2。手工使session失效
invalidate();
案例:
统计当前在线人员(在线人员列表)
实现那几个接口?
1.在线人员列表时对所有人都起作用,所有的数据必须保持在application之中,意味着在OnlineDemo中
必须有一个ServletContext对象
2。是针对于session的变化进行操作的
如果登录成功,则将用户名保存在session之中
3。如果用户注销,则需要对相应的用户名称删除
public class OnLineDemo
implements ServletContextListener,HttpSessionListener,HttpSessionAttributeListener
{
// 声明一个ServletContext对象
private ServletContext application = null ;
public void contextInitialized(ServletContextEvent sce)
{
// 容器初始化时,向application中存放一个空的容器
this.application = sce.getServletContext() ;
this.application.setAttribute("alluser",new ArrayList()) ;
}
public void contextDestroyed(ServletContextEvent sce)
{}
public void sessionCreated(HttpSessionEvent se)
{}
public void sessionDestroyed(HttpSessionEvent se)
{
// 将用户名称从列表中删除
List l = (List)this.application.getAttribute("alluser") ;
String value = (String)se.getSession().getAttribute("uname") ;
l.remove(value) ;
this.application.setAttribute("alluser",l) ;
}
public void attributeAdded(HttpSessionBindingEvent se)-----------登录一个就放一个到application.setAttribute("user",user);
{
// 如果登陆成功,则将用户名保存在列表之中
List l = (List)this.application.getAttribute("alluser") ; //取出List
l.add(se.getValue()) ; //取出user
this.application.setAttribute("alluser",l) ; //在List中存入user --------因为这三步对于每个用户都是一样的,所以抽取出来
}
public void attributeRemoved(HttpSessionBindingEvent se)
{}
public void attributeReplaced(HttpSessionBindingEvent se)
{}
};
分享到:
相关推荐
7. **监听器(Listener)**:监听特定事件,如会话创建、销毁、上下文初始化等,可以进行相应的操作。 ### 集成与应用 在实际开发中,JSP通常用于视图层,Servlet则用于控制层,这种模式被称为MVC(Model-View-...
6. **过滤器和监听器** - Servlet API中还包括Filter和Listener接口,它们能增强应用的功能,比如实现登录验证、字符编码转换、会话管理等。 7. **Web容器** - 如Tomcat、Jetty等,它们提供运行Servlet和JSP的环境...
在这里,你可以配置Servlet、过滤器、监听器等。例如,`jsp-config`元素用于配置JSP页面的相关设置,如默认的编码、错误页面等。 ```xml <jsp-config> <jsp-property-group> <url-pattern>/*.jsp</url-pattern> ...
本文档详细介绍了作用域对象、Servlet上下文监听器、Servlet会话监听器、Servlet请求监听器
\ch12\* 第12章 使用Servlet2.4过滤器和监听器所有例程代码 \ch13\* 第13章 数据库访问:JDBC所有例程代码 \ch14\* 第14章 用户注册登录模块所有例程代码 \ch15\* 第15章 购物车模块所有例程代码 \ch16\* 第16...
4. **ServletContext接口**:提供了对整个Web应用程序的访问,可以获取全局信息或注册监听器。 5. **Filter和FilterChain**:支持过滤器功能,允许开发者在请求到达目标Servlet之前或之后进行拦截和处理。 **标签和...
1. **部署描述符**:web.xml文件是Web应用的配置文件,它定义了Servlet、过滤器和监听器的映射,以及其他配置信息。 2. **生命周期**:Servlet具有初始化、服务、销毁三个阶段,JSP在首次被请求时会被转换为Servlet...
4. **配置**:如web.xml文件,定义了Web应用的部署描述符,包括Servlet映射、过滤器、监听器等配置。 5. **资源**:如图片、CSS样式表、JavaScript库等,用于提升用户体验。 6. **文档**:可能包含设计文档、用户...
6. **Web应用部署**:`web.xml`是Web应用程序的部署描述符,它定义了Servlet的映射、过滤器、监听器等配置,是Spring Boot等现代框架中的`application.properties`或`application.yml`的前身。`src`目录通常包含Java...
3. **注解支持(Annotations)**:可以使用注解来配置Servlet、过滤器和监听器,替代传统的web.xml部署描述符。 4. **会话管理**:提供了一套完整的会话跟踪和管理机制。 5. **异步处理**:引入了Asynchronous ...
这些扩展可能包含自定义断言、测试规则、测试监听器或者适配器,用于增强标准JUnit的功能,帮助开发者编写更精确、更易维护的测试代码。 结合标签"开源项目",我们可以推测Dandelion JSP和JUnit Extras都是遵循开放...
6. **监听器**:监听器(Listener)可以监听特定的事件,如会话创建、销毁,或者ServletContext的变化等。 JSP API 2.1是JSP规范的第五个版本,它是用来创建动态HTML页面的Java技术。JSP 2.1的关键特性包括: 1. *...
它是每个Java Web应用程序的核心配置文件,用来定义Servlet、过滤器、监听器、会话超时、错误页面等元素。例如,你可以在这里映射Servlet,设置初始化参数,或者配置安全性相关的设置。熟练掌握web.xml的配置对于...
2. `web.xml`:这是一个标准的Web应用部署描述符,定义了应用的配置信息,包括Servlet的映射、过滤器、监听器等。 3. `.java` 文件:这是Servlet和JSP对应的Java源代码文件,可能包括自定义的Servlet类和JSP页面转换...
- **配置文件**:如web.xml,定义了Servlet、过滤器、监听器等组件的配置,控制应用的启动和运行。 - **资源文件**:如CSS样式表、JavaScript脚本、图片等,用于增强用户体验。 - **其他支持文件**:如数据库连接...
- 监听器可以监听服务器、会话、请求和ServletContext等事件。 在韩顺平老师的J2EE课程中,这些概念和实践将会深入讲解,通过源代码学习,你可以更好地理解它们的工作原理,提升J2EE开发能力。通过分析提供的源...
jsp过滤器与监听器,很好的讲课和学习的ppt
在本示例中,“监听器实例jsp编写望大家喜欢”这个项目,显然涉及到如何在JSP(JavaServer Pages)中使用监听器来实现特定功能。下面我们将深入探讨这一主题。 首先,我们需要了解什么是监听器。在Java Web中,监听...
8. **过滤器(Filter)和监听器(Listener)**:这些是Java Web的高级特性,过滤器可以对请求和响应进行预处理和后处理,比如登录检查;监听器可以监听特定事件,如用户的登录登出。 9. **Eclipse或IntelliJ IDEA...
它们是可重用的组件,具有默认的构造函数、getter和setter方法,以及一些可选的属性,如序列化支持和属性变化监听器。Java Bean在JSP中扮演了数据模型的角色,存储和管理页面的数据。 3. **JSP中的Bean** 在JSP中...