Tomcat启动时载入某个servlet

Posted gavanwanggw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat启动时载入某个servlet相关的知识,希望对你有一定的参考价值。

     当我们做一个java项目时,有几个功能都须要载入servlet或者实现某个共同的方法,尽管我们一味地在每个功能中依次载入也不是不能够,可是当某个servlet 或者方法被频繁地载入和应用。我们将面向对象的思想置于不顾却也真的说只是去。

     所以。对于这类的servlet我们须要在Tomcat启动时直接载入,比方初始化信息、读取配置文件等需求时,我们就能够通过web.xml的配置文件对来实现这个需求:

    首先,AbstractItemServlet 类中封装了相应的Init方法:

<span style="font-family:FangSong_GB2312;font-size:18px;">package com.bjpowernode.drp.util.servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import com.bjpowernode.drp.util.BeanFactory;

/**
 * 
 * 负责系统在server启动时初始化
 * @author chao
 *
 */
public class InitServlet extends HttpServlet {

	@Override
	public void init() throws ServletException {		
		System.out.println("创建BeanFactory。。。

。。"); //将抽象工厂放到servletContext中 BeanFactory beanFactory = BeanFactory.getInstance(); this.getServletContext().setAttribute("beanFactory", beanFactory); } }</span>

      其次。在项目的配置文件web.xml(路径为:/WebRoot/WEB-INF/web.xml)中对抽象出来的servlet进行配置:

<span style="font-family:FangSong_GB2312;font-size:18px;">      <!-- 设置tomcat一启动就运行InniServlet -->
	<servlet>
	   <servlet-name>InitServlet</servlet-name>
	   <servlet-class>com.bjpowernode.drp.util.servlet.InitServlet</servlet-class>
	   <load-on-startup>2</load-on-startup>
	</servlet></span>

      这样就能够实如今Tomcat启动时调用com.bjpowernode.drp.util.servlet.InitServlet的init()方法。

     当中。<load-on-startup>N</load-on-startup> 的含义是:标记容器是否在启动的时候就载入这个servlet。当值为0或者大于0时。表示容器在应用启动时就载入这个servlet。当是一个负数时或者没有指定时。则指示容器在该servlet被选择时才载入。正数的值越小,启动该servlet的优先级越高。

     有了这种方法,我们既能够省去每次调用该方法的运行时间和占用空间,又能够完美地实现面向对象的思想。

那我们又何乐而不为呢?

                       技术分享

以上是关于Tomcat启动时载入某个servlet的主要内容,如果未能解决你的问题,请参考以下文章

java程序里运行tomcat启动的时候就执行某个类里的方法

servlet的总结

java程序里运行tomcat启动的时候就执行某个类里的方法

Tomcat启动时自动加载Servlet

深入理解Tomcat系列之五:Context容器和Wrapper容器

Servlet在启动时加载的tomcat源码(原创)