你知道可以通過網址訪問的Servlet如何實現嗎?

Java老猿發表於2020-11-28

Servlet 是 Server Applet 的縮寫,是服務端小程式的意思。使用 Java 語言編寫的伺服器端程式,主要功能在於互動式地瀏覽和生成資料,生成動態Web內容,Servlet 主要執行在伺服器端,並由伺服器呼叫執行,是一種按照 Servlet 標準來開發的類。 是 SUN 公司提供的一門用於開發動態 Web 資源的技術。(言外之意:要實現 web 開發,需要實現 Servlet 標準)

Servlet 本質上也是 Java 類,但要遵循 Servlet 規範進行編寫,沒有 main() 方法,它的建立、使用、銷燬都由 Servlet 容器進行管理(如 Tomcat)。(言外之意:寫自己的類,不用寫 main 方法,別人自動呼叫)

Servlet 是和 HTTP 協議是緊密聯絡的,其可以處理 HTTP 協議相關的所有內容。這也是 Servlet 應用廣泛的原因之一。

提供了 Servlet 功能的伺服器,叫做 Servlet 容器,其常見容器有很多,如 Tomcat, Jetty, WebLogic Server, WebSphere, JBoss 等等。

Servlet實現方式

  • 建立動態 web 專案
  • 新建類
  • 實現 Servlet 規範
  • 重寫 service 方法
  • 配置 web.xml
  • 釋出專案
  • 啟動專案
  • 訪問並檢視結果

案例實操

1)建立動態 web 專案

你知道可以通過網址訪問的Servlet如何實現嗎?

2)新建類

你知道可以通過網址訪問的Servlet如何實現嗎?

package com.xxx.web;

public class HelloWeb {

}` 

*   1
*   2
*   3
*   4
*   5

3)實現 Servlet 規範

實現 Servlet 規範,即繼承 HttpServlet 類,並匯入相應的包,該類中已經完成了通訊的規則,我們只需要進行業務的實現即可。

package com.xxx.web;

import javax.servlet.http.HttpServlet;

public class HelloWeb extends HttpServlet {

}` 

*   1
*   2
*   3
*   4
*   5
*   6
*   7

4)重寫 service 方法

滿足 Servlet 規範只是讓我們的類能夠滿足接收請求的要求,接收到請求後需要對請求進行分析,以及進行業務邏輯處理,計算出結果,則需要新增程式碼,在規範中有一個叫做 service 的方法,專門用來做請求處理的操作,業務程式碼則可以寫在該方法中。

package com.xxx.web;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWeb extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("I received a request");
        resp.getWriter().write("<h1>Hello World!</h1>");
    }

}` 

*   1
*   2
*   3
*   4
*   5
*   6
*   7
*   8
*   9
*   10
*   11
*   12
*   13
*   14
*   15
*   16
*   17
*   18

5)配置 web.xml

在完成好了一切程式碼的編寫後,還需要向伺服器說明,特定請求對應特定資源,此時通過一個名叫 web.xml 的配置檔案完成。

<!-- 配置servlet -->
<servlet>
  <servlet-name>helloweb</servlet-name><!-- 給伺服器看的 -->
  <servlet-class>com.xxx.web.HelloWeb</servlet-class><!-- servlet對應的資源路徑 -->
</servlet>
<servlet-mapping>
  <servlet-name>helloweb</servlet-name><!-- 給伺服器看的 -->
  <url-pattern>/helloweb</url-pattern><!-- 給瀏覽器看的,對外訪問路徑 -->
</servlet-mapping>` 

*   1
*   2
*   3
*   4
*   5
*   6
*   7
*   8
*   9

你知道可以通過網址訪問的Servlet如何實現嗎?

6)釋出專案

到此,需要編寫和配置的地方已經完成,專案已經完整了,但是如果需要外界能夠訪問, 還需要將專案釋出到伺服器上並執行伺服器。

你知道可以通過網址訪問的Servlet如何實現嗎?

你知道可以通過網址訪問的Servlet如何實現嗎?

你知道可以通過網址訪問的Servlet如何實現嗎?

7)啟動專案

你知道可以通過網址訪問的Servlet如何實現嗎?

看到類似一長串資訊表示啟動成功,接下來就可以訪問專案了

你知道可以通過網址訪問的Servlet如何實現嗎?

8)訪問並檢視結果

在專案正確釋出到伺服器上之後,使用者即可通過瀏覽器訪問該專案中的資源。注意 url 的格式正確,tomcat 的埠為 8080。 http://localhost:8080/hw/helloweb ,頁面結果

你知道可以通過網址訪問的Servlet如何實現嗎?

後臺結果

你知道可以通過網址訪問的Servlet如何實現嗎?

到這裡我們的第一個 Servlet 就實現了!

擴充套件

工作原理

你知道可以通過網址訪問的Servlet如何實現嗎?

執行過程

客戶端發出請求根據 web.xml 檔案的配置,找到對應的 url-pattern 讀取其中的值,找到對應的 servlet-name,找到指定的 class 並載入執行該 class,返回結果由 Web 伺服器將結果響應給客戶端

你知道可以通過網址訪問的Servlet如何實現嗎?

相關文章