ServletContextListener使用

 ServletContextListener 接口作用:监听 ServletContext 对象的生命周期,实际上就是监听 Web 应用的生命周期。

 ServletContextListener 接口主要有两个方法,一个在当Servlet 容器启动web应用时调用,另一个是在Servlet 容器终止web应用时调用。实现 ServletContextListener 接口需重写这两方法。

1)ServletContextListener 接口

public interface ServletContextListener extends EventListener {
    public void contextInitialized(ServletContextEvent sce);
    public void contextDestroyed(ServletContextEvent sce);
}

2)实现ServletContextListener 接口,用于开启后台线程。

import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

  
public class ScanPushNoticeTimer implements ServletContextListener
{

	private Timer timer;
	
	@Override
	public void contextDestroyed(ServletContextEvent sce) 
	{
		if (timer != null)
	    {
	       timer.cancel();
	    }
	}
//启动web应用时,同时开始线程
	@Override
	public void contextInitialized(ServletContextEvent sce) {
	   	timer = new Timer(true);
	   	timer.schedule(new ScanPushNoticeThread(), 100*1000);
	}

}

3)实现ServletContextListener 接口,用于设置web应用初始参数,或者设置ServletContext初始参数等,用到方法setAttribute。

      1.设置web应用参数,从web.xml中获取web应用参数:

@WebListener
public class getContextParameter implements ServletContextListener {
	public void contextInitialized(ServletContextEvent sce) {
		ServletContext context = sce.getServletContext();
        //从web.xml中获取web应用参数
		String parameter = context.getInitParameter("parameter");
        //设置web应用参数
		context.setAttribute("parameter ", parameter );
	}
	public void contextDestroyed(ServletContextEvent sce) {}
}

     2.@WebListener

        Servlet3.0提供@WebListener注解将一个实现了特定监听器接口的类定义为监听器,@WebFilter过滤器也可以同样用法,如果不用注解就需要在web.xml里用如下配置:    2)中启动web应用时跑后台线程就需要下面配置

 <listener> 
   <listener-class>com.listener.ScanPushNoticeTimer </listener-class> 
 </listener> 

     3.设置完成后我们可以在web应用启动的时候,在任意的servlet或者jsp中通过getServletContext().getAttribute(“**”);来获取存入的参数或者其他

        额外:获取web.xml中servlet参数和web应用参数,web.xml参数配置如下:

        配置文件中对参数的配置的不同. servletParam这个参数是属于servletTest这个Servlet, webParam这个参数是属于web应用的,被各个servlet共享.

    <context-param>  
      <param-name>webParam</param-name>  
      <param-value>a</param-value>  
    </context-param>  
      
    <servlet>  
        <servlet-name>servletTest</servlet-name>  
        <servlet-class>servletTest</servlet-class>  
        <init-param>  
          <param-name>servletParam</param-name>  
          <param-value>b</param-value>  
        </init-param>  
    </servlet>
public class getParameter extends HttpServlet {
	@Override
	public void getParms() throws ServletException {
        //获取listener里初始化的参数
	String  parameter= (String)getServletContext().getAttribute("parameter");
        //获取web.xml中配置的servlet参数
        String s1 = this.getInitParameter("servletParam");
        //获取web.xml中配置的web应用参数  
        String s2 = this.getServletContext().getInitParameter("webParam");
	}
}

 

     类实现ServletContextListener接口,重写web应用初始化和终止时所调用的两方法,启动web应用时获取context-paramweb环境参数,然后配置到context的attribute里,在servlet或者jsp中通过getServletContext().getAttribute(“**”)来获取存初始配置的参数。可用于网站访问量统计,web应用启动的同时跑线程,web应用启动的同时获取数据库连接等情况。

参考:http://momoxiaoxiong.iteye.com/blog/1214238

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值