返回顶部
首页 > 资讯 > 后端开发 > Python >Java中Servlet的生命周期详解
  • 895
分享到

Java中Servlet的生命周期详解

2024-04-02 19:04:59 895人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录WEB基础和Http协议什么是ServletServlet的生命周期Web基础和HTTP协议 ┌─────────┐ ┌──────

Web基础和HTTP协议

                       ┌─────────┐
┌─────────┐            │░░░░░░░░░│
│O ░░░░░░░│            ├─────────┤
├─────────┤            │░░░░░░░░░│
│         │            ├─────────┤
│         │            │░░░░░░░░░│
└─────────┘            └─────────┘
     │      request 1       │
     │─────────────────────>│
     │      request 2       │
     │─────────────────────>│
     │      response 1      │
     │<─────────────────────│
     │      request 3       │
     │─────────────────────>│
     │      response 3      │
     │<─────────────────────│
     │      response 2      │
     │<─────────────────────│
     ▼                      ▼

我们注意到HTTP协议是一个请求-响应协议,它总是发送一个请求,然后接收一个响应。能不能一次性发送多个请求,然后再接收多个响应呢?HTTP 2.0可以支持浏览器同时发出多个请求,但每个请求需要唯一标识,服务器可以不按请求的顺序返回多个响应,由浏览器自己把收到的响应和请求对应起来。可见,HTTP 2.0进一步提高了传输效率,因为浏览器发出一个请求后,不必等待响应,就可以继续发下一个请求。

HTTP 3.0为了进一步提高速度,将抛弃tcp协议,改为使用无需创建连接的UDP协议,目前HTTP 3.0仍然处于实验推广阶段。

什么是Servlet

JavaEE平台上,处理TCP连接,解析HTTP协议这些底层工作统统扔给现成的Web服务器去做,我们只需要把自己的应用程序跑在Web服务器上。为了实现这一目的,JavaEE提供了Servlet api,我们使用Servlet API编写自己的Servlet来处理HTTP请求,Web服务器实现Servlet API接口,

实现底层功能.

// WebServlet注解表示这是一个Servlet,并映射到地址 hello.do
@WebServlet(urlPatterns = "/hello.do")
public class HelloServlet extends httpservlet {
    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        // 设置响应类型:
 
        resp.setContentType("text/html");
        // 获取输出流:
 
        PrintWriter pw = resp.getWriter();
        // 写入响应:
 
        pw.write("<h1>Hello, world!</h1>");
        // 最后不要忘记flush强制输出:
 
        pw.flush();
    }
}

一个Servlet总是继承自HttpServlet,然后覆写doGet()doPost()方法。注意到doGet()方法传入了HttpServletRequestHttpServletResponse两个对象,分别代表HTTP请求和响应。我们使用Servlet API时,并不直接与底层TCP交互,也不需要解析HTTP协议,因为HttpServletRequestHttpServletResponse就已经封装好了请求和响应。以发送响应为例,我们只需要设置正确的响应类型,然后获取PrintWriter,写入响应即可。

而这样的一个项目最终会打包成一个*.war文件,运行这个文件,需要使用支持ServletAPI的Web容器(Web服务器)。

因此,我们首先要找一个支持Servlet API的Web服务器。

常用的服务器有:

  • Tomcat:由Apache开发的开源免费服务器;
  • Jetty:由Eclipse开发开源免费服务器;
  • GlassFish:一个开源的全功能JavaEE服务器。

Servlet的生命周期

在通过一个URL路径发起对一个Servlet请求的过程中,其本质是在调用执行Servlet实例的doXXX()方法。该Servlet实例创建和使用的过程,被称为Servlet的生命周期。整个生命周期包括:实例化、初始化、服务、销毁。

  • 实例化:根据Servlet请求的路径(例如:home.do),查找该Servlet实例。如果实例不存在,则通过调用构造方法,完成Servlet实例的创建。
  • 初始化:通过该Servlet实例,调用init()方法,执行初始化的逻辑。
  • 服务:通过该Servlet实例,调用service()方法,如果子类没有重写该方法,则调用HttpServlet父类的service()方法,在父类的该方法中进行请求方式的判断,如果是GET请求,则调用doGet()方法;如果是POST请求,则调用doPost()方法;

如果子类重写doXXX()方法,则调用子类重写后的doXXX()方法;

如果子类没有重写doXXX()方法,则调用父类的doXXX()方法,在父类的方法实现中,返回一个405状态码的错误页面。

405状态码:代表请求的方式服务器不提供支持。

 4.销毁:服务器关闭或重启时,会销毁所有的Servlet实例,会调用Servlet实例的destroy()方法。

package com.my.hyz.web.servlet;
 
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//@WebServlet("/home.do")
public class HomeServlet extends HttpServlet {

	public HomeServlet() {
		System.out.println("实例化");
	}
	@Override
	public void init() throws ServletException {
		System.out.println("初始化");
		//super.init();
	}

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("调用Service实例");
	}

	@Override
	public void destroy() {
		System.out.println("销毁咯!!!!");
	}
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("哎呦get到了"+this.hashCode());
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("哎呦post到了");
	}
}

到此这篇关于Java中Servlet的生命周期详解的文章就介绍到这了,更多相关Java Servlet 生命周期内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Java中Servlet的生命周期详解

