您的位置:首页 > 运维架构 > Tomcat

Tomcat启动时加载某个servlet

2015-06-29 16:03 645 查看
当我们做一个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的优先级越高。

有了这个方法,我们既可以省去每次调用该方法的执行时间和占用空间,又可以完美地实现面向对象的思想。那我们又何乐而不为呢?


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: