前提概要:
- 最近使用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的相关文件了: