Sevlet與Tomcat
前言
在弄懂Spring MVC的原理與架構先,不得不先弄清楚Sevlet與Tomcat,剛開始我甚至將兩者弄混,本篇希望能夠讓uu了解并區分好兩者。
正文
Tomcat:
開源的 Servlet 容器和 Web 容器:作為 Servlet 容器,它為 Servlet 提供運行環境,管理 Servlet 的生命周期,包括加載、初始化、調用服務方法以及銷毀等。作為 Web 容器,它能夠處理 Web 應用中的各種資源,如 HTML 頁面、圖片等,以及 Servlet 和 JSP。
負責執行和管理 Java Web 應用中的 Servlet 和 JSP:在 Java Web 應用中,Tomcat 能夠加載和執行Servlet,根據客戶端的請求調用相應的 Servlet 方法來處理請求。對于 JSP,Tomcat 會將其轉換為 Servlet,然后像處理普通 Servlet 一樣執行,從而實現動態內容的生成。
作為 Web 服務器接收客戶端請求,執行后臺邏輯并返回響應:當客戶端向服務器發送 HTTP 請求時,Tomcat 作為 Web 服務器接收這些請求。然后,它會根據請求的內容,調用相應的 Servlet 或處理 JSP 頁面,執行后臺的業務邏輯。最后,根據邏輯的處理結果,生成相應的 HTTP 響應并返回給客戶端。
Sevlet
純Java 編寫的一個服務器端程序:Servlet 是用 Java 語言編寫的,運行在服務器端的程序,用于擴展服務器的功能,使其能夠處理客戶端的請求。
用來處理來自客戶端的 HTTP 請求,并生成相應的 HTTP 響應:客戶端通過 HTTP 協議向服務器發送請求,Servlet 接收到請求后,會根據請求的內容進行處理。處理完成后,生成相應的 HTTP 響應。這個過程使得 Servlet 能夠根據不同的請求動態地生成內容。
配置方式
傳統配置
配置Tomcat就不細說了,我發現有個大佬的文章講的特別好,很詳細(從0到1部署Tomcat和添加servlet(IDEA2024最新版詳細教程)),至于Sevlet就很簡單了,首先創建類去實現Servlet接口,然后在web.xml中配置
<servlet>
<servlet-name>sevlet1</servlet-name>
<servlet-class>com.test.sevlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>sevlet1</servlet-name>
<url-pattern>/sevlet1</url-pattern>
</servlet-mapping>
這兩個的作用在這里就是聲明Servlet,以及告訴 Tomcat 哪個 URL 對應這個 Servlet”。
<servlet-class>Servlet 的完整類名
<url-pattern>瀏覽器訪問的路徑
得記住兩個<servlet-name>內的名字需完全一致
Springboot框架中
而我們目前使用 SpringBoot,就不用這么麻煩去配置 Tomcat 和 Sevlet,SpringBoot 把嵌入式 Tomcat 打成依賴 jar,應用啟動時直接 new 一個 Tomcat 實例,監聽端口、加載類,因此不需要外部 Tomcat ,如果要更換端口之類的,可以在 application.properties 修改;而 Sevlet 也不需要配置,自動配置由 DispatcherServletAutoConfiguratio 中的兩個內部類 DispatcherServletConfiguration, DispatcherServletRegistrationConfiguration,前者是配置DispatcherServlet,后者是配置DispatcherServlet的注冊類。什么是注冊類?我們知道Servlet實例是要被添加(注冊)到如tomcat這樣的ServletContext里的,這樣才能夠提供請求服務。所以,DispatcherServletRegistrationConfiguration將生成一個Bean,負責將DispatcherServlet給注冊到ServletContext中。(具體詳看springboot mvc自動配置(一)自動配置DispatcherServlet和DispatcherServletRegistry )
篇后吐槽
- 我靠,這周,頂多就干了兩天活,項目在上線部署階段,我好像也確實干不了啥,這工資我拿的有點不好意思了。

浙公網安備 33010602011771號