springboot打成jar包无法访问jsp或者html,404错误

本文解决了一个常见问题:如何在SpringBoot项目中正确打包并部署前端页面资源,确保无论是IDE还是jar包方式运行都能正常访问。

0:虽然不推荐在springboot项目中包含前端页面,但根据实际情况,也是有可能将前端和后台写在同一个boot项目中的

1.在idea或者eclipse中运行正常运行访问,打成jar包运行报404

2.分析:ide中运行是正常的,打包之后访问是404,尝试把jar包解压开,发现里面真的没有页面文件,所以是打包进去的时候没有将页面打进去

3.原因:查看springboot对于资源映射的源码(ResourceProperties.class):"/**" 访问当前项目的任何资源,都去(静态资源的文件夹)找映射

"classpath:/META‐INF/resources/",

"classpath:/resources/",

"classpath:/static/",

"classpath:/public/"

"/":当前项目的根路径

4.解决:将资页面在打包的时候打入资源文件

<resources>

    <resource>

        <directory>/src/main/webapp</directory>

            <!--注意此次必须要放在此目录下才能被访问到-->

        <targetPath>META-INF/resources</targetPath>

        <includes>

            <include>**/**</include>

        </includes>

    </resource>

    <resource>

        <directory>/src/main/resources</directory>

        <includes>

            <include>**/**</include>

        </includes>

    </resource>

</resources>

[5].重新打包访问,完美解决

 

在运行使用嵌入式servlet容器(并打为可执行存档)的Spring Boot应用程序时,使用可执行jar时不支持JSP,所以无法将Spring Boot + JSP项目打JAR并正常运行JSP页面。若使用Jetty和Tomcat,以war打JSP支持应该可以工作,使用`java -jar`启动可执行war也能起作用,并且还能部署到任何标准容器;而Undertow不支持JSP,创建自定义`error.jsp`页面不会覆盖错误处理的默认视图,应改用自定义错误页面 [^2]。 如果要打Spring Boot项目为JAR,在打时对于maven中的`<scope>provided</scope>`,表示这个jar在编译测试等地方是需要的,但打不会一起打进去,可避免此类构件当部署到目标容器后产生依赖冲突。由于Spring Boot内置了Tomcat,可能需要重新配置一下,防止冲突 [^1]。 若要将Spring Boot项目打成war,可在IntelliJ IDEA中进行如下操作:修改启动类让其继承SpringBootServletInitializer实现方法configure,示例代码如下: ```java package com.qingbo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class SpringbootDeployApplication extends SpringBootServletInitializer { public static void main(String[] args) { SpringApplication.run(SpringbootDeployApplication.class, args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(SpringbootDeployApplication.class); } } ``` [^5]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值