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.com/2020/01/09/springboot-jsp-jar-404/