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)中的属性在关闭容器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值