Servlet创建实例的时机提前

###让Servlet创建实例的时机 提前。

1. 默认情况下,只有在初次访问servlet的时候,才会执行init方法。 有的时候,我们可能需要在这个方法里面执行一些初始化工作,甚至是做一些比较耗时的逻辑。 

2. 那么这个时候,初次访问,可能会在init方法中逗留太久的时间。 那么有没有方法可以让这个初始化的时机提前一点。 

3. 在配置的时候, 使用load-on-startup元素来指定, 给定的数字越小,启动的时机就越早。 一般不写负数, 从2开始即可。 


        <servlet>
              <servlet-name>HelloServlet04</servlet-name>
              <servlet-class>com.yuming.servlet.HelloServlet04</servlet-class>
              <load-on-startup>2</load-on-startup>
          </servlet>

HelloServlet04:

package com.yuming.servlet;

import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

/*
 * servlet创建实例的时机 提前
 */
public class HelloServlet04 implements Servlet{
	
   /**
    * 生命周期1
    *   在创建该servlet的实例时,就执行该方法。
		一个servlet只会初始化一次, init方法只会执行一次
		默认情况下是 : 初次访问该servlet,才会创建实例。 
    */
	public void init(ServletConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		System.out.println("init方法..........");
		
	}

	/**
	 * 生命周期2
	 * 只要客户端来了一个请求,那么就执行这个方法了。
	        该方法可以被执行很多次。 一次请求,对应一次service方法的调用
	 */
	public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("service方法----------------");
		
	}


	/**
	 * 生命周期3
	 * servlet销毁的时候,就会执行该方法
		
		  	1. 该项目从tomcat的里面移除。
		  	2. 正常关闭tomcat就会执行 shutdown.bat
		  	注:或者从server下移除项目也可执行该方法
	 */
	public void destroy() {
		// TODO Auto-generated method stub
		System.out.println("destory方法-------------------");
		
	}

	public ServletConfig getServletConfig() {
		// TODO Auto-generated method stub
		return null;
	}

	public String getServletInfo() {
		// TODO Auto-generated method stub
		return null;
	}

}


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_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>helloweb</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
   <!-- 向tomcat报告, 我这个应用里面有这个servlet, 名字叫做HelloServlet , 具体的路径是com.yuming.servlet.HelloServlet -->
  <servlet>
  <servlet-name>HelloServlet</servlet-name>
  <servlet-class>com.yuming.servlet.HelloServlet</servlet-class>
  </servlet>
  
  <!-- 注册servlet的映射。  servletName : 找到上面注册的具体servlet,  url-pattern: 在地址栏上的path 一定要以/打头 -->
  <servlet-mapping>
  <servlet-name>HelloServlet</servlet-name>
  <url-pattern>/HelloServlet</url-pattern>
  </servlet-mapping>
  
  <servlet>
  <servlet-name>HelloServlet02</servlet-name>
  <servlet-class>com.yuming.servlet.HelloServlet02</servlet-class>
  </servlet>
  
  <servlet-mapping>
  <servlet-name>HelloServlet02</servlet-name>
  <url-pattern>/HelloServlet02</url-pattern>
  </servlet-mapping>
  
  <servlet>
  <servlet-name>HelloServlet03</servlet-name>
  <servlet-class>com.yuming.servlet.HelloServlet03</servlet-class>
  </servlet>
  
  <servlet-mapping>
  <servlet-name>HelloServlet03</servlet-name>
  <url-pattern>/HelloServlet03</url-pattern>
  </servlet-mapping>
  
   <servlet>
  <servlet-name>HelloServlet04</servlet-name>
  <servlet-class>com.yuming.servlet.HelloServlet04</servlet-class>
  <load-on-startup>2</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  <servlet-name>HelloServlet04</servlet-name>
  <url-pattern>/HelloServlet04</url-pattern>
  </servlet-mapping>
  
</web-app>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值