91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java中的Servlet怎么實現

發布時間:2022-08-23 11:13:24 來源:億速云 閱讀:148 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“Java中的Servlet怎么實現”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Java中的Servlet怎么實現”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

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("<h2>Hello, world!</h2>");
        // 最后不要忘記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()方法。

Java中的Servlet怎么實現

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怎么實現”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

舟曲县| 永修县| 陵川县| 施甸县| 高雄市| 扎赉特旗| 长海县| 日喀则市| 德昌县| 维西| 舒兰市| 那曲县| 奉节县| 调兵山市| 剑阁县| 清原| 保德县| 林州市| 台江县| 甘南县| 龙泉市| 彭泽县| 汕头市| 巢湖市| 登封市| 嘉兴市| 漠河县| 永嘉县| 泊头市| 安康市| 平昌县| 贡嘎县| 浦江县| 大兴区| 屏东市| 浠水县| 桦南县| 武鸣县| 抚松县| 紫金县| 九龙城区|