在通过SpringBoot整合SpringMVC并尝试返回jsp页面时,发现了一个问题。就是找不到相应的jsp页面,并报404错误(如下所示)。如果是直接返回字符串或者json数据则一切正常。
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Wed Nov 21 15:17:10 CST 2018
There was an unexpected error (type=Not Found, status=404).
No message available
因为我是直接通过运行Application类来启动程序的,即通过下面的方式,直接右键Application->Run 'Application’或者在idea右上角点三角按钮运行。这样直接运行当前启动类,Spring Boot无法找到当前页面资源,所以会出现404错误。
解决方法就是使用SpringBoot提供的spring-boot-maven插件命令来运行应用,在pom文件中添加以下插件
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
然后打开maven project窗口(可双击shift键 ,输入maven project搜索),然后找到Plugins-> spring-boot -> spring-boot:run,双击运行即可。这时访问浏览器就会出现我们想要的页面。之后的启动都要基于这种方式才可以。
注:
- 除了spring-boot-maven插件,也可以通过spring-boot命令行方式来启动应用。
- Spring Boot本身是不支持jsp的,具体如何整合可以看网上其他文章。也并不推荐将Spring Boot和jsp整合在一起,因为jsp性能较低。
11.23号编辑
另外发现了一个现象,当我把jsp页面直接放到web根目录(在idea里就是带小蓝点的文件夹,我这里是webapp文件夹)下,并浏览器直输入http://localhost:8080/xxx.jsp 直接访问时。如果此前是通过maven插件启动的,可以正常显示页面,但如果是通过鼠标右键运行或者点击三角形按键运行,则会显示jsp的源码。