本文链接: https://lsjlt.com/news/165695.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中Servlet的生命周期详解
    目录Web基础和HTTP协议什么是ServletServlet的生命周期Web基础和HTTP协议 ┌─────────┐ ┌──────...
    99+
    2024-04-02
  • Java中Servlet的生命周期
    目录init()service()doGet()doPost()destroy() 方法架构Servlet从创建直到毁灭的整个过程: Servlet 初始化后调用 init () 方...
    99+
    2024-04-02
  • JavaWEB中Servlet的生命周期详解
    目录一、什么是Servlet 生命周期?二、Servlet 是由谁来维护的?三、Servlet 对象 是什么时候创建的?四、测试 Tomcat 什么时候被销毁?总结一、什么是Serv...
    99+
    2024-04-02
  • java servlet生命周期是什么
    Java Servlet的生命周期指的是一个Servlet从被创建到被销毁的整个过程。下面是Java Servlet的生命周期的几个...
    99+
    2023-09-20
    java servlet
  • Java中Servlet的生命周期是怎样的
    这篇文章主要介绍“Java中Servlet的生命周期是怎样的”,在日常操作中,相信很多人在Java中Servlet的生命周期是怎样的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java中Servlet的生命...
    99+
    2023-06-28
  • React中的生命周期详解
    目录react生命周期常用的生命周期不常用的生命周完整的生命周期图react生命周期 函数组件无生命周期,生命周期只有类组件才拥有 生命周期函数指在某一时刻组件会自动调用并执行的函数...
    99+
    2024-04-02
  • Servlet方法生命周期及执行原理详解
    目录快速入门创建JavaEE项目实现接口中的抽象方法执行执行原理Servlet中的生命周期方法1.被创建:执行init方法,只执行一次2.提供服务:执行service方法,执行多次3...
    99+
    2024-04-02
  • Java线程的生命周期的详解
    Java线程的生命周期的详解对于多线程编程而言,理解线程的生命周期非常重要,本文就针对这一点进行讲解。一、线程的状态线程的存在有几种不同的状态,如下: New状态 Ready状态 Running状态 Dead状态 Non Runn...
    99+
    2023-05-30
    java 线程 生命周期
  • 详解uniapp的生命周期
    Uniapp作为一款跨平台应用开发框架,具有丰富的生命周期,以下是Uniapp的生命周期: 1.应用生命周期 应用生命周期是指应用程序从启动到关闭的整个过程,包括应用程序的启动、前后...
    99+
    2023-05-17
    vue uniapp uniapp生命周期
  • React的生命周期详解
    一、React生命周期 React 生命周期分为三种状态 1. 初始化2.更新3.销毁 初始化 1、getDefaultProps() 设置默认的props,也可以用dufault...
    99+
    2024-04-02
  • Vue生命周期详解
    这篇博客将会从下面四个常见的应用诠释组件的生命周期,以及各个生命周期应该干什么事 单组件的生命周期父子组件的生命周期兄弟组件的生命周期宏mixin的生命周期 生命周期:Vue 实例从...
    99+
    2024-04-02
  • rust生命周期详解
    目录rust生命周期借用检查函数中的生命周期手动声明生命周期结构体中的生命周期生命周期消除三条消除原则生命周期约束静态生命周期rust生命周期 生命周期是rust中用来规定引用的有效...
    99+
    2023-03-19
    rust生命周期
  • 详解vue生命周期
    目录为什么要理解生命周期什么是生命周期生命周期钩子函数created和mounted钩子的一些实战用法1.异步函数 2.Vue.nextTick对异步函数的结果进行操作 总结为什么要...
    99+
    2024-04-02
  • Spring 中 Bean 的生命周期详解
    目录前言1.Bean 生命周期2.代码演示总结前言 Java 中的公共类称之为 Bean 或 Java Bean,而 Spring 中的 Bean 指的是将对象的生命周期,交个 Sp...
    99+
    2024-04-02
  • servlet的生命周期结构有哪些
    servlet的生命周期结构有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Servlet 生命周期:Servlet 加载--->实例化--->...
    99+
    2023-05-31
    servlet 生命周期
  • servlet生命周期有哪些阶段
    这篇文章主要介绍了servlet生命周期有哪些阶段的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇servlet生命周期有哪些阶段文章都会有所收获,下面我们一起来看看吧。Servlet生命周期是指servlet从...
    99+
    2023-07-05
  • servlet生命周期有几个阶段
    servlet的生命周期包括以下几个阶段:1. 加载阶段(Loading):当容器启动时,会加载servlet类,并创建servle...
    99+
    2023-08-26
    servlet
  • servlet生命周期分几个阶段
    Servlet生命周期可以分为以下四个阶段:1. 加载和实例化(Loading and Instantiation):在Web容器启...
    99+
    2023-08-25
    servlet
  • Android Fragment的生命周期详解
    Fragments的生命周期        每一个fragments 都有自己的一套生命周期回调方法和处理自己的用...
    99+
    2022-06-06
    android fragment fragment Android
  • Android Activity生命周期详解
    Activity 的生命周期。 一、理解Activity Activity是Android程序的4大组件之一。 Activity是Android程序的表示层。程序的每一个显...
    99+
    2022-06-06
    activity生命周期 activity Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作