目錄
- Tomcat部署SpringBoot項(xiàng)目的war包的方法
- 一、環(huán)境
- 二、SpringBoot打war包配置
- 三、Tomcat啟動(dòng)war包
Tomcat部署SpringBoot項(xiàng)目的war包的方法
一、環(huán)境
1.新建系統(tǒng)變量名: CATALINA_HOME,變量值:D:\Development\apache-tomcat-8.5.20 ; (CATALINA_HOME中的變量值為你tomcat的安裝路徑,不包括\bin)2.在系統(tǒng)變量Path中添加:%CATALINA_HOME%\bin。(;分號(hào)結(jié)尾,第一個(gè)%前面若沒有分號(hào),分號(hào)是英文狀態(tài)下輸入的)
配置完成,在dos下輸入命令“startup”將會(huì)看到如下成功界面

二、SpringBoot打war包配置
pom.xml配置
springboot web啟動(dòng)器包含內(nèi)置tomcat,改用外部 tomcat去除剔除springboot的tomcat
(1) 依賴(雖然已經(jīng)添加依賴打包是剔除springboot的tomcat)
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件 -->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 添加servlet-api依賴 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
(2)SpringBoot啟動(dòng)類,必須繼承一個(gè)SpringBootServletInitializer,然后重寫configure方法,目的是為當(dāng)前這個(gè)SpringBoot啟動(dòng)類構(gòu)建新資源。我這里項(xiàng)目創(chuàng)建的時(shí)候生成了一個(gè)ServletInitializer,所以直接繼承ServletInitializer即可。如果你的項(xiàng)目沒有ServletInitializer這個(gè)類,則手動(dòng)繼承。

public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(SpringbootWarProjectApplication.class);
}
}
1.利用 maven 打包成 war:mvn clean install —>> xx.war
2.圖形操作按鈕打包。

3.打包位置:啟動(dòng)后生成的war包(target包下),復(fù)制到tomcat目錄下,記得設(shè)置tomcat的訪問端口號(hào)。
三、Tomcat啟動(dòng)war包
機(jī)器下載的tomcat 8.5xx 壓縮包,解壓安裝。(1) 編輯 tomcat 配置文件設(shè)置 訪問端口為 項(xiàng)目配置文件中配置的端口號(hào)(保持訪問端口不變)(2) 將打包好的 war 包復(fù)制到 tomcat/webapps 目錄下(3) 啟動(dòng) tomcat:bin/startup.xx(4) 啟動(dòng)成功,訪問接口–>> 404可能存在的問題: 項(xiàng)目在intellij idea里配置tomcat可以啟動(dòng)訪問, 打成war包丟到tomcat webapps下能啟動(dòng)卻訪問不了相關(guān)的接口, 這個(gè)問題是因?yàn)閕dea會(huì)默認(rèn)將項(xiàng)目以ROOT為目錄的文件,而丟到tomcat的webapps下面則是解壓成你項(xiàng)目名稱為目錄的文件,和ROOT是同級(jí)的可以有以下幾種解決方案一:將war包放在Tomcat的ROOT包下(或者將你的war名稱改成作為ROOT.war)

二:在tomcat的server.xml文件的Host標(biāo)簽內(nèi)配置
//<Context path="/" docBase="你項(xiàng)目的地址" reloadable="true"/> <Context path="/car" docBase="C:\Users\Admin\Desktop\apache-tomcat-8.5.54\webapps\ROOT\JavaWebTest.war" reloadable="true"></Context>

三、設(shè)置Tomcat默認(rèn)訪問路徑
tomcat默認(rèn)訪問路徑為 http://localhost:8080/項(xiàng)目名/頁面等路徑,有些客戶要求只輸入IP,自動(dòng)進(jìn)入項(xiàng)目登錄頁面,設(shè)置如下:修改tomcat/conf/server.xml在標(biāo)簽中加入:
<Context path="" docBase="E:\tomcat\webapps\項(xiàng)目文件夾名稱" debug="0" reloadable="true" />
path:war包解壓后的項(xiàng)目名稱,也就是訪問路徑(例:http://localhost:8080/car/)docBase:war包的路徑(需要把war包的后綴名加上,如上圖所示,避免報(bào)錯(cuò))reloadable:自動(dòng)加載保存上述修改后,雙擊\bin\startup.bat啟動(dòng)Tomcat即可三:前端訪問不到后端接口問題用tomcat發(fā)布時(shí),將前端請(qǐng)求的路徑加上你的項(xiàng)目名稱正常啟動(dòng)后,地址欄輸入localhost:8080會(huì)進(jìn)入tomcat路徑,ROOTweb.xml指定的index頁面。所以要在地址欄輸入localhost:8080/war包名稱/ 就會(huì)進(jìn)入tomcat路徑中自己的文件夾。(該文件夾就是自己war被解析后生成的)
2.啟動(dòng)中文亂碼問題:啟動(dòng)Tomcat后,產(chǎn)生的日志有亂碼的情況出現(xiàn),不要慌,這并不影響你項(xiàng)目的正常運(yùn)行。這是由于編碼不一致引起的,Tomcat啟動(dòng)后默認(rèn)編碼UTF-8,而Windows的默認(rèn)編碼是GBK。因此你想讓其不亂碼,只需配置conf\logging.properties的編碼格式即可



修改保存后,重新啟動(dòng)Tomcat,你會(huì)發(fā)現(xiàn)產(chǎn)生的日志是我們所能看懂的了
3.啟動(dòng)成功的頁面







