Servlet和Jsp簡介

来源:https://www.cnblogs.com/daimenglaoshi/archive/2022/08/15/16587545.html
-Advertisement-
Play Games

​ /* *作者:呆萌老師 *☑csdn認證講師 *☑51cto高級講師 *☑騰訊課堂認證講師 *☑網易雲課堂認證講師 *☑華為開發者學堂認證講師 *☑愛奇藝千人名師計劃成員 *在這裡給大家分享技術、知識和生活 *各種乾貨,記得關註哦! *vx:it_daimeng */ Servlet 1、ser ...


 

/*
*作者:呆萌老師
*☑csdn認證講師
*☑51cto高級講師
*☑騰訊課堂認證講師
*☑網易雲課堂認證講師
*☑華為開發者學堂認證講師
*☑愛奇藝千人名師計劃成員
*在這裡給大家分享技術、知識和生活
*各種乾貨,記得關註哦!
*vx:it_daimeng
*/

  

  • Servlet

1、servlet與servlet容器

Java Servlet(Java伺服器小程式)是一個基於Java技術的Web組件,運行在伺服器端,它由Servlet容器所管理,用於生成動態的內容。 Servlet是平臺獨立的Java類,編寫一個Servlet,實際上就是按照Servlet規範編寫一個Java類。Servlet被編譯為平臺獨立 的位元組碼,可以被動態地載入到支持Java技術的Web伺服器中運行。 
   Servlet容器也叫做Servlet引擎。Servlet沒有main方法,不能獨立運行,它必須被部署到Servlet容器中,由容器來實例化和調用 Servlet的方法(如doGet()和doPost()),Servlet容器在Servlet的生命周期內包容和管理Servlet。在JSP技術 推出後,管理和運行Servlet/JSP的容器也稱為Web容器。

用戶通過單擊某個鏈接或者直接在瀏覽器的地址欄中輸入URL來訪問Servlet,Web伺服器接收到該請求後,並不是將 請求直接交給Servlet,而是交給Servlet容器。Servlet容器實例化Servlet,調用Servlet的一個特定方法對請求進行處理, 並產生一個響應。這個響應由Servlet容器返回給Web伺服器,Web伺服器包裝這個響應,以HTTP響應的形式發送給Web瀏覽器。

 

Tomcat伺服器接受客戶請求並做出響應的過程如下:

  1. 客戶端(通常都是瀏覽器)訪問Web伺服器,發送HTTP請求。 
    2)Web伺服器接收到請求後,傳遞給Servlet容器。 
    3)Servlet容器載入Servlet,產生Servlet實例後,向其傳遞表示請求和響應的對象。 
    4)Servlet實例使用請求對象得到客戶端的請求信息,然後進行相應的處理。 
    5)Servlet實例將處理結果通過響應對象發送回客戶端,容器負責確保響應正確送出,同時將控制返回給Web伺服器。

2、servlet生命周期

現在讓我們詳細討論生命周期的方法。

init() 方法

Servlet的init方法在一個生命周期中只被執行一次,調用service方法前,初始化必須完成;它在第一次創建 Servlet 時被調用,在後續每次用戶請求時不再調用。因此,它是用於一次性初始化,就像 Applet 的 init 方法一樣。

init 方法的定義如下:

