前提概要:
- 最近使用springboot搭建聚合項目時遇到需要用jsp做視圖的場景,在web層的pom.xml中已經引入了jsp的相關依賴:
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
- 啓動的main方法所在的項目不是maven的頂級項目(我這裏是web層項目,jsp視圖所在的項目,頂級項目是XXX-parent)
問題場景
- 當該項目是通過eclipse搭建並啓動時,並不會出現標題中所講的問題;
- 然而,當該項目是通過idea開發工具搭建並啓動的情況下,在加載jsp頁面時會出現404狀態提示:
原因
簡單來說就是在idea裏啓動項目後,
如果SpringBoot在子模塊,直接main啓動子模塊會在C:\Users{用戶名}\AppData\Local\Temp這個目錄下,會生成tomcat目錄,但是如果翻看tomcat目錄,會發現在目錄裏沒有自動生成jsp的java和class文件.什麼都沒有;
而eclipse會自動生成jsp的java文件和class文件,這就造成了上述的問題場景。
解決措施
在Run/Debug Configurations面板中設置該程序的Working Directory選項爲程序目錄爲$MODULE_WORKING_DIR$
,如下:
此時再次訪問能跳轉jsp頁面url,會發現jsp頁面已經能成功渲染出來了,而且再次翻看C:\Users\{用戶名}\AppData\Local\Temp
中最新生成的tomcat目錄內容,能看到已經編譯出jsp的相關文件了: