javaweb項(xiàng)目入門實(shí)戰(zhàn)詳細(xì)指南
一、項(xiàng)目部署的問題
- 配置
war或war exploded的目的
為了讓Tomcat能識(shí)別并運(yùn)行你的JavaWeb項(xiàng)目,是項(xiàng)目部署到Tomcat的必要步驟。
JavaWeb項(xiàng)目最終需要打包成Web應(yīng)用歸檔格式(即war相關(guān)形式),Tomcat作為Web服務(wù)器,只能識(shí)別這種格式的項(xiàng)目文件結(jié)構(gòu),才能加載并運(yùn)行項(xiàng)目。如果不配置,Tomcat不知道如何讀取你的項(xiàng)目代碼,無法啟動(dòng)項(xiàng)目。 war和war exploded的區(qū)別
| 類型 | 含義 | 特點(diǎn) | 適用場景 |
|---|---|---|---|
| war | 是一個(gè)壓縮包(把項(xiàng)目的class、資源、配置等文件打包成.war文件) | 部署時(shí)Tomcat會(huì)自動(dòng)解壓這個(gè)包;文件是靜態(tài)的,修改代碼后需要重新打包部署 | 正式環(huán)境、生產(chǎn)環(huán)境發(fā)布 |
| war exploded | 是解壓后的war目錄結(jié)構(gòu)(直接以文件夾形式存在,包含所有項(xiàng)目文件) | 修改代碼后可以實(shí)時(shí)生效(配合熱部署);不需要打包,部署速度快 | 開發(fā)環(huán)境、調(diào)試階段 |



二、項(xiàng)目訪問路徑設(shè)置
上面的應(yīng)用程序上下文是項(xiàng)目的訪問前綴,而服務(wù)器的URL是Tomcat的基礎(chǔ)訪問地址,二者組合起來才是項(xiàng)目的完整訪問路徑。
1. URL、應(yīng)用程序上下文的區(qū)別
- 服務(wù)器URL:
http://localhost:8080/(這是Tomcat本身的基礎(chǔ)地址,所有部署在這個(gè)Tomcat上的項(xiàng)目都基于這個(gè)地址訪問) - 應(yīng)用程序上下文:比如設(shè)為
/myproject(這是你的項(xiàng)目在Tomcat中的“標(biāo)識(shí)路徑”) - 完整訪問路徑 = 服務(wù)器URL + 應(yīng)用程序上下文 + 資源路徑
(比如訪問項(xiàng)目里的index.html,完整URL是http://localhost:8080/myproject/index.html)
2. 實(shí)際開發(fā)中的使用
- 服務(wù)器URL:一般不用改,保持Tomcat默認(rèn)的
http://localhost:8080/即可(除非端口沖突,才需要修改HTTP端口)。 - 應(yīng)用程序上下文:根據(jù)需求設(shè)置
- 若你只部署一個(gè)項(xiàng)目:可以設(shè)為
/(根路徑),此時(shí)完整訪問路徑直接是http://localhost:8080/資源名(比如http://localhost:8080/login.html),更簡潔。 - 若部署多個(gè)項(xiàng)目:給每個(gè)項(xiàng)目設(shè)不同的上下文(比如項(xiàng)目A設(shè)
/appA,項(xiàng)目B設(shè)/appB),避免訪問沖突。
- 若你只部署一個(gè)項(xiàng)目:可以設(shè)為
三、項(xiàng)目默認(rèn)首頁路徑的設(shè)置
默認(rèn)首頁路徑的實(shí)現(xiàn)方式
默認(rèn)首頁的配置核心是在web.xml文件里面設(shè)置<welcome-file-list>標(biāo)簽,具體規(guī)則和擴(kuò)展用法如下:
1. 基礎(chǔ)配置:指定默認(rèn)頁面文件名
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<!-- 可添加多個(gè)備選頁面,Tomcat會(huì)按順序查找 -->
<welcome-file>index.html</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
- 當(dāng)訪問項(xiàng)目根路徑(如
http://localhost:8080/myweb/)時(shí),Tomcat會(huì)按順序在項(xiàng)目根目錄下查找<welcome-file>指定的文件,找到第一個(gè)存在的頁面并加載; - 若項(xiàng)目根目錄有
index.jsp,則直接訪問http://localhost:8080/myweb/會(huì)自動(dòng)打開index.jsp;若沒有,則找index.html,以此類推。
2. 配置子目錄下的默認(rèn)首頁
如果默認(rèn)首頁不在項(xiàng)目根目錄,而是在子目錄(如pages/index.jsp),需通過虛擬路徑映射或Servlet轉(zhuǎn)發(fā)實(shí)現(xiàn):
方式1:用<welcome-file>指定子目錄路徑(Tomcat支持)
<welcome-file-list>
<welcome-file>pages/index.jsp</welcome-file>
</welcome-file-list>
- 訪問根路徑時(shí),Tomcat會(huì)查找
pages/index.jsp并加載。
方式2:通過Servlet映射實(shí)現(xiàn)(更靈活,支持動(dòng)態(tài)邏輯)
- 先定義一個(gè)處理根路徑的Servlet:
@WebServlet("/") // 映射到根路徑
public class IndexServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 轉(zhuǎn)發(fā)到指定的首頁路徑
req.getRequestDispatcher("/pages/home.jsp").forward(req, resp);
}
}
- 此時(shí)
web.xml中無需配置<welcome-file-list>,Servlet會(huì)直接處理根路徑請求并跳轉(zhuǎn)到目標(biāo)頁面。
3. 結(jié)合應(yīng)用程序上下文的訪問規(guī)則
若項(xiàng)目的應(yīng)用程序上下文是/myweb,默認(rèn)首頁配置后:
- 訪問
http://localhost:8080/myweb/→ 加載配置的默認(rèn)首頁; - 若默認(rèn)首頁是
pages/index.jsp,則實(shí)際訪問路徑等價(jià)于http://localhost:8080/myweb/pages/index.jsp。
注意事項(xiàng)
- 優(yōu)先級:Servlet映射(如
@WebServlet("/")) ><welcome-file-list>,若同時(shí)配置,Servlet會(huì)覆蓋歡迎頁規(guī)則; - 靜態(tài)資源優(yōu)先級:若
web.xml里不配置<welcome-file-list>,Tomcat會(huì)使用內(nèi)置的默認(rèn)歡迎頁列表,順序是:index.html→index.htm→index.jsp; - 新版Servlet(3.0+)推薦用注解替代
web.xml的Servlet配置,但歡迎頁仍建議在web.xml中配置,更直觀。

