springboot项目打成jar包后无法显示jsp的解决方案
超级头疼
一直显示
去网上找了很多解决办法,但不是关键问题,最后自己误打误撞,总算解决了,汇总分享一下
1.更换正确的打包插件
这里关键的就是这个版本号,一定要是这个版本,很多博主说是因为springboot官方推荐的前端模板是themeleaf,能与jsp兼容的打包插件只有这个版本。
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.4.2.RELEASE</version>
</plugin>
2.添加对jsp的依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>compile</scope>
</dependency>
3.手动指定让jsp被编译到指定的文件夹
我就不多废话了,想要打jar包的同学应该知道这是什么,这还不是我要将的重点,但是我的错误跟这也有很大关系。
<resource>
<directory>src/main/webapp</directory>
<targetPath>META-INF/resources</targetPath><!--最后被编译到的文件夹,一定要在META-INF/resources下面-->
<includes>
<include>*.*</include>
</includes>
</resource>
4.在核心配置文件中配置视图解析器(最关键)
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp
前缀根据 “/” 就是我们第三步中的
<targetPath>META-INF/resources</targetPath>
如果你的 META/resources 下面还有子文件夹,核心配置文件的 “/” 的后面一定要加上该文件夹,否则jar包被运行时会找不到jsp,但是在idea中运行却能找到。
比如你的tartgetpath是这样
<targetPath>META-INF/resources/view</targetPath>
视图解析器就必须是
spring.mvc.view.prefix=/view/ #最后的斜杠一定不能少
spring.mvc.view.suffix=.jsp
我就是这里没有保持一致出了问题