最近有小伙伴反映在最近面試過程中,有面試官提到關于Tomcat服務器中目錄的作用及其部署項目的方式,有的小伙伴天天在使用Tomcat服務器,但是可能沒有注意這些細微的知識點,所以今天我就寫一份資料供大家學習,多多交流。
<Context docBase="…" path="…" />
docBase:項目存放的路徑
path:虛擬目錄,自己任意設置
<Context docBase="d:\work\testweb\web" path="/testweb" reloadable="true"/>
3.
<Context docBase="C:\work\testweb\web/>
Vue 作為數據驅動的前端框架,目前比較流行,因此我們公司最新的項目開發(fā)都選擇 “SpringBoot 后臺 + Vue 前端” 這個技術組合。如果一開始就選擇這個技術組合,完全沒問題。
但是,如果前端技術最初是傳統(tǒng)的 html ,加上 Vue 后,舊的 web.xml 配置的歡迎頁面為 ../index.html ,導致訪問首頁報錯,本文來分析下這個問題。
一個基于 SpringBoot 的 web 應用,工程最初選擇的前端技術是 html 和 jsp 所以有 webapp 目錄,且指定了 web.xml 文件:
webapps 目錄下有默認首頁 index.html
前端使用 Vue ,配置 vue.config.js 中 build 目錄為
module.exports = {
outputDir: './src/main/resources/static',
publicPath: './',
devServer: {
port: 8080, // 端口
},
};
maven 打包時,執(zhí)行前端打包命令,完成前后臺內容統(tǒng)一打包:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<id>exec-npm-install</id>
<phase>prepare-package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>npm</executable>
<arguments>
<argument>install</argument>
</arguments>
<workingDirectory>./</workingDirectory>
</configuration>
</execution>
<execution>
<id>exec-npm-run-build</id>
<phase>prepare-package</phase>
<goals>
<goal>exec</goal>
</goals>
<configuration>
<executable>npm</executable>
<arguments>
<argument>run</argument>
<argument>build</argument>
</arguments>
<workingDirectory>./</workingDirectory>
</configuration>
</execution>
</executions>
使用了 webapp 目錄,同時又有 vue 時,打包生成的 xxx.war 包部署到 Tomcat 后,直接訪問應用,由于 web.xml 中指定了路徑 ../index.html,后臺報錯:
catalina.out 異常:
22-Nov-2020 07:36:52.993 嚴重 [http-nio-8080-exec-5]
org.apache.coyote.http11.Http11Processor.service 錯誤的處理請求
java.lang.IllegalArgumentException:
資源路徑[/../index.html]已規(guī)范化為無效的[null]
第一種,static/index.html
刪掉 webapps 目錄下的 index.html 和 web.xml 這兩個文件后,重啟應用,能正常訪問到 static 目錄下的 index.html 頁面:
第二種,如果保留 webapp 下的 index.html 和 web.xml 文件后,SpringBoot 默認的 web.xml 配置文件失效。此時,修改自定義的 web.xml 修正路徑為 index.html 去掉相對路徑后,再次訪問,能正常:
第三種, 編輯 web.xml 配置文件路徑為 ./index.html 效果和 index.html 一樣。這就會走 SpringBoot 默認的靜態(tài)文件查找邏輯。
第一點,自定義的 web.xml 會覆蓋掉 SpringBoot 的默認配置。
第二點,web.xml 中指定了相對路徑 ./index.html 或 index.html ,相對查找順序是先 /static ,再是 / ,所以都能成功查到首頁。
第三點,web.xml 中只指定一個 welcome-file 文件 ../index.html 文件,訪問報錯,但是如果再隨便加一行配置,就能走默認查找到 static 的文件。
通過各種配置測試,發(fā)現沒有辦法通過自定義的 web.xml 修改 SpringBoot 的應用的首頁,這點也挺讓筆者捉摸不透的!
、JSP簡介
JSP:Java Server Pages。在傳統(tǒng)的HTML文件(*htm,*.html)中加入Java程序片段(Scriptlet)和JSP標記(tag),就構成了JSP網頁。
二、學習重點:
三、使用tomcat軟件在本地搭建服務器:
Tomcat是Apache組織的Jakarta項目中的一個重要子項目,是Sun公司推薦的運行Servlet和JSP的容器(引擎),其源代碼完全公開。有了這個服務器,就相當于在本地的計算機有了一個網站,然后我們可以通過瀏覽器來訪問這個網站。
下載Tomcat
下載之后,將壓縮包解壓:
Tomcat文件
注意目錄名不能有中文和空格。目錄介紹如下:
軟件運行之前要保證Java環(huán)境變量已經配置:
jdk環(huán)境變量
上圖中,變量名為JAVA_HOME,變量值為:JDK安裝的絕對路徑。
注:Catalina_Home環(huán)境變量:指定tomcat在啟動時啟動哪個tomcat,一般不推薦配置。
回到tomcat的bin目錄中, 雙擊startup.bat:
啟動Tomcat文件
之后彈出如下界面:
啟動成功
這個時候,本地的服務器就已經搭建起來了。如果想關閉服務器,可以直接關閉上面的窗口,或者在里面輸入Ctrl+C禁止服務。
首先查看自己電腦的ip地址,我的計算機的ip地址為:192.168.1.112。
在瀏覽器中輸入http://192.168.1.112:8080/(或者輸入http://localhost:8080/也是可以的)。如果彈出如下界面,進入本地服務器的首頁,表示tomcat安裝成功并且啟動起來了:
Toncat啟動表示成功
三、將Tomcat和eclipse相關聯:
1.打開eclipse for Java EE ,選擇菜單欄Windows-->preferences,彈出如下界面:
*請認真填寫需求信息,我們會在24小時內與您取得聯系。