總結(jié)
到此這篇關(guān)于javaweb項(xiàng)目入門實(shí)戰(zhàn)詳細(xì)指南的文章就介紹到這了,更多相關(guān)javaweb項(xiàng)目入門內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot/Angular整合Keycloak實(shí)現(xiàn)單點(diǎn)登錄功能
Keycloak新的發(fā)行版命名為Quarkus,專為GraalVM和OpenJDK HotSpot量身定制的一個(gè)Kurbernetes Native Java框架,計(jì)劃2019年底正式發(fā)布。這篇文章主要介紹了Spring Boot/Angular整合Keycloak實(shí)現(xiàn)單點(diǎn)登錄,需要的朋友可以參考下2019-10-10
SpringBoot實(shí)現(xiàn)評論回復(fù)功能(數(shù)據(jù)庫設(shè)計(jì))
這篇文章主要介紹了SpringBoot實(shí)現(xiàn)評論回復(fù)功能(數(shù)據(jù)庫設(shè)計(jì)),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
Java 1.8使用數(shù)組實(shí)現(xiàn)循環(huán)隊(duì)列
這篇文章主要為大家詳細(xì)介紹了Java 1.8使用數(shù)組實(shí)現(xiàn)循環(huán)隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-10-10
Java的鎖機(jī)制:synchronized和CAS詳解
這篇文章主要介紹了Java的鎖機(jī)制synchronized和CAS詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-09-09
ArrayList和LinkedList區(qū)別及使用場景代碼解析
這篇文章主要介紹了ArrayList和LinkedList區(qū)別及使用場景代碼解析,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Java?實(shí)現(xiàn)判定順序表中是否包含某個(gè)元素(思路詳解)
這篇文章主要介紹了Java?實(shí)現(xiàn)判定順序表中是否包含某個(gè)元素,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06
遞歸出現(xiàn)棧溢出stackoverflow的問題及解決
這篇文章主要介紹了關(guān)于遞歸出現(xiàn)棧溢出stackoverflow的問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09

