SpringBoot+html加载不出来静态资源的一种可能原因,附上解决办法

关于Springboot 加载html静态资源失败的可能原因

今天在写代码的时候发现运行我的网页之后怎么也加载不出图片,废话不多说,上图:

加载图片失败的运行页面
运行失败的结果图

静态资源的存放目录
在这里插入图片描述

html代码引用的路径
在这里插入图片描述

网络上查阅了很多资料,有包括设置虚拟路径的,也有设置application.yml默认路径的,都不起作用。我把目光转向了我写过的过滤器。

把不需要过滤路由请求数组中添加一个能够访问我图片的路由,这样在过滤器无需过滤就能够访问到我的静态资源
在这里插入图片描述

抱着试一试的心情运行,没想到成功了!!!!
在这里插入图片描述

以上教训告诉我们,写了过滤器或拦截器要特别注意把你不需要过滤的资源进行不用过滤或拦截的声明,否则会出一些非常浪费时间但又不那么大的错误

### Spring Boot启动后返回404问题的原因及解决方案 #### 一、常见原因分析 1. **控制器未正确定义响应体** 如果在Spring Boot应用中定义了一个`@Controller`类型的类,但其方法并未标注`@ResponseBody`注解,则可能导致请求无法正确映射并返回数据[^4]。 2. **视图解析器配置匹配** 当使用JSP或其他模板引擎时,如果视图解析器未能正确加载指定路径下的页面文件(如`WEB-INF/views/xxx.jsp`),则可能引发404错误[^5]。 3. **资源路径设置当** 静态资源HTML、CSS、JavaScript等)通常应放置于`src/main/resources/static`目录下。若这些资源被误放至其他位置或访问路径书写有误,也会触发404错误[^1]。 4. **插件缺失或依赖冲突** 开发过程中可能出现某些必要插件(如`sprint-boot-maven-plugin`)丢失的情况,这会影响项目的正常构建与运行环境搭建[^3]。 5. **全局异常处理器缺乏定制化逻辑** 缺少针对特定HTTP状态码(如404)的有效处理机制,使得默认行为直接向客户端反馈“Not Found”消息。 #### 二、具体解决措施 以下是几种有效的应对策略: ##### 方法一:调整控制层代码结构 对于RESTful API接口开发场景而言,在编写业务逻辑的同时需注意添加必要的JSON序列化支持标记。例如下面这段示范程序展示了如何通过组合运用`@RestController`替代传统意义上的`@Controller`来简化操作流程: ```java @RestController @RequestMapping("/api/v1/example") public class ExampleController { @GetMapping("/{id}") public ResponseEntity<String> getExample(@PathVariable String id){ Optional<String> result = ... ;//模拟查询数据库获取对应记录 return result.map(ResponseEntity::ok).orElseGet(() -> new ResponseEntity<>("Resource with ID:" + id +" does not exist.", HttpStatus.NOT_FOUND)); } } ``` ##### 方法二:优化前端展示框架集成方式 假如项目采用了Thymeleaf作为渲染工具的话,则可以按照官方文档指导完成基础配置工作之后再进一步扩展功能特性;而对于坚持沿用经典Servlet技术栈的开发者来说,则务必确认Tomcat容器已成功部署目标war包并且能够识别到预期中的html片段所在的具体物理地址。 ##### 方法三:修正pom.xml文件内容 确保Maven工程描述符里包含了最新版本号对应的springboot-starter-parent节点以及完整的plugin列表项声明信息。像这样一段典型的XML片断就很好地诠释了上述要点: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.0</version> <relativePath/> <!-- lookup parent from repository --> </parent> ... <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> ``` ##### 方法四:增强自定义ErrorPageHandler能力 借助Spring Webflux提供的强大API集锦,我们可以轻松实现一套高度灵活可配置化的错误捕捉体系架构设计思路。比如创建一个新的Java Bean组件专门负责拦截所有未经捕获过的Exception实例对象并将它们转化为统一格式的表现形式供外部消费端理解消化吸收利用起来更加方便快捷高效省心省力省钱省时间等等好处多多数过来啦朋友们快来试试看吧! 最后附上一份简洁明快的小例子帮助大家快速入门实践体验效果立竿见影哦亲测有效绝对靠谱放心大胆去尝试绝对会后悔哟! ```java @Bean public ErrorWebExceptionHandler errorWebExceptionHandler(){ DefaultErrorAttributes attrs=new DefaultErrorAttributes(); SimpleMappingExceptionResolver resolver= new SimpleMappingExceptionResolver (); Properties mappings=new Properties(); mappings.put("java.lang.Exception","error"); mappings.put("java.lang.RuntimeException","error runtime"); resolver.setExceptionMappings(mappings); resolver.setDefaultErrorView("defaultError"); return new CustomErrorWebExceptionHandler(attrs,resolver,new ObjectMapper(),this.applicationContext); } ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值