servlet的生命周期

本文详细介绍了Servlet的生命周期,包括实例化、初始化、就绪和销毁四个阶段,并通过示例代码展示了如何配置web.xml文件以实现Servlet的初始化参数设置。在Tomcat服务器中部署并访问Servlet时,可以看到Servlet生命周期的不同阶段的行为表现。
摘要由CSDN通过智能技术生成

生命周期分为四个阶段:实例化,初始化 ,就绪,销毁

阶段1:实例化

      即:容器创建Servlet对象

      时机1:容器收到请求后,创建servlet对象

      时机2:容器启动后,立即创建servlet对象

              Web.xml的<servlert>  </servlet>中需要配置

              <load-on-startup>1</load-on-startup>

阶段2:初始化

      容器在创建servlet对象后,调用init方法进行对象的初始化

       一般情况下,我们不需要重写此方法,因为父类型GenericServlet

      里提供了init方法的实现逻辑。此方法保存了另外一个对象ServletConfig的引用

 

      如果你想初始化一些自定义的属性,我们可以将初始化的值

      配置在web.xml里

      <init-param>
            <param-name>company</param-name>
            <param-value>甲骨文</param-value>
      </init-param>
      <init-param>
            <param-name>manager</param-name>
            <param-value>冼焯庭</param-value>
      </init-param>

ps:<init-param>的位置一定要在<load-on-startup>1</load-on-startup>之上

阶段3:就绪

     初始化之后,容器Servlet对象的service方法进行资源分配

阶段4:销毁

     容器会根据自己的算法来进行servlet对象的销毁,销毁前一定会调用destroy()方法。因此我们可以重写此方法来完成一些业务逻辑。  卸载程序时或清理缓存时,一定会销毁Servlet对象

如图:

例子:

【1】HelloServlet.java

package com.hyxy.servlet.test;

import java.io.IOException;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloServlet extends HttpServlet {
    private String company;
    private String manager;
    private static final long serialVersionUID = 1L;
    public HelloServlet(){
        System.out.println("-------创建HelloServlet对象--------");
    }
    @Override
    public void service(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
        System.out.println("----收到HelloServlet处理业务逻辑----");
        System.out.println("company:"+company);
        System.out.println("manager:"+manager);
    }
    public void init() throws ServletException {
         System.out.println("-----初始化helloServlet-----");
         ServletConfig config = getServletConfig();
         company = config.getInitParameter("company");
         manager = config.getInitParameter("manager");
    }
    @Override
    public void destroy() {
        System.out.println("程序卸载了");
    }
    
}
 

【2】配置web.xml 

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  <display-name></display-name>    
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
      <servlet-name>HelloServlet</servlet-name>
      <servlet-class>com.hyxy.servlet.test.HelloServlet</servlet-class>
      <init-param>
            <param-name>company</param-name>
            <param-value>甲骨文</param-value>
      </init-param>
      <init-param>
            <param-name>manager</param-name>
            <param-value>冼焯庭</param-value>
      </init-param>
      
      <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet>
    <servlet-name>KetteServlet</servlet-name>
    <servlet-class>com.hyxy.servlet.test.KetteServlet</servlet-class>
    <load-on-startup>5</load-on-startup>
  </servlet>
 


  <servlet-mapping>
      <servlet-name>HelloServlet</servlet-name>
      <url-pattern>/HelloServlet</url-pattern>
   
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>KetteServlet</servlet-name>
    <url-pattern>/KetteServlet</url-pattern>
  </servlet-mapping>
 
</web-app>

【3】把工程部署到tomcat服务器

后台输出结果:

-------创建HelloServlet对象--------
-----初始化helloServlet-----
-------创建KetteServlet对象--------

【4】然后在浏览器中访问:http://localhost:8080/Servlert03/HelloServlet

后台输出结果:

----收到HelloServlet处理业务逻辑----
company:甲骨文
manager:冼焯庭

【5】再把工程从tomcat服务器中删除(销毁过程)

后台运行结果:

程序卸载了

这样就是我们的seevlet的生命周期。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值