大家會不會通過網址訪問的Servlet 實現呢?

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 {

}

3)實現 Servlet 規範

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

package com.xxx.web;

import javax.servlet.http.HttpServlet;

public class HelloWeb extends HttpServlet {

}

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>");
    }

}

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>

大家會不會通過網址訪問的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 實現呢?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章