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

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

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

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

  1. public class AutoRunServlet extends HttpServlet { 
  2.  
  3. private static final long serialVersionUID = 1L; 
  4.  
  5. public void init() throws ServletException{ 
  6.  
  7. System.out.println(">>你可以在这里初始化一些东西>>"); 
  8.  
  9.         String v = this.getInitParameter("a"); 
  10.         Enumeration e = this.getInitParameterNames(); 
  11.         while(e.hasMoreElements()){ 
  12.             System.out.println(">>haha>>"+e.nextElement()); 
  13.         } 
  14.  
  15.  
  16. }  

在web.xml中进行配置:

  1. <servlet> 
  2.  
  3. <servlet-name>AutoRunServlet</servlet-name> 
  4.  
  5. <servlet-class>AutoRunServlet</servlet-class>//类的包路径 
  6.  
  7. <load-on-startup>0</load-on-startup> 
  8. <init-param> 
  9. <param-name>a</param-name> 
  10. <param-value>传入的参数值1</param-value> 
  11. </init-param> 
  12. <init-param> 
  13. <param-name>b</param-name> 
  14. <param-value>传入的参数值2</param-value> 
  15. </init-param>  

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

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

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

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

  1. 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://agan007.iteye.com/blog/1143763

【编辑推荐】

  1. Hibernate新项目诞生,谓之OGM
  2. 如何在Hibernate中使用union
  3. Servlet中的八大Listener
  4. Servlet3.0笔记之Redis操作示范Retwis Java版

 

 

 

 

 

责任编辑:艾婧 来源: agan007饿博客
相关推荐

2011-07-06 14:16:25

Linux服务器Shell脚本

2011-03-23 15:02:55

ListenerFilterServlet

2011-12-05 10:37:53

Linux服务器Shell脚本

2011-06-17 15:29:44

C#对象初始化器集合初始化器

2012-07-27 09:46:50

x86服务器

2010-04-27 17:51:37

2009-08-27 10:31:39

C#对象初始化器

2023-11-12 23:08:17

C++初始化

2009-07-09 10:25:05

Servlet的Web

2009-08-26 15:28:52

C#对象集合初始化器

2021-07-12 12:20:08

Spring初始化方案

2017-09-13 14:28:02

Linux初始化系统运行级别

2023-07-13 09:13:18

Docker容器

2010-07-28 10:22:33

FlexApplica

2021-03-12 10:30:11

SpringMVC流程初始化

2022-07-06 10:37:45

SpringServlet初始化

2020-12-03 09:50:52

容器IoC流程

2009-11-11 15:29:15

ADO初始化

2019-11-04 13:50:36

Java数组编程语言

2009-09-08 09:48:34

LINQ初始化数组
点赞
收藏

51CTO技术栈公众号