Servlet初始化:隨服務(wù)器啟動(dòng)而運(yùn)行
有時(shí)候,我們需要僅僅是在服務(wù)啟動(dòng),而非其他更為復(fù)雜的定時(shí)任務(wù)的時(shí)候,做些初始化的工作,比如將一些數(shù)據(jù)導(dǎo)入到內(nèi)存中等等,用Servlet的初始化可以很好的做到這一點(diǎn)。而初始化工作是通過(guò)Servlet中的init()方法來(lái)做的。
建一個(gè)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中進(jìn)行配置:
- <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>傳入的參數(shù)值1</param-value>
- </init-param>
- <init-param>
- <param-name>b</param-name>
- <param-value>傳入的參數(shù)值2</param-value>
- </init-param>
</servlet><load-on-startup>0</load-on-startup>表示Servlet的運(yùn)行優(yōu)先級(jí),0表示服務(wù)一啟動(dòng),Servlet就加載進(jìn)行初始化
啟動(dòng)服務(wù)(比如tomcat),在控制臺(tái)中就可以看到打印出:
>>你可以在這里初始化一些東西>>這樣的文字了。
另外在啟動(dòng)服務(wù)(tomcat)的時(shí)候有可能會(huì)報(bào)某種錯(cuò):
- jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
這一般是你項(xiàng)目中使用的Servlet包與tomcat中帶的包重復(fù)了,我使用的是tomcat 6.0.x,如果我在項(xiàng)目中存在著一個(gè)Servlet包:servlet-api-2.5-6.1.14.jar,那么這個(gè)時(shí)候就會(huì)報(bào)錯(cuò),因?yàn)樵?TOMCAT_HOME/lib下已經(jīng)存在servlet-api.jar了,所以解決方法就是只保留一個(gè)包,比如我將項(xiàng)目下的servlet-api- 2.5-6.1.14.jar刪除,再重啟服務(wù)就沒(méi)有問(wèn)題了。
原文鏈接:http://agan007.iteye.com/blog/1143763
【編輯推薦】
- Hibernate新項(xiàng)目誕生,謂之OGM
- 如何在Hibernate中使用union
- Servlet中的八大Listener
- Servlet3.0筆記之Redis操作示范Retwis Java版