ServletContext、Session Listener (监听器)
[测试环境:XP_sp2(zh_CN), jdk1.5.0_10(sun), Tomcat 5.0.28]
Servlet程序分为三类:
· 标准Servlet
· 过滤器
· 监听器
主要有以下三类:
· ServletContext:Servlet上下文(WEB容器的监听)
· Session:对Session监听(用户会话监听)
· Request监听
一、对ServletContext监听
在WEB端实现监听 (一系列的监听接口)
1、ServletContextListener:对整个Servlet上下文监听(启动、销毁)
public void contextInitialized(ServletContextEvent sce):上下文初始化
public void contextDestroyed(ServletContextEvent sce):上下文销毁
ServletContextEvent事件:取得一个ServletContext(application)对象
public ServletContext getServletContext()
2、ServletContextAttributeListener:对Servlet上下文属性的监听
public void attributeAdded(ServletContextAttributeEvent scab):增加属性(setAttribute)
public void attributeRemoved(ServletContextAttributeEvent scab):属性删除(removeAttribute)
public void attributeReplaced(ServletContextAttributeEvent scab):属性替换(第二次设置同一个属性)
ServletContextAttributeEvent事件:能取得设置属性的名称与内容
public String getName():得到属性名称
public Object getValue():得到属性的值
public class XXX implements ServletContextListener,ServletContextAttributeListener {...}
当前虚拟目录的绝对路径: application.getRealPath("/") ;
上下文监听主要是针对容器的:初始化、销毁、属性操作
二、对Session监听
对session的创建、销毁、属性操作
Session属于http协议下的内容:javax.servlet.http.HttpSessionXxxx
1、HttpSessionListener:对session的整体状况的监听
public void sessionCreated(HttpSessionEvent se):session创建
public void sessionDestroyed(HttpSessionEvent se): session销毁
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 Object getValue();取得属性的值
public HttpSession getSession();取得当前session
public class XXX implements HttpSessionListener,HttpSessionAttributeListener {...}
//-------------------------------------------------------------------
web.xml 增加-->
<!-- 监听器 -->
<listener>
<listener-class>ServletContextListenerDemo</listener-class>
</listener>
<!-- session超时配置 -->
<session-config>
<!-- session 超时分钟值(不是很准确,有误差,TOMCAT v5.0.28 中有延后) -->
<session-timeout>1</session-timeout>
</session-config>
手动使用session失效:
session.invalidate();
//-------------------------------------------------------------------
session.setAttribute(key, value)中的属性在session.invalidate()和session超时失效时都会由容器自己删除(监听器方法可以监听到)
application.setAttribute(key, value)中的属性在关闭容器
相关推荐
在Java Web开发中,我们经常需要在服务器启动时自动加载特定的Servlet,并让它们执行一些初始化操作或定时任务。这通常涉及到对Web应用的配置文件`web.xml`以及Servlet类本身的编程。以下将详细讲解如何实现这个功能...
在Unix/Linux系统中,可以通过执行`bin/start.jar`来启动Jetty服务;在Windows系统中,可以运行`start.bat`。 **步骤2:创建Web应用程序** 为了在Jetty上运行一个Web应用,你需要创建一个标准的Web应用目录结构,...
Windows服务是在Windows操作系统中运行的后台程序,它们可以在用户登录或系统启动时自动启动,并且能够在没有用户界面的情况下持续运行。与普通的控制台应用程序或ASP.NET Web应用程序不同,Windows服务不受用户会话...
JAVA自动执行任务是指在WEB工程中实现自动执行任务的功能,通过使用Servlet上下文相关的侦听器和Java定时器来实现。下面是相关知识点的详细解释: 1. Servlet上下文相关的侦听器 在WEB工程中,Servlet上下文相关...
在项目根目录下运行以下命令,即可启动一个简单的Python Web服务器: ```bash python -m http.server # Python 3 python -m SimpleHTTPServer # Python 2 ``` 最后,了解如何编写测试用例和组织测试框架也非常...
这样,当项目启动时, InitListener 类的 contextInitialized 方法将被执行,从而执行指定的方法。 总结来说,使用 ServletContextListener 可以轻松地实现 Java 项目启动时执行指定方法。通过实现这个接口,我们...
本案例“timer随tomcat启动案例”就是针对这种情况的一个实例,它利用了Java的定时器(Timer)类和Tomcat的生命周期管理来实现在Tomcat服务器启动时自动运行的任务。 首先,我们要理解`Timer`类是Java.util包下的一...
要运行Python-WebSSH,首先需要安装必要的依赖,然后根据项目文档进行配置和启动服务。 总的来说,Python-WebSSH是一个实用的工具,它利用Python的灵活性和强大的生态系统,结合现代Web技术,为用户提供了一种便捷...
当用户在网页上执行某个操作时,JavaScript代码会调用相应的API发送请求到服务器,服务器再根据请求内容调用批处理文件。 3. **RemoteExpert.reg**:这是一个注册表文件,用于导入或导出Windows注册表中的键值。...
在IT行业中,定时启动代码是一种常见且实用的技术,它允许程序在特定的时间点自动执行,无需人工干预。这种技术在各种场景下都有广泛的应用,比如服务器维护、数据备份、任务调度等。"3D版定时启动代码"可能指的是将...
6. **配置服务启动类型**:在安装服务时,可以设置服务的启动类型,如自动(启动系统时自动运行)、手动(需手动启动)或禁用。 7. **日志记录**:为了便于调试和故障排查,守护进程应记录关键操作的日志,例如进程...
代码隐藏页模型与单文件页模型不同的是,代码隐藏页模型将事物处理代码都存放在cs文件中,当ASP.NET网页运行的时候,ASP.NET类生成时会先处理cs文件中的代码,再处理.aspx页面中的代码。这种过程被成为代码分离。 ...
在Web开发中,有时我们需要实现页面的自动跳转功能,比如在登录成功后自动跳转到首页,或者在完成某个操作后自动返回上一页等场景。本文将详细介绍一个简单的JavaScript自动跳转页面的示例代码,并对其工作原理进行...
4. 编写Spring Boot启动类,启动Camunda服务。 #### 四、测试验证Camunda 在完成所有准备工作之后,接下来是对Camunda的功能进行测试。 ##### 4.1 发布流程模型 发布流程模型是使用Camunda的第一个步骤,涉及到...
ChromeDriver使得我们可以编写测试脚本,对Web应用的前端逻辑、用户交互以及后端服务的响应进行自动化验证。 在Linux环境下,使用ChromeDriver进行自动化测试有一些需要注意的点: 1. 确保安装的Chrome浏览器版本与...
`setTimeout`函数用于设置一个定时器,该定时器会在指定的时间(以毫秒为单位)之后执行一次某个函数。其基本语法结构如下: ```javascript setTimeout(function, delay, [param1, param2, ...]); ``` - `function...
Eclipse会自动同步代码并启动服务器,然后你可以在浏览器中访问应用。 6. **使用MVC框架**:为了提高开发效率和代码复用,通常会使用如Spring MVC或Struts这样的MVC框架。这些框架简化了请求处理、视图渲染和业务...
通过上述内容,我们可以构建一个基于Quartz的Web应用定时任务系统,实现任务的自动执行。对于"Quartz_demo"这个压缩包文件,可能包含了示例代码、配置文件和说明文档,可以进一步帮助学习和实践Quartz在Web环境中的...
- 例如,我们可以编写代码在特定条件满足时启动一个新的服务器实例,或者在负载过高时关闭某个实例。 5. **多服务器环境**: - 在分布式系统中,动态引用WebServers技术有助于管理多个服务器实例,比如负载均衡...