你知道可以通過網址訪問的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 專案
2)新建類
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
6)釋出專案
到此,需要編寫和配置的地方已經完成,專案已經完整了,但是如果需要外界能夠訪問, 還需要將專案釋出到伺服器上並執行伺服器。
7)啟動專案
看到類似一長串資訊表示啟動成功,接下來就可以訪問專案了
8)訪問並檢視結果
在專案正確釋出到伺服器上之後,使用者即可通過瀏覽器訪問該專案中的資源。注意 url 的格式正確,tomcat 的埠為 8080。 http://localhost:8080/hw/helloweb ,頁面結果
後臺結果
到這裡我們的第一個 Servlet 就實現了!
擴充套件
工作原理
執行過程
客戶端發出請求根據 web.xml 檔案的配置,找到對應的 url-pattern 讀取其中的值,找到對應的 servlet-name,找到指定的 class 並載入執行該 class,返回結果由 Web 伺服器將結果響應給客戶端
相關文章
- 你知道Redis可以實現延遲佇列嗎?Redis佇列
- 你知道前端是如何實現水印的嗎前端
- 如何實現通過Samba訪問超過2G的檔案?Samba
- Oracle通過rman進行克隆,你知道如何做嗎?Oracle
- 如何讓NAS可以透過網際網路訪問?
- CAS你知道嗎?底層如何實現?ABA問題又是什麼?關於這些你知道答案嗎
- 你知道如何用 PHP 實現多程式嗎?PHP
- 都用過@Autowired,但你知道它是怎麼實現的嗎
- 通過 Samba 實現 Win/Mac 訪問 LinuxSambaMacLinux
- 通過svn命令實現建立版本庫下的資料夾,並且可以操作訪問
- Java通過SSLEngine與NIO實現HTTPS訪問JavaHTTP
- 在servlet中如何訪問javabeanServletJavaBean
- 面試官問:多執行緒同步內部如何實現的,你知道怎麼回答嗎?面試執行緒
- 你確定能通過現在的VUE面試嗎?Vue面試
- 網路釣魚 你知道如何識別嗎?
- Servlet訪問WebService出現錯誤ServletWeb
- 【嗅探底層】你知道Synchronized作用是同步加鎖,可你知道它在JVM中是如何實現的嗎?synchronizedJVM
- 你知道SSL是如何工作的嗎?
- servlet+jsp實現過濾器,防止使用者未登入訪問ServletJS過濾器
- Golang 官網現在可以直接訪問了Golang
- 物聯網的誕生過程及其發展你知道嗎?
- 如何實現在家訪問公司內網服務內網
- 防止跨域問題無法訪問網址跨域
- 樹莓派如何通過FAN-4G-HAT訪問網際網路樹莓派
- 面試官:既然React/Vue可以用Event Bus進行元件通訊,你可以實現下嗎?面試ReactVue元件
- 想知道你的Mac可以執行哪些版本的macOS嗎?Mac
- 【AWS】通過對等網路打通VPC訪問
- 一個有趣的問題, 你知道SqlDataAdapter中的Fill是怎麼實現的嗎SQLLDAAPT
- 教你鐵威馬NAS如何實現外網訪問
- 你知道MySQL的Limit有效能問題嗎MySqlMIT
- 一個域名可以對應多個IP嗎?如何透過DNS實現?DNS
- 通過Oracle Gateways 訪問SybaseOracleGateway
- Laravel 訪問器,你真的用好了嗎?(大坑實踐)Laravel
- 你知道如何學習Linux嗎?Linux
- 您可知道如何透過`HTTP2`實現TCP的內網穿透???HTTPTCP內網穿透
- SQL Server 不同網段IP通過名稱訪問SQLServer
- 面試:你可以實現一下vue的v-model嗎?面試Vue
- Holer實現Oracle外網訪問Oracle