IDEA開發(fā)并部署運(yùn)行WEB項(xiàng)目全過程
WEB項(xiàng)目的標(biāo)準(zhǔn)結(jié)構(gòu)
一個標(biāo)準(zhǔn)的可以用于發(fā)布的WEB項(xiàng)目標(biāo)準(zhǔn)結(jié)構(gòu)如下:

app 本應(yīng)用根目錄:
static 非必要目錄,約定俗成的名字,一般在此處放靜態(tài)資源 ( css js img)
WEB-INF 必要目錄,必須叫WEB-INF,受保護(hù)的資源目錄,瀏覽器通過url不可以直接訪問的目錄
- classes 必要目錄,src下源代碼,配置文件,編譯后會在該目錄下,web項(xiàng)目中如果沒有源碼,則該目錄不會出現(xiàn)
- lib 必要目錄,項(xiàng)目依賴的jar編譯后會出現(xiàn)在該目錄下,web項(xiàng)目要是沒有依賴任何jar,則該目錄不會出現(xiàn)
- web.xml 必要文件,web項(xiàng)目的基本配置文件. 較新的版本中可以沒有該文件,但是學(xué)習(xí)過程中還是需要該文件
index.html 非必要文件,index.html/index.htm/index.jsp為默認(rèn)的歡迎頁
url的組成部分和項(xiàng)目中資源的對應(yīng)關(guān)系

WEB項(xiàng)目部署的方式
- 方式1 直接將編譯好的項(xiàng)目放在webapps目錄下
- 方式2 將編譯好的項(xiàng)目打成war包放在webapps目錄下,tomcat啟動后會自動解壓war包(其實(shí)和第一種一樣)
- 方式3 可以將項(xiàng)目放在非webapps的其他目錄下,在tomcat中通過配置文件指向app的實(shí)際磁盤路徑
在磁盤的自定義目錄上準(zhǔn)備一個app

在tomcat的conf下創(chuàng)建Catalina/localhost目錄,并在該目錄下準(zhǔn)備一個app.xml文件
<!--
path: 項(xiàng)目的訪問路徑,也是項(xiàng)目的上下文路徑,就是在瀏覽器中,輸入的項(xiàng)目名稱
docBase: 項(xiàng)目在磁盤中的實(shí)際路徑
-->
<Context path="/app" docBase="D:\mywebapps\app" />
啟動tomcat訪問測試即可
IDEA中開發(fā)并部署運(yùn)行WEB項(xiàng)目
部署步驟
- 建立tomcat和idea的關(guān)聯(lián)
- 使用idea創(chuàng)建一個javaWEB工程,在WEB工程中開發(fā)代碼
- 使用idea將工程構(gòu)建成一個可以發(fā)布的app
- 使用idea將構(gòu)建好的app部署到tomcat中,啟動運(yùn)行
IDEA關(guān)聯(lián)本地Tomcat
可以在創(chuàng)建項(xiàng)目前設(shè)置本地tomcat,也可以在打開某個項(xiàng)目的狀態(tài)下找到settings

找到 Build,Execution,Eeployment下的Application Servers ,找到+號

選擇Tomcat Server

選擇tomcat的安裝目錄

點(diǎn)擊ok

關(guān)聯(lián)完畢

IDEA創(chuàng)建web工程
推薦先創(chuàng)建一個空項(xiàng)目,這樣可以在一個空項(xiàng)目下同時存在多個modules,不用后續(xù)來回切換之前的項(xiàng)目,當(dāng)然也可以忽略此步直接創(chuàng)建web項(xiàng)目


檢查項(xiàng)目的SDK,語法版本,以及項(xiàng)目編譯后的輸出目錄


先創(chuàng)建一個普通的JAVA項(xiàng)目

檢查各項(xiàng)信息是否填寫有誤

創(chuàng)建完畢后,為項(xiàng)目添加Tomcat依賴



選擇modules,添加 framework support

選擇Web Application 注意Version,勾選 Create web.xml

刪除index.jsp ,替換為 index.html


處理配置文件
在工程下創(chuàng)建resources目錄,專門用于存放配置文件(都放在src下也行,單獨(dú)存放可以盡量避免文件集中存放造成的混亂)
標(biāo)記目錄為資源目錄,不標(biāo)記的話則該目錄不參與編譯

標(biāo)記完成后,顯示效果如下

處理依賴jar包問題
在WEB-INF下創(chuàng)建lib目錄
必須在WEB-INF下,且目錄名必須叫l(wèi)ib!!!
復(fù)制jar文件進(jìn)入lib目錄

將lib目錄添加為當(dāng)前項(xiàng)目的依賴,后續(xù)可以用maven統(tǒng)一解決


環(huán)境級別推薦選擇module 級別,降低對其他項(xiàng)目的影響,name可以空著不寫

查看當(dāng)前項(xiàng)目有那些環(huán)境依賴


在此位置,可以通過-號解除依賴

IDEA部署-運(yùn)行web項(xiàng)目
檢查idea是否識別modules為web項(xiàng)目并存在將項(xiàng)目構(gòu)建成發(fā)布結(jié)構(gòu)的配置
就是檢查工程目錄下,web目錄有沒有特殊的識別標(biāo)記

