亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java中Servlet的生命周期詳解

 更新時間:2022年08月22日 17:05:26   作者:python是最好的語言.java  
這篇文章主要介紹了Java中Servlet的生命周期詳解,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

Web基礎和HTTP協(xié)議

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

我們注意到HTTP協(xié)議是一個請求-響應協(xié)議,它總是發(fā)送一個請求,然后接收一個響應。能不能一次性發(fā)送多個請求,然后再接收多個響應呢?HTTP 2.0可以支持瀏覽器同時發(fā)出多個請求,但每個請求需要唯一標識,服務器可以不按請求的順序返回多個響應,由瀏覽器自己把收到的響應和請求對應起來??梢姡?code>HTTP 2.0進一步提高了傳輸效率,因為瀏覽器發(fā)出一個請求后,不必等待響應,就可以繼續(xù)發(fā)下一個請求。

HTTP 3.0為了進一步提高速度,將拋棄TCP協(xié)議,改為使用無需創(chuàng)建連接的UDP協(xié)議,目前HTTP 3.0仍然處于實驗推廣階段。

什么是Servlet

JavaEE平臺上,處理TCP連接,解析HTTP協(xié)議這些底層工作統(tǒng)統(tǒng)扔給現(xiàn)成的Web服務器去做,我們只需要把自己的應用程序跑在Web服務器上。為了實現(xiàn)這一目的,JavaEE提供了Servlet API,我們使用Servlet API編寫自己的Servlet來處理HTTP請求,Web服務器實現(xiàn)Servlet API接口,

實現(xiàn)底層功能.

// 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協(xié)議,因為HttpServletRequestHttpServletResponse就已經(jīng)封裝好了請求和響應。以發(fā)送響應為例,我們只需要設置正確的響應類型,然后獲取PrintWriter,寫入響應即可。

而這樣的一個項目最終會打包成一個*.war文件,運行這個文件,需要使用支持ServletAPI的Web容器(Web服務器)。

因此,我們首先要找一個支持Servlet API的Web服務器。

常用的服務器有:

  • Tomcat:由Apache開發(fā)的開源免費服務器;
  • Jetty:由Eclipse開發(fā)的開源免費服務器;
  • GlassFish:一個開源的全功能JavaEE服務器。

Servlet的生命周期

在通過一個URL路徑發(fā)起對一個Servlet請求的過程中,其本質(zhì)是在調(diào)用執(zhí)行Servlet實例的doXXX()方法。該Servlet實例創(chuàng)建和使用的過程,被稱為Servlet的生命周期。整個生命周期包括:實例化、初始化、服務、銷毀。

  • 實例化:根據(jù)Servlet請求的路徑(例如:home.do),查找該Servlet實例。如果實例不存在,則通過調(diào)用構(gòu)造方法,完成Servlet實例的創(chuàng)建。
  • 初始化:通過該Servlet實例,調(diào)用init()方法,執(zhí)行初始化的邏輯。
  • 服務:通過該Servlet實例,調(diào)用service()方法,如果子類沒有重寫該方法,則調(diào)用HttpServlet父類的service()方法,在父類的該方法中進行請求方式的判斷,如果是GET請求,則調(diào)用doGet()方法;如果是POST請求,則調(diào)用doPost()方法;

如果子類重寫doXXX()方法,則調(diào)用子類重寫后的doXXX()方法;

如果子類沒有重寫doXXX()方法,則調(diào)用父類的doXXX()方法,在父類的方法實現(xiàn)中,返回一個405狀態(tài)碼的錯誤頁面。

405狀態(tài)碼:代表請求的方式服務器不提供支持。

 4.銷毀:服務器關(guān)閉或重啟時,會銷毀所有的Servlet實例,會調(diào)用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("調(diào)用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到了");
	}
}

到此這篇關(guān)于Java中Servlet的生命周期詳解的文章就介紹到這了,更多相關(guān)Java Servlet 生命周期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot整合MyBatis-Plus3.1教程詳解

    SpringBoot整合MyBatis-Plus3.1教程詳解

    這篇文章主要介紹了SpringBoot整合MyBatis-Plus3.1詳細教程,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • Java內(nèi)部類原理、概述與用法實例詳解

    Java內(nèi)部類原理、概述與用法實例詳解

    這篇文章主要介紹了Java內(nèi)部類原理、概述與用法,結(jié)合實例形式詳細分析了Java內(nèi)部類的相關(guān)概念、原理、訪問、調(diào)用方法等操作技巧與注意事項,需要的朋友可以參考下
    2019-03-03
  • 深入分析Android系統(tǒng)中SparseArray的源碼

    深入分析Android系統(tǒng)中SparseArray的源碼

    這篇文章主要介紹了深入分析Android系統(tǒng)中SparseArray的源碼,SparseArray為Java實現(xiàn),需要的朋友可以參考下
    2015-07-07
  • 快速掌握Java8中的Optional

    快速掌握Java8中的Optional

    Optional 是一個容器類,代表一個值存在或不存在,Optional并不是用來替換所有的null,而是為了在設計良好的API中更明確地表達可能缺失的值,這篇文章主要介紹了Java8的Optional及使用,需要的朋友可以參考下
    2023-07-07
  • SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

    SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本)

    這篇文章主要介紹了SpringCloud Finchley+Spring Boot 2.0 集成Consul的方法示例(1.2版本),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • Java @GlobalLock注解詳細分析講解

    Java @GlobalLock注解詳細分析講解

    這篇文章主要介紹了Java @GlobalLock注解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2022-11-11
  • java通過url讀取遠程數(shù)據(jù)并保持到本地的實例代碼

    java通過url讀取遠程數(shù)據(jù)并保持到本地的實例代碼

    本文通過實例代碼給大家介紹了java通過url讀取遠程數(shù)據(jù)并保持到本地的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-07-07
  • 詳解Java中Period類的使用方法

    詳解Java中Period類的使用方法

    Period類通過年、月、日相結(jié)合來描述一個時間量,最高精度是天。本文將通過示例詳細為大家講講Period類的使用,需要的可以參考一下
    2022-05-05
  • Java整合騰訊云短信發(fā)送實例代碼

    Java整合騰訊云短信發(fā)送實例代碼

    大家好,本篇文章主要講的是Java整合騰訊云短信發(fā)送實例代碼,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • 使用java批量寫入環(huán)境變量的實現(xiàn)

    使用java批量寫入環(huán)境變量的實現(xiàn)

    本文主要介紹了使用java批量寫入環(huán)境變量,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-03-03

最新評論