本系列博客汇总在这里:JavaWeb_servlet 汇总


Tomcat 启动时创建 Servlet
  1. Tomcat 启动时创建 Servlet
    (1)有些 Servlet 需要在 Tomcat 启动时就被创建,而不是第一次访问时被创建,那么可以在 web.xml 文件中配置 <servlet> 元素。在 <servlet> 元素中添加子元素 <load-on-startup> 元素!这个元素的值必须是一个大于等于 0 的整数!!!
    (2)所有添加了 <load-on-startup> 子元素的 Servlet,都会在 Tomcat 启动时被创建!当然,只是被创建,但没有处理请求!但我们知道在 Servlet 生命周期中 init() 方法会在创建后被调用,所以你可以在 init() 方法中做一些输出,查看是否在 Tomcat 启动时调用了它。
    (3)<load-on-startup> 元素的值是一个序号,Tomcat 会使用这个序号给多个 Servlet 排序!然后在 Tomcat 启动时会按这个顺序来创建 Servlet 实例对象!

  2. 示例(完整源码见文末)
    JavaWeb_servlet(5)_ Tomcat 启动时创建 Servlet_Tomcat 启动时创建 Servlet
    修改web.xml
    JavaWeb_servlet(5)_ Tomcat 启动时创建 Servlet_tomcat_02
    测试
    JavaWeb_servlet(5)_ Tomcat 启动时创建 Servlet_tomcat_03
    JavaWeb_servlet(5)_ Tomcat 启动时创建 Servlet_tomcat_04

  3. 以上操作完整源码

    package com.wyx.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 demo1 extends HttpServlet
    {
    	@Override
    	public void init() throws ServletException
    	{
    		System.out.println("LoadOnServlet实例被创建");
    	}
    
    	@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
    	{
    	}
    }
    
    <?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_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>servlet_demo</display-name>
       <servlet>
      	<!-- 设置servlet的名字 -->
      	<servlet-name>helloServlet</servlet-name>
      	<!-- 具体的servlet的类 -->
      	<servlet-class>com.wyx.servlet.demo1</servlet-class>
      	<load-on-startup>1</load-on-startup>
      </servlet>
      
      <servlet-mapping>
      	<!-- 指定要映射 的servlet的名字 -->
      	<servlet-name>helloServlet</servlet-name>
      	<!-- servlet的具体映射路径 -->
      	<url-pattern>/hello</url-pattern>
      </servlet-mapping>
    </web-app>
    

如有错误,欢迎指正!