首頁  >  文章  >  Java  >  Java 中的 Servlet

Java 中的 Servlet

WBOY
WBOY原創
2024-08-30 16:23:24962瀏覽

Java 中的 Servlet 可以用多種方式描述。作為一種技術,Servlet 用於建立網頁;作為 API,提供介面等。它用於擴展在請求-響應編程模型上託管應用程式的伺服器的功能。 Servlet 提供基於元件和獨立於平台的方法來建立基於 Web 的應用程序,而沒有任何效能限制。 Java 中的 Servlet 可以透過 Java API 和 JDBC 完全存取企業資料庫。我們將詳細了解這些 Servlet 是什麼、為什麼使用它們、它的優點和局限性,以及 Servlet 在 Java 中實際如何運作。

廣告 該類別中的熱門課程 JAVA SERVLET - 專業化 | 18 門課程系列 | 6 次模擬測驗

開始您的免費軟體開發課程

網頁開發、程式語言、軟體測試及其他

Servlet 可以用許多其他方式來描述,

  • Servlet 是一種用於建立 Web 應用程式的技術
  • Servlet 也是一個 API,提供許多介面和類別以及文件
  • 這是一個用Java實現的用於建立Servlet的介面
  • 它是一個擴展伺服器功能並回應傳入請求的類別。它可以是任何類型的請求。
  • 它也是一個部署在伺服器上的Web元件,用於建立動態網頁。

為什麼我們需要Java中的Servlet?

隨著科技的不斷發展,我們需要每天熟悉最新的更新或最新的技術堆疊。 Servlet 可作為介面、技術、Web 元件、類別或 API。 借助 servlet,我們可以透過網頁/表單、資料庫以及任何其他資料來源收集使用者資訊並建立網頁。

  • Java 中的 Servlet 與使用通用網關介面 (CGI) 實現的程式類似,但 Servlet 比 CGI 具有更多優勢。
  • 在效能方面,Servlet 明顯優於 CGI。
  • 與平台無關,因為 servlet 是用 Java 寫的。
  • 它們在 Web 伺服器空間內執行。我們不需要建立單獨的流程來處理客戶請求。
  • Java 安全性在保護伺服器電腦的資源方面實施了一組嚴格的限制,因此 Servlet 是可信任的。
  • Servlet 可以透過套接字、RMI 機制與資料庫、小程式或其他一些軟體進行通訊。

Servlet 在 Java 中如何運作?

Java 中的 Servlet 檢查通訊介面、客戶端和伺服器的要求、使用的協定、程式語言以及涉及的軟體。 Servlet 依照以下步驟執行,

第 1 步: 客戶端向 Web 伺服器發送請求,讀取客戶端發送的明確數據,這些數據可以是 HTML 表單、小程式或自訂 HTTP 用戶端程式。

第 2 步: Web 伺服器接收請求。

第3步:Web伺服器將請求傳遞給對應的servlet,處理請求可能包括與資料庫通訊、呼叫Web服務或直接回應。

第 4 步: Servlet 然後處理請求並以輸出的形式產生回應。它可以是任何格式,HTML 或 XML、GIF(如果是圖像)或 Excel。

第 5 步: 然後這些 servlet 會將回應傳回伺服器

第 6 步: 然後 Web 伺服器將回應傳回客戶端和用戶端,如瀏覽器顯示在 UI 上一樣。

Servlet 架構

上面的 servlet 架構使用了一些 Java 方法,例如:

Java 中的 Servlet

  • Servlet.init(): 由 Servlet 調用,表示 Servlet 實例執行成功並調用服務。然後Servlet呼叫service()方法來處理客戶端的請求。然後使用 destroy() 方法完成服務後終止
  • Servlet.destroy():方法在整個生命週期中只會運行一次,這給我們一個訊號,表示Servlet實例已經結束。

用 Java 建立 Servlet 的範例

首先,我們需要安裝Java、Eclipse和Tomcat:

1.我們將使用 File-> 建立一個動態 Web 專案。新->動態網路項目。

Java 中的 Servlet

2.輸入Project Name並選擇Target Runtime,點選Next,需要勾選「Generate web.xml」然後Finish

3.項目結構如下圖所示。

Java 中的 Servlet

4.然後,點擊檔案->建立新的 Servlet。

Java 中的 Servlet

Java 中的 Servlet

5.點選上面的「完成」。現在 Eclipse 將根據前面步驟中完成的輸入或設定來產生 Servlet 類別。

代碼:

FirstProgram.java

package com.srccode.example;
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;
/**
* Servlet implementation class FirstProgram
*/
@WebServlet("/FirstProgram")
public class FirstProgram extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public FirstProgram() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}

我們將修改 Servlet 類別的程式碼如下,

套件 com.srccode.example;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class FirstProgram
*/
@WebServlet("/FirstProgram")
public class FirstProgram extends HttpServlet {
private static final long <em>serialVersionUID</em> = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public FirstProgram() {
super();
// TODO Auto-generated constructor stub
}
private String mymsg;
public void init() throws ServletException {
mymsg = "Hi eduCBA Team! We are working on Java Servlet Tutorial! This is the first Servlet Program!";
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
PrintWriter printWriter = response.getWriter();
printWriter.println("<h1>" + mymsg + "</h1>");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}

在 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>ServletExample</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>

在index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>BeginnersBook Servlet Demo</title>
</head>
<body>
<a href="welcome">Click to call Servlet</a>
</body>
</html>

輸出:

右鍵,點擊項目並選擇運行方式->在伺服器上運行。

現在打開瀏覽器,我們可以看到以下輸出,伺服器將在本地主機上運行:

http://localhost:8080/ServletExample/FirstProgram

Java 中的 Servlet

Java 中的 Servlet

Java Servlet 的優點

Java中的Servlet有很多優點。 Servlet 可以看成是運行在伺服器端的小程式:

  • Servlet 是持久的:Servlet 保留在記憶體中,直到被 destroy() 方法銷毀,這有助於服務傳入的請求。它只與資料庫建立一次連接,並且可以處理同一資料庫上的多個請求。減少用於連接到資料庫或任何其他來源的時間和資源
  • Servlet 是可移植的:這意味著 Servlet 與所有作業系統相容,即在一個作業系統中編寫的程式可以在其他作業系統上執行
  • Servlet 獨立於伺服器:Servlet 與市場上可用的任何 Web 伺服器相容
  • Servlet 與協議無關:Servlet 可以支援任何協議,如 FTP、Telnet 等。它提供了對 HTTP 協定的擴充支援
  • Servlet 是安全的:由於這些 Servlet 是伺服器端程序,僅由 Web 伺服器調用,因此繼承了 Web 伺服器採取的所有安全措施
  • Servlet 是可擴展的:Servlet 可以根據使用者需求擴展並變形為物件
  • Servlet 速度很快:由於這些 Servlet 被編譯為字節碼,因此與其他腳本語言相比執行速度更快。並且還提供類型檢查和強錯誤。
  • Servlet 價格低廉:有許多免費的 Web 伺服器可用於任何類型的用途,無論是個人用途還是商業用途。

至此,我們結束了「Java Servlet」主題。我們已經透過範例了解了 Java 中的 Servlet 是什麼以及如何使用它們。我們也看到了它的優點,並透過Servlet架構和使用的Servlet方法一步步了解了Servlet是如何使用的。也看到了為什麼在 Java 中使用 Servlet 以及它相對於 CGI 的優點。關於 Servlet,我們還有很多值得探索的地方,還有多種類型的 Servlet 可供使用,我們將在進一步的教程中進行更深入的研究。

以上是Java 中的 Servlet的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn