------------------------Tomcat服務器啓動時創建Servlet-----------------------
Tomcat啓動時創建Servlet
有些Servlet需要在Tomcat啓動時就被創建,而不是第一次訪問時被創建,那麼可以在web.xml文件中配置<servlet>元素。
在<servlet>元素中添加子元素<load-on-startup>元素!
這個元素的值必須是一個大於等於0的整數!!!
<servlet> <servlet-name>One</servlet-name> <servlet-class>com.rl.servlet.OneServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet> <servlet-name>Two</servlet-name> <servlet-class> com.rl.servlet.TwoServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> |
所有添加了<load-on-startup>子元素的Servle,都會在Tomcat啓動時被創建!當然,只是被創建,但沒有處理請求!但我們知道在Servlet生命週期中init()方法會在創建後被調用,所以你可以在init()方法中做一些輸出,查看是否在Tomcat啓動時調用了它。
<load-on-startup>元素的值是一個序號,Tomcat會使用這個序號給多個Servlet排序!然後在Tomcat啓動時會按這個順序來創建Servlet實例對象!
代碼示例:
LoadOnServlet類:
package com.rl.servlet;
import java.io.IOException;
import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
public class LoadOnServlet extends HttpServlet {
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doGet被調用"); resp.getOutputStream().write("doGet被調用".getBytes()); }
@Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("doPost被調用"); doGet(req, resp); }
@Override public void init() throws ServletException { System.out.println("LoadOnServlet實例被創建"); }
} |
Web.xml代碼:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <servlet> <servlet-name>httpServlet</servlet-name> <servlet-class>com.rl.servlet.HttpServletDemo</servlet-class> <load-on-startup>2</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>httpServlet</servlet-name> <url-pattern>/httpRequest</url-pattern> </servlet-mapping>
<!-- 設置servlet的初始化的時機在服務器啓動時 --> <servlet> <servlet-name>loadOnServlet</servlet-name> <servlet-class>com.rl.servlet.LoadOnServlet</servlet-class> <!-- 元素的值是一個序號,Tomcat會使用這個序號給多個Servlet排序 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>loadOnServlet</servlet-name> <url-pattern>/loadOn</url-pattern> </servlet-mapping> </web-app> |
當服務器啓動的時候創建了Servlet對象