滄州wap網(wǎng)站制作企業(yè)推廣網(wǎng)
個人主頁:兜里有顆棉花糖
歡迎 點贊👍 收藏? 留言? 加關(guān)注💓本文由 兜里有顆棉花糖 原創(chuàng)
收錄于專欄【Servlet】
本專欄旨在分享學(xué)習(xí)Servlet的一點學(xué)習(xí)心得,歡迎大家在評論區(qū)交流討論💌
Servlet是Java編寫的服務(wù)器端程序,主要用于處理客戶端請求和生成響應(yīng)。它可以接收來自客戶端(通常是Web瀏覽器)的請求,執(zhí)行特定的任務(wù),并返回響應(yīng)給客戶端。
目錄
- 一、創(chuàng)建項目
- 二、引入依賴
- 三、創(chuàng)建必要的目錄和文件
- 四、代碼編寫
- 五、打包程序
- 六、程序部署
- 七、驗證程序
- 注意事項
重要的事情放前面:
Servlet程序運行時,一定要保證Tomcat處于運行狀態(tài)
。
一、創(chuàng)建項目
什么是Maven
:
Maven是Java中的一個構(gòu)建工具。
一個程序在編寫過程中往往會涉及到第三方庫的依賴,同時需要對寫好的程序進行一個打包部署。
Maven存在的意義就是為了能夠方便的進行依賴管理
和打包部署
。
而IntelliJ
是Java中默認的構(gòu)建工具,Gradle
(安卓中會用到)同樣是是Java中常見的構(gòu)建工具。
我們來帶看一下
pom.xml文件
:
后續(xù)我們會根據(jù)需要會繼續(xù)向pom.xml
文件中放新的內(nèi)容。
好了,以上就是創(chuàng)建項目的步驟,接下來我們來到下一步,即引入依賴。
二、引入依賴
當前的代碼要使用Servlet開發(fā),而Servlet并不是Java標準庫自帶的,所以我們需要Maven把Servlet的依賴獲取到。所以我們需要找到Maven的中央倉庫,然后從中央倉庫中找到我們想要獲取到的依賴。
中央倉庫地址:https://mvnrepository.com/
來到中央倉庫后,直接搜索servlet即可。
如上圖,點擊Java Servlet API
后來到如下頁面
找到3.1.0
的版本,因為Tomcat和Servlet是有對應(yīng)關(guān)系的:如果Tomcat使用8版本的話,那么Servlet就需要使用3.1版本。
此時IDEA就會自動的通過Maven從中央倉庫下載到這里的依賴。
我們可以看到上面報紅了,有可能還沒有下載完(第一次使用一般會比較慢,因為要從中央倉庫中下載很多的依賴),這種情況稍微等一下就好了。
但是如果等了很長時間都沒有解決的話,我們就需要點擊下面的刷新按鈕:
好了,以上就是引入依賴的全過程。
三、創(chuàng)建必要的目錄和文件
Tomcat對于Servlet項目是有一些額外的要求的。
Maven最為一個通用的工具,不僅僅可以管理Servlet項目,還可以管理其它的項目。再此基礎(chǔ)上還需要按照Servlet項目的要求來創(chuàng)建出特定的目錄和文件。
- 在main目錄下創(chuàng)建
webapp目錄
- 在
webapp目錄中
創(chuàng)建一個目錄WEB-INF
- 在
WEB-INF
目錄中創(chuàng)建web.xml
文件,web.xml文件
的作用就是告訴Tomcat我這個目錄中的內(nèi)容是一個webapp,需要把我加載起來。
整個目錄結(jié)構(gòu)如下:
上述創(chuàng)建的目錄結(jié)構(gòu)(包括目錄的名字)和文件都是固定的。
另外,我們需要在web.xml
中編寫一些內(nèi)容,編寫內(nèi)容如下(直接復(fù)制粘貼即可):
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app><display-name>Archetype Created Web Application</display-name>
</web-app>
這個配置文件即web.xml
的作用是指定了該 Web 應(yīng)用程序的基本信息和配置參數(shù),例如,控制應(yīng)用程序如何處理請求、響應(yīng)、會話管理等(具體細節(jié)我們這里暫時跳過)。
上述的配置文件可能會出現(xiàn)如下報錯,請看:
爆紅不是我們的原因,這里直接忽略即可(并不影響程序的運行)。
解釋一下:爆紅的部分即"http://java.sun.com/dtd/web-app_2_3.dtd"
是一個schema文件
,該文件描述了xml文件的格式是怎樣的(哪些標簽是合法的,哪些是不合法的,以及標簽之間如何進行嵌套)。
好了,以上就是創(chuàng)建目錄結(jié)構(gòu)及文件的全部內(nèi)容。接下來開始正式的代碼編寫。
四、代碼編寫
- 第一步:創(chuàng)建類
HelloServlet
,然后讓該類繼承HttpServlet
(此類是Servlet的jar包提供的,編寫Servlet程序一般都需要繼承這個類——HttpServlet
),如下圖:
如果HttpServlet
報紅的話,可能是之前的pom.xml
中的依賴沒有正確引入。這是我們只需要刷新一下pom.xml
文件即可。
- 第二步:重寫父類
HttpServlet
中的方法(doGet方法
)
在解釋doGet
方法之前,我們先來回顧下服務(wù)器典型的三步走流程:
①讀取請求并解析請求
②根據(jù)請求計算響應(yīng)
③把響應(yīng)寫回到客戶端
好了接下來解釋doGet
方法:
doGet方法要做的事情就是根據(jù)請求(req)計算出響應(yīng)(resp),所以對應(yīng)的doGet方法中的代碼就是根據(jù)req請求中不同的參數(shù)細節(jié)從而生成一個具體的resp對象(即往空對象中設(shè)置屬性)。
然后,Tomcat就會根據(jù)這個resp響應(yīng)對象轉(zhuǎn)換成符合HTTP協(xié)議的響應(yīng)報文并返回給瀏覽器。
注解(配置路由):
我們已經(jīng)知道Tomcat會在合適的時機自動調(diào)用doGet方法,體現(xiàn)在兩個方面:
第一個方面:根據(jù)請求方法的不同來調(diào)用不同的方法。舉例:如果請求方法是GET,那么Tomcat就會在合適的時機自動調(diào)用doGet;如果請求的方法是PUT,那么Tomcat就會在合適的時機自動調(diào)用doPost。
第二個方面:請求的路徑中,url后面帶有層次結(jié)構(gòu)的路徑。一個Servlet程序中可能有多個Servlet類,這些Servlet類需要在不同的情況下被執(zhí)行到。比如當請求的路徑中有hello的時候,才能執(zhí)行到HelloServlet的代碼。當然,不同的Servlet類可以關(guān)聯(lián)到不同的路徑
。
總結(jié):Tomcat在合適的時機自動調(diào)用Servlet的方法,根據(jù)請求的方法類型和請求的路徑進行匹配,以調(diào)用對應(yīng)的Servlet方法來處理請求。這樣可以實現(xiàn)不同Servlet類在不同情況下的執(zhí)行(不同的代碼應(yīng)用到不同的場景
)。
總而言之,doGet
方法就是根據(jù)請求算出響應(yīng)
(即服務(wù)器典型三步走的第二步,第一步和第三步由Tomcat來完成)。
以上就是代碼的編寫,現(xiàn)在問題來了,為什么沒有出現(xiàn)main方法。
解釋:Servlet程序不需要main方法。上述寫的代碼并不是獨立的程序,而是放到Tomcat上去執(zhí)行的。而main方法在Tomcat,我們寫的代碼比如說doGet之類的方法都是讓Tomcat來調(diào)用的
。
五、打包程序
這里寫的程序是放到Tomcat上運行,所以需要對程序進行打包。
打包成一個Tomcat能識別的包的格式,此時代碼才會被Tomcat給加載起來。
打包的過程是借助Maven來完成。
看到如下圖就說明已經(jīng)打包好了。
在Maven中默認打包生成的是jar包(jar包是java中常用的打包方式,jar包中就是一些.class文件),但是Tomcat需要的并不是jar包,而是war包(war包本質(zhì)上和jar包差不多,war包中會包含一些前端的代碼,如html、css等,以及一些Tomcat的配置(web.xml))。
所以我們需要修改配置項來讓Maven打包出來的是一個war包
在pom.xml文件
中插入<packaging>war</packaging>
即可,如下圖:
另外,除了在pom.xml
中添加packaging
標簽外,我們還可以添加其它標簽,如下:
<build><finalName>java_servlet</finalName>
</build>
通過finalName標簽可以設(shè)置打包出來的war包的名字(不是必須的,也可以使用默認的名字)。
好了,修改了上述的配置之后,接下來我們重新打包:
可以看到上圖中target目錄中新打成的war包。
這個war包就是我們想要向Tomcat中部署的內(nèi)容。
至此,打包完成,我們就可以把war包放到Tomcat中了。
六、程序部署
程序部署就是把我們剛剛打包生成的war包放到Tomcat上,具體來說就是把這個war包拷貝到Tomcat中的webapps目錄中。
把war包復(fù)制到Tomcat中的webapps目錄后,Tomcat就會識別到有新的webapp到來了,然后就會自動對這個war包進行解壓縮。
下面就到了最后一步——驗證程序。
七、驗證程序
通過瀏覽器發(fā)起http get請求,觸發(fā)剛剛的servlet的代碼。
第一點:
通過第一級路徑(稱為context path/application path)來確認要訪問哪個webapp(這個路徑就是war包的名字);第二點:
然后通過第二級路徑(稱為servlet path)來訪問哪一個servlet代碼;第三點:
然后通過方法來確定執(zhí)行servlet中哪個方法。
結(jié)合上面三點就定位到了要執(zhí)行的代碼時doGet方法
最后,程序成功執(zhí)行。
注意事項
如果我們要對代碼進行修改的話,我們需要重復(fù)上述的五、六、七
步驟。
好了,以上就是本文的全部內(nèi)容了。希望各位友友可以一鍵三連哈!!!