以及artifacts下,有沒有對應(yīng) _war_exploded,如果沒有,就點(diǎn)擊+號添加

點(diǎn)擊向下箭頭,出現(xiàn) Edit Configurations選項(xiàng)

出現(xiàn)運(yùn)行配置界面

點(diǎn)擊+號,添加本地tomcat服務(wù)器

因?yàn)镮DEA 只關(guān)聯(lián)了一個Tomcat,紅色部分就只有一個Tomcat可選

選擇Deployment,通過+添加要部署到Tomcat中的artifact

applicationContext中是默認(rèn)的項(xiàng)目上下文路徑,也就是url中需要輸入的路徑,這里可以自己定義,可以和工程名稱不一樣,也可以不寫,但是要保留/,我們這里暫時就用默認(rèn)的

點(diǎn)擊apply 應(yīng)用后,回到Server部分. After Launch是配置啟動成功后,是否默認(rèn)自動打開瀏覽器并輸入URL中的地址,HTTP port是Http連接器目前占用的端口號

點(diǎn)擊OK后,啟動項(xiàng)目,訪問測試
- 綠色箭頭是正常運(yùn)行模式
- "小蟲子"是debug運(yùn)行模式

- 點(diǎn)擊后,查看日志狀態(tài)是否有異常

- 瀏覽器自動打開并自動訪問了index.html歡迎頁

- 工程結(jié)構(gòu)和可以發(fā)布的項(xiàng)目結(jié)構(gòu)之間的目錄對應(yīng)關(guān)系

IDEA部署并運(yùn)行項(xiàng)目的原理
- idea并沒有直接進(jìn)將編譯好的項(xiàng)目放入tomcat的webapps中
- idea根據(jù)關(guān)聯(lián)的tomcat,創(chuàng)建了一個tomcat副本,將項(xiàng)目部署到了這個副本中
- idea的tomcat副本在C:\用戶\當(dāng)前用戶\AppData\Local\JetBrains\IntelliJIdea2022.2\tomcat\中
- idea的tomcat副本并不是一個完整的tomcat,副本里只是準(zhǔn)備了和當(dāng)前項(xiàng)目相關(guān)的配置文件而已
- idea啟動tomcat時,是讓本地tomcat程序按照tomcat副本里的配置文件運(yùn)行
- idea的tomcat副本部署項(xiàng)目的模式是通過conf/Catalina/localhost/*.xml配置文件的形式實(shí)現(xiàn)項(xiàng)目部署的

總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
- idea普通javaweb項(xiàng)目如何部署到tomcat(讀取web.xml文件)
- 教你在IDEA中使用Tomcat部署并啟動Web項(xiàng)目
- IDEA2022中部署Tomcat Web項(xiàng)目的流程分析
- IDEA 如何導(dǎo)入別人的javaweb項(xiàng)目進(jìn)行部署
- 在IDEA 2020.3.1中部署Tomcat并且創(chuàng)建第一個web項(xiàng)目的過程詳解
- Idea2020.2創(chuàng)建JavaWeb項(xiàng)目(部署Tomcat)方法詳解
- 在idea中將創(chuàng)建的java web項(xiàng)目部署到Tomcat中的過程圖文詳解
相關(guān)文章
Java?Shell?springboot通用Shell啟動腳本方式
這篇文章主要介紹了Java?Shell?springboot通用Shell啟動腳本方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-05-05
@RequestParam 接收參數(shù)的值為null的處理方式
這篇文章主要介紹了@RequestParam 接收參數(shù)的值為null的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
詳解Java實(shí)現(xiàn)的k-means聚類算法
這篇文章主要介紹了詳解Java實(shí)現(xiàn)的k-means聚類算法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
springboot不同環(huán)境使用不同配置文件打包方式
這篇文章主要介紹了springboot不同環(huán)境使用不同配置文件打包方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
Java中CyclicBarrier和CountDownLatch的用法與區(qū)別
CyclicBarrier和CountDownLatch這兩個工具都是在java.util.concurrent包下,并且平時很多場景都會使用到。本文將會對兩者進(jìn)行分析,記錄他們的用法和區(qū)別,感興趣的可以了解一下2021-08-08
基于OpenID?Connect及Token?Relay實(shí)現(xiàn)Spring?Cloud?Gateway
這篇文章主要介紹了基于OpenID?Connect及Token?Relay實(shí)現(xiàn)Spring?Cloud?Gateway,Spring?Cloud?Gateway旨在提供一種簡單而有效的方式來路由到API,并為API提供跨領(lǐng)域的關(guān)注點(diǎn),如:安全性、監(jiān)控/指標(biāo)和彈性2022-06-06
SpringBoot使用CORS實(shí)現(xiàn)無縫跨域的方法實(shí)現(xiàn)
CORS 是一種在服務(wù)端設(shè)置響應(yīng)頭部信息的機(jī)制,允許特定的源進(jìn)行跨域訪問,本文主要介紹了SpringBoot使用CORS實(shí)現(xiàn)無縫跨域的方法實(shí)現(xiàn),具有一定的參考價值,感興趣的可以了解一下2023-10-10

