`

web 服务启动时自动执行某个类的代码

    博客分类:
  • web
 
阅读更多
 

方法1:web服务启动时自动加载servlet

 

 

 

 

就是写一个servlet,在init()方法中写好想要执行的程序,

同时,在web.xml配置文件中指出

<servlet>
    <servlet-name>XXXX</servlet-name>
    <servlet-class>XXXX</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

其中粗体部分即可实现tomcat启动时执行该servlet,Jboss中同样适用~

load-on-startup的值必须为整数

当load-on-startup值为负整数或者未指定时,容器在该servlet被调用时加载

当其值为0和正整数时,容器启动时加载,值越小,优先级越高

 

 

方法2:让服务启动或停止时自动执行代码

原理是使用servlet的监听器,建立一个servlet类并且实现ServletContextListener 接口:

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class TestListener implements ServletContextListener {
  public void contextInitialized(ServletContextEvent event) {
  //启动时要自动执行的代码

  }

  public void contextDestroyed(ServletContextEvent event) {
  //停止时要自动执行的代码
 

  }
}

在web.xml中添加一个listener ,以便让该servlet类自动执行,在web.xml中添加如下内容:

     < listener >
     < listener-class > TestListener </ listener-class >
     </ listener >
listener-class里面的内容就是刚才添加的servlet类

3、若用spring框架可以通过init、destory方法

附录:

ServletContext、Session Listener (监听器)

分享
分类: JSP*Servlet 2007-12-18 10:17
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项目服务器启动时自启动指定的Servlet,并定时执行任务

    在Java Web开发中,我们经常需要在服务器启动时自动加载特定的Servlet,并让它们执行一些初始化操作或定时任务。这通常涉及到对Web应用的配置文件`web.xml`以及Servlet类本身的编程。以下将详细讲解如何实现这个功能...

    jetty简单启动web服务

    在Unix/Linux系统中,可以通过执行`bin/start.jar`来启动Jetty服务;在Windows系统中,可以运行`start.bat`。 **步骤2:创建Web应用程序** 为了在Jetty上运行一个Web应用,你需要创建一个标准的Web应用目录结构,...

    Asp.net(C#) 创建windows服务并定时执行

    Windows服务是在Windows操作系统中运行的后台程序,它们可以在用户登录或系统启动时自动启动,并且能够在没有用户界面的情况下持续运行。与普通的控制台应用程序或ASP.NET Web应用程序不同,Windows服务不受用户会话...

    JAVA自动执行任务

    JAVA自动执行任务是指在WEB工程中实现自动执行任务的功能,通过使用Servlet上下文相关的侦听器和Java定时器来实现。下面是相关知识点的详细解释: 1. Servlet上下文相关的侦听器 在WEB工程中,Servlet上下文相关...

    python自动化测试-web-selenium

    在项目根目录下运行以下命令,即可启动一个简单的Python Web服务器: ```bash python -m http.server # Python 3 python -m SimpleHTTPServer # Python 2 ``` 最后,了解如何编写测试用例和组织测试框架也非常...

    java如何实现项目启动时执行指定方法

    这样,当项目启动时, InitListener 类的 contextInitialized 方法将被执行,从而执行指定的方法。 总结来说,使用 ServletContextListener 可以轻松地实现 Java 项目启动时执行指定方法。通过实现这个接口,我们...

    timer随tomcat启动案例

    本案例“timer随tomcat启动案例”就是针对这种情况的一个实例,它利用了Java的定时器(Timer)类和Tomcat的生命周期管理来实现在Tomcat服务器启动时自动运行的任务。 首先,我们要理解`Timer`类是Java.util包下的一...

    Python-WebSSH一个基于Web的ssh客户端

    要运行Python-WebSSH,首先需要安装必要的依赖,然后根据项目文档进行配置和启动服务。 总的来说,Python-WebSSH是一个实用的工具,它利用Python的灵活性和强大的生态系统,结合现代Web技术,为用户提供了一种便捷...

    web调用本地程序示例

    当用户在网页上执行某个操作时,JavaScript代码会调用相应的API发送请求到服务器,服务器再根据请求内容调用批处理文件。 3. **RemoteExpert.reg**:这是一个注册表文件,用于导入或导出Windows注册表中的键值。...

    3D版定时启动代码

    在IT行业中,定时启动代码是一种常见且实用的技术,它允许程序在特定的时间点自动执行,无需人工干预。这种技术在各种场景下都有广泛的应用,比如服务器维护、数据备份、任务调度等。"3D版定时启动代码"可能指的是将...

    c#实现的守护进程,包含代码

    6. **配置服务启动类型**:在安装服务时,可以设置服务的启动类型,如自动(启动系统时自动运行)、手动(需手动启动)或禁用。 7. **日志记录**:为了便于调试和故障排查,守护进程应记录关键操作的日志,例如进程...

    ASP.NET的网页代码模型及生命周期

    代码隐藏页模型与单文件页模型不同的是,代码隐藏页模型将事物处理代码都存放在cs文件中,当ASP.NET网页运行的时候,ASP.NET类生成时会先处理cs文件中的代码,再处理.aspx页面中的代码。这种过程被成为代码分离。 ...

    JavaScript自动跳转页面代码

    在Web开发中,有时我们需要实现页面的自动跳转功能,比如在登录成功后自动跳转到首页,或者在完成某个操作后自动返回上一页等场景。本文将详细介绍一个简单的JavaScript自动跳转页面的示例代码,并对其工作原理进行...

    基于camunda源代码编译运行流程引擎

    4. 编写Spring Boot启动类,启动Camunda服务。 #### 四、测试验证Camunda 在完成所有准备工作之后,接下来是对Camunda的功能进行测试。 ##### 4.1 发布流程模型 发布流程模型是使用Camunda的第一个步骤,涉及到...

    chromedriver.exe【chrome117版本linux64、谷歌浏览器驱动,自动化测试框架,Web自动化】

    ChromeDriver使得我们可以编写测试脚本,对Web应用的前端逻辑、用户交互以及后端服务的响应进行自动化验证。 在Linux环境下,使用ChromeDriver进行自动化测试有一些需要注意的点: 1. 确保安装的Chrome浏览器版本与...

    web 页面 定时关闭

    `setTimeout`函数用于设置一个定时器,该定时器会在指定的时间(以毫秒为单位)之后执行一次某个函数。其基本语法结构如下: ```javascript setTimeout(function, delay, [param1, param2, ...]); ``` - `function...

    Eclipse web开发从入门到精通的全部源码.rar

    Eclipse会自动同步代码并启动服务器,然后你可以在浏览器中访问应用。 6. **使用MVC框架**:为了提高开发效率和代码复用,通常会使用如Spring MVC或Struts这样的MVC框架。这些框架简化了请求处理、视图渲染和业务...

    Quartz 定时任务web使用

    通过上述内容,我们可以构建一个基于Quartz的Web应用定时任务系统,实现任务的自动执行。对于"Quartz_demo"这个压缩包文件,可能包含了示例代码、配置文件和说明文档,可以进一步帮助学习和实践Quartz在Web环境中的...

    动态引用WebServers操作说明

    - 例如,我们可以编写代码在特定条件满足时启动一个新的服务器实例,或者在负载过高时关闭某个实例。 5. **多服务器环境**: - 在分布式系统中,动态引用WebServers技术有助于管理多个服务器实例,比如负载均衡...

Global site tag (gtag.js) - Google Analytics