SpringBoot集成Jsp jar包运行404
上节课我们使用SpringBoot集成了JSP,操作很简单,但此时真正的问题还并未出现。
会出现404的场景一般有两个,一个就是上节课中我们讲到的并没有引入如下两个依赖:
<!--引入jstl-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--内嵌的tomcat支持模块-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<scope>provided</scope>
</dependency>
此问题,在IDE中启时便会出现访问404的问题。
另外一种情况就是当我们将打成jar包进行java -jar运行时会发现访问页面时出现404。这是为什么呢?
解决方案一
如果打开jar包会发现,并没有我们所定义的jsp文件内容。

解决方案比较简单在maven打包插件中将指定的文件夹打入jar包即可。build中配置如下:
<build>
<resources>
<resource>
<directory>src/main/webapp</directory>
<!--这里必须是META-INF/resources-->
<targetPath>META-INF/resources</targetPath>
<includes>
<include>**/**</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/**</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 404解决方案之一 -->
<version>1.4.2.RELEASE</version>
</plugin>
</plugins>
</build>
上面打包的重点有两个:一个是资源文件打包到META-INF/resources目录下;另外一个就是spring-boot-maven-plugin插件的版本。
特别注意:此中解决方案只适用于spring-boot-maven-plugin的1.4.2.RELEASE的版本。也就是说,这种方案如果用其他版本的maven插件打包同样无法解决404的问题。
解决方案二
该解决方案比较直接,将pom文件中默认的package为jar包,改为war包。
只需将package指定如下即可:
<packaging>war</packaging>
然后同样执行jar -jar XXX.war即可启动,正常访问。
最后,话又说话来了,springboot对jsp的支持可以说非常不友好了。如果可能的话,尽量不要在springboot中使用jsp。
SpringBoot技术视频
CSDN学院:《Spring Boot 视频教程全家桶》


关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:http://choupangxia.cn/2020/01/09/springboot-jsp-jar-404/