JavaWeb_servlet

Tomcat 启动时创建 Servlet

● Tomcat 启动时创建 Servlet

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

● 示例

  • 编码(完整源码见文末)
    JavaWeb_servlet(5)_ Tomcat 启动时创建 Servlet
  • 修改web.xml
    JavaWeb_servlet(5)_ Tomcat 启动时创建 Servlet
  • 测试
    JavaWeb_servlet(5)_ Tomcat 启动时创建 Servlet
    JavaWeb_servlet(5)_ Tomcat 启动时创建 Servlet

以上操作完整源码:

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>

如有错误,欢迎指正!

相关文章: