首页 > 其他分享 >Servlet生命周期与方法

Servlet生命周期与方法

时间:2024-11-09 22:19:23浏览次数:1  
标签:生命周期 Servlet 方法 throws 调用 ServletConfig public

一 生命周期
Servlet运行在Servlet容器(web服务器)中,其生命周期由容器来管理,分为4个阶段:

  1. 加载和实例化:默认情况下,当Servlet第一次被访问时,由容器创建Servlet对象
    @WebServlet(urlPatterns = "/demo1",loadOnStartup = 1)
    loadOnstartup的取值有两类情况
    (1)负整数:第一次访问时创建Servlet对象
    (2)0或正整数:服务器启动时创建Servlet对象,数字越小优先级越高
  2. 初始化:在Servlet实例化之后,容器将调用Servlet的init()方法初始化这个对象,完成一些如加载配置文件、创建连接等初始化的工作。该方法只调用一次
  3. 请求处理:每次请求Servlet时,Servlet容器都会调用Servlet的service()方法对请求进行处理
  4. 服务终止:当需要释放内存或者容器关闭时,容器就会调用Servlet实例的destroy()方法完成资源的释放。在destroy()方法调用之后,容器会释放这个Servlet实例,该实例随后
    会被Java的垃圾收集器所回收
点击查看代码
package com.QixunQiu.web;
  
  import javax.servlet.*;
  import javax.servlet.annotation.WebServlet;
  import java.io.IOException;
  /**
  * Servlet生命周期方法
  */
  @WebServlet(urlPatterns = "/demo2",loadOnStartup = 1)
  public class ServletDemo2 implements Servlet {
  
      /**
       *  初始化方法
       *  1.调用时机:默认情况下,Servlet被第一次访问时,调用
       *      * loadOnStartup: 默认为-1,修改为0或者正整数,则会在服务器启动的时候,调用
       *  2.调用次数: 1次
       * @param config
       * @throws ServletException
       */
      public void init(ServletConfig config) throws ServletException {
          System.out.println("init...");
      }
  
      /**
       * 提供服务
       * 1.调用时机:每一次Servlet被访问时,调用
       * 2.调用次数: 多次
       * @param req
       * @param res
       * @throws ServletException
       * @throws IOException
       */
      public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
          System.out.println("servlet hello world~");
      }
  
      /**
       * 销毁方法
       * 1.调用时机:内存释放或者服务器关闭的时候,Servlet对象会被销毁,调用
       * 2.调用次数: 1次
       */
      public void destroy() {
          System.out.println("destroy...");
      }
      public ServletConfig getServletConfig() {
          return null;
      }
  
      public String getServletInfo() {
          return null;
      }
  }
二 方法
点击查看代码
* 初始化方法,在Servlet被创建时执行,只执行一次
void init(ServletConfig config) 

* 提供服务方法, 每次Servlet被访问,都会调用该方法
void service(ServletRequest req, ServletResponse res)

* 销毁方法,当Servlet被销毁时,调用该方法。在内存释放或服务器关闭时销毁Servlet
void destroy() 

* 获取Servlet信息
String getServletInfo() 
//该方法用来返回Servlet的相关信息,没有什么太大的用处,一般我们返回一个空字符串即可
public String getServletInfo() {
    return "";
}

* 获取ServletConfig对象
ServletConfig getServletConfig()
ServletConfig对象,在init方法的参数中有,而Tomcat Web服务器在创建Servlet对象的时候会调用init方法,必定会传入一个ServletConfig对象,我们只需要将服务器传过来的ServletConfig进行返回即可。
具体实现
点击查看代码
package com.QixunQiu.web;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

/**
 * Servlet方法介绍
 */
@WebServlet(urlPatterns = "/demo3",loadOnStartup = 1)
public class ServletDemo3 implements Servlet {

    private ServletConfig servletConfig;
    /**
     *  初始化方法
     *  1.调用时机:默认情况下,Servlet被第一次访问时,调用
     *      * loadOnStartup: 默认为-1,修改为0或者正整数,则会在服务器启动的时候,调用
     *  2.调用次数: 1次
     * @param config
     * @throws ServletException
     */
    public void init(ServletConfig config) throws ServletException {
        this.servletConfig = config;
        System.out.println("init...");
    }
    public ServletConfig getServletConfig() {
        return servletConfig;
    }
    
    /**
     * 提供服务
     * 1.调用时机:每一次Servlet被访问时,调用
     * 2.调用次数: 多次
     * @param req
     * @param res
     * @throws ServletException
     * @throws IOException
     */
    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        System.out.println("servlet hello world~");
    }

    /**
     * 销毁方法
     * 1.调用时机:内存释放或者服务器关闭的时候,Servlet对象会被销毁,调用
     * 2.调用次数: 1次
     */
    public void destroy() {
        System.out.println("destroy...");
    }
    
    public String getServletInfo() {
        return "";
    }
}

标签:生命周期,Servlet,方法,throws,调用,ServletConfig,public
From: https://www.cnblogs.com/qiixunlu/p/18537406

相关文章

  • Servlet入门
    1.Meven依赖点击查看代码<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><!--此处为什么需要添加该标签?provided指的是在编译和测试过程中有效,最后生成的war......
  • 08 Oracle数据库故障应对与恢复策略:全面掌握RMAN恢复方法
    文章目录Oracle数据库故障应对与恢复策略:全面掌握RMAN恢复方法一、故障场景及恢复策略1.1实例失败1.2介质故障1.3数据丢失二、RMAN恢复方法详解2.1全库恢复2.2增量恢复2.3时间点恢复三、实践与总结Oracle数据库故障应对与恢复策略:全面掌握RMAN恢复方法Ora......
  • 关于 RK3588多屏显示的时候第二屏幕出现无法矫正的x坐标偏移 的解决方法
    若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/143608502红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…瑞芯微开发专栏问题 ......
  • 在 Windows 系统中,默认并没有直接支持基于 URL 的黑名单和白名单功能。不过,您仍然可以
    在Windows系统中,默认并没有直接支持基于URL的黑名单和白名单功能。不过,您仍然可以通过一些间接的方式实现URL层面的访问控制。以下是几种可能的实现方法:1. 修改Hosts文件Windows系统提供了hosts文件,它允许您将域名映射到特定的IP地址。您可以通过修改该文件来阻止......
  • 在 C++ 中,实现线程同步主要有以下几种常见方法
    互斥锁(Mutex)原理:互斥锁用于保护共享资源,确保在同一时刻只有一个线程能够访问被保护的资源。当一个线程想要访问共享资源时,它首先尝试获取互斥锁。如果锁已经被其他线程持有,那么该线程会被阻塞,直到锁被释放。一旦获取到锁,线程就可以安全地访问共享资源,访问结束后再释放锁,以便其......
  • 【TOGAF应用】阿里应用了哪些 TOGAF 的理念和方法
    背景    今年参加了TOGAF的培训和一系列沙龙活动,以前的文章大概总结了TOGAF的理论、华为使用TOGA的案例等笔记和总结,详细大家可以关注后查看往期文章~欢迎关注、点赞、收藏,一起享受学习的乐趣。    那么今天来看看阿里在企业架构的发展过程中应用了哪些TOGA......
  • 电脑中丢失 vcruntime140.dll 的五种解决方法
    vcruntime140.dll是MicrosoftVisualC++2015RedistributablePackage的一部分,它是一个动态链接库(DLL)文件,主要负责为使用了C++编译器编写的应用程序提供运行时支持。简而言之,vcruntime140.dll包含了程序运行所需的基础函数和数据结构,如内存管理、输入输出操作等。因此,对于很......
  • 找不到msvcp120.dll,无法继续执行代码的15种解决方法指南
    msvcp120.dll 是一个动态链接库(DLL)文件,属于MicrosoftVisualC++RedistributablePackages的一部分。它是MicrosoftVisualStudio2013的一个组件,为运行基于VisualC++2013开发的应用程序提供必要的标准C++库支持。1.功能和作用msvcp120.dll文件封装了多种与C+......
  • 数据缩放方法总结
    数据缩放(DataScaling)是数据预处理的一种重要方法,用于将不同取值范围的特征值调整到统一的范围,从而提高机器学习模型的性能和稳定性。本文将总结常见的数据缩放方法,并分析它们的优缺点及适用场景。1.均值归一化(MeanNormalization):将数据缩放到[-1,1]的范围内,使数据的均值为0。具......
  • ==和equals方法的区别
     在Java中,​​==​​​和​​equals​​方法用于比较对象,但它们之间存在本质的区别:​​==​​操作符基本数据类型:​​==​​比较的是值是否相等。inta=10;intb=10;System.out.println(a==b);//输出true引用类型:用于引用类型(如对象、数组)时,==比......