public void init() throws ServletException {
  // 初始化代碼...}

  

 

service() 方法

service() 方法是執行實際任務的主要方法。Servlet 容器 調用 service() 方法來處理來自客戶端(瀏覽器)的請求,並把格式化的響應寫回給客戶端。

每次伺服器接收到一個 Servlet 請求時,伺服器會產生一個新的線程並調用服務。service() 方法檢查 HTTP 請求類型(GET、POST、PUT、DELETE 等),併在適當的時候調用 doGet、doPost、doPut,doDelete 等方法。

下麵是該方法的特征:

public void service(ServletRequest request, 
                    ServletResponse response) 
      throws ServletException, IOException{}

  

 

所以,您不用對 service() 方法做任何動作,您只需要根據來自客戶端的請求類型來重寫 doGet() 或 doPost() 即可。

doGet() 和 doPost() 方法是每次服務請求中最常用的方法。下麵是這兩種方法的特征。

doGet() 方法

GET 請求來自於一個 URL 的正常請求,或者來自於一個未指定 METHOD 的 HTML 表單,它由 doGet() 方法處理。

public void doGet(HttpServletRequest request,
                  HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代碼
}

  

 

doPost() 方法

POST 請求來自於一個特別指定了 METHOD 為 POST 的 HTML 表單,它由 doPost() 方法處理。

public void doPost(HttpServletRequest request,
                   HttpServletResponse response)
    throws ServletException, IOException {
    // Servlet 代碼
}

  

 

destroy() 方法

destroy() 方法只會被調用一次,在 Servlet 生命周期結束時被調用。destroy() 方法可以讓您的 Servlet 關閉資料庫連接、停止後臺線程、把 Cookie 列表或點擊計數器寫入到磁碟,並執行其他類似的清理活動。

在調用 destroy() 方法之後,servlet 對象被標記為垃圾回收。destroy 方法定義如下所示:

 
 public void destroy() {
    // 終止化代碼...
  }

  

 

Servlet 生命周期可被定義為從創建直到毀滅的整個過程。以下是 Servlet 遵循的過程:

Servlet類載入

Servlet 通過調用 init () 方法進行初始化。

Servlet 調用 service() 方法來處理客戶端的請求,來選擇調用doGet還是doPost方法。

Servlet 通過調用 destroy() 方法終止(結束)。

最後,Servlet 是由 JVM 的垃圾回收器進行垃圾回收的。

架構圖

下圖顯示了一個典型的 Servlet 生命周期方案。

  • 第一個到達伺服器的 HTTP 請求被委派到 Servlet 容器。
  • Servlet 容器載入 Servlet,創建對象和初始化,然後調用 service() 。
  • 然後 Servlet 容器處理由多個請求產生的多個線程,每個線程執行一個單一的 Servlet 實例的 service() 方法。


 

  • JSP

  JSP全名為Java Server Pages,中文名叫java伺服器頁面,其根本是一個簡化的Servlet設計.

JSP技術有點類似ASP技術,它是在傳統的網頁HTML(標準通用標記語言的子集)文件(*.htm,*.html)中插入Java程式段(Scriptlet)和JSP標記(tag),從而形成JSP文件,尾碼名為(*.jsp)。 用JSP開發的Web應用是跨平臺的,既能在Linux下運行,也能在其他操作系統上運行。

它實現了Html語法中的java擴展(以 <%, %>形式)。JSP與Servlet一樣,是在伺服器端執行的。通常返回給客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。

Java Servlet是JSP的技術基礎,而且大型的Web應用程式的開發需要Java Servlet和JSP配合才能完成。JSP具備了Java技術的簡單易用,完全的面向對象,具有平臺無關性且安全可靠,主要面向網際網路的所有特點。

 

  

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Java集合04 9.Set介面方法 Set介面基本介紹 無序(添加和取出的順序不一致),沒有索引 不允許重覆元素,所以最多只有一個null JDK API中介面的實現類有: Set介面的常用方法:和List介面一樣,Set介面也是Collection的子介面,因此,常用方法和Collection接 ...
  • 4、Fixture的相互調用 示例: import pytest # 第一層fixture @pytest.fixture() def fixture_1(): data = "fixture_1" print("這是第一層fixture") return data # 第二層fixture @py ...
  • 前言 嗨嘍~大家好呀,這裡是魔王吶 ! 在這平凡的一日,我決定~ 乾一件平凡的事~讓我們開動起我們的小手 來做一個小小的顏值檢測叭~ 開發環境: Python 3.8 Pycharm 2021.2 模塊使用: requests >>> pip install requests tqdm >>> pi ...
  • 1、BaseDao 持久層業務介面實現類的公共父類,定義了jdbc操作資料庫的所有公共方法,方便子類繼承; import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import ja ...
  • Java 中日誌相關的 jar 包非常多,log4j、log4j2、commons-logging、logback、slf4j 等,本文首先梳理這些包之間關係,然後介紹在 spring boot 中日誌的配置,最後介紹多環境的配置。 ...
  • 底層架構 先停一下,學習之前,先看下如何學習,兩篇不錯的乾貨文章分享給你,一定要點開看下 如何從普通程式員,進階架構師! 工作幾年?如何快速晉升架構師!! 6.1 存儲架構 6.1.1 分段存儲 開篇講過,kafka每個主題可以有多個分區,每個分區在它所在的broker上創建一個文件夾 每個分區又分 ...
  • cds 字元串的基本運用 string(字元串)是c++中一種相當方便的數據類型,他由很多的字元組成,和 char 比較起來,他不必擔心記憶體是否足夠,而既然他自成一個類型,它的使用範圍很廣操作體系也是相當全面的。正是因為他既簡單又實用,所以他深受喜愛!由此,他也誕生出了很多經典高效的演算法,比如說AC ...
  • 很多技術框架都使用NIO技術,學習和掌握Java NIO技術對於高性能、高併發網路的應用是非常關鍵的@mikechen NIO簡介 NIO 中的 N 可以理解為 Non-blocking,不單純是 New,是解決高併發、I/O高性能的有效方式。 Java NIO是Java1.4之後推出來的一套IO接 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...