Servlet初始化:随服务器启动而运行

有时候,我们需要仅仅是在服务启动,而非其他更为复杂的定时任务的时候,做些初始化的工作,比如将一些数据导入到内存中等等,用Servlet的初始化可以很好的做到这一点。而初始化工作是通过Servlet中的init()方法来做的。 


建一个Servlet类:AutoRunServlet.java,代码如下: 

public class AutoRunServlet extends HttpServlet { 

private static final long serialVersionUID = 1L; 

public void init() throws ServletException{ 

System.out.println(">>你可以在这里初始化一些东西>>"); 

        String v = this.getInitParameter("a"); 
        Enumeration e = this.getInitParameterNames(); 
        while(e.hasMoreElements()){ 
            System.out.println(">>haha>>"+e.nextElement()); 
        } 




在web.xml中进行配置: 

<servlet> 

<servlet-name>AutoRunServlet</servlet-name> 

<servlet-class>AutoRunServlet</servlet-class>//类的包路径 

<load-on-startup>0</load-on-startup> 
<init-param> 
<param-name>a</param-name> 
<param-value>传入的参数值1</param-value> 
</init-param> 
<init-param> 
<param-name>b</param-name> 
<param-value>传入的参数值2</param-value> 
</init-param> 

</servlet><load-on-startup>0</load-on-startup>表示Servlet的运行优先级,0表示服务一启动,Servlet就加载进行初始化 

启动服务(比如tomcat),在控制台中就可以看到打印出: 

>>你可以在这里初始化一些东西>>这样的文字了。 

另外在启动服务(tomcat)的时候有可能会报某种错: 

jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class 

这一般是你项目中使用的Servlet包与tomcat中带的包重复了,我使用的是tomcat 6.0.x,如果我在项目中存在着一个Servlet包:servlet-api-2.5-6.1.14.jar,那么这个时候就会报错,因为在TOMCAT_HOME/lib下已经存在servlet-api.jar了,所以解决方法就是只保留一个包,比如我将项目下的servlet-api-2.5-6.1.14.jar删除,再重启服务就没有问题了。 

转自:http://www.zihou.me/2010/03/02/1691
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值