解决SpringBoot页面跳转无法访问静态资源的问题

本文介绍了在SpringBoot项目中遇到的页面跳转后无法访问css、js等静态资源的问题。通过使用th:href和th:src属性,解决了动态模板中引入静态资源的难题。同时,对于页面拆分和include的使用,文中详细阐述了如何利用th:include配合th:fragment正确引入模板部分。

初学SpringBoot,写项目的时候遇到了问题,原本的页面是这样的
在这里插入图片描述
但启动项目后是这样的
在这里插入图片描述
这是因为thymeleaf中引入静态资源及模板需要使用到 th:xxx 属性,否则无法在动态资源中访问静态资源。
记录一下解决方案。

访问css

需要用到 th:href 来引入css资源,格式为 th:href = “@{文件路径}”

<link rel="stylesheet" href="css/jquery-ui.min.css" th:href="@{/css/jquery-ui.min.css}" />

访问js

需要用到 th:src 来引入js资源,格式为 th:src = “@{文件路径}”

<script src="js/jquery.js" th:src="@{/js/jquery.js}"></script>

这里如果项目结构是这样:
在这里插入图片描述
那么写法上不需要像静态页面那样引入
在这里插入图片描述

include页面

当要把页面拆分为模板,使用include方式(html中为jquary.load方式)引入时,需要使用
th:include=“要引入的html文件名::html中th:fragment属性中的值”

<div id="pageTop" >
   <header class="am-topbar am-topbar-inverse" th:include="topbar::topbarNav"></header>
</div>
<div class="super-bar">
   <div id="pageLeft"  >
      <div class="left-sidebar" th:include="leftsider::leftSiderNav"></div>
   </div>
   <div id="pageMain"  >
      <div class="main-content" th:include="maincontent::mainContentNav"></div>
   </div>
</div>


如th:include=“topbar::topbarNav”,即引用了topbar.html页面的某个标签
在这里插入图片描述
注意!!!如上图,topbar.html使用了th:fragment标签引入到index.html页面后,它的class属性不会随着过去(但它的子元素的不会受到影响),需要在index所引用的位置添加相应的class

### Spring Boot 中实现页面跳转到 HTML 文件 在 Spring Boot 应用程序中,可以通过配置和控制器逻辑轻松实现向 HTML 页面跳转。这通常涉及到设置静态资源路径以及编写相应的控制方法。 对于简单的 HTML 文件访问,无需复杂的模板引擎即可完成操作。只需将这些静态文件放置于特定目录下,并通过 `@Controller` 或者 `@RestController` 类型的类中的方法指定返回视图名称即可[^1]。 当采用 Thymeleaf 这样的模板引擎时,则可以在 Controller 方法里直接返回字符串形式的目标页面名(不带扩展),框架会自动查找对应的 .html 文件并渲染它[^2]: ```java @Controller public class HtmlPageController { @GetMapping("/showHtml") public String showHtml(){ return "index"; // 对应的是 src/main/resources/templates/index.html } } ``` 如果希望直接映射 URL 到某个具体的 HTML 文件而不需要经过任何业务逻辑处理的话,还可以利用 `WebMvcConfigurer` 接口来自定义静态内容的位置与匹配规则。 另外,在某些情况下可能还需要考虑跨域资源共享(CORS)等问题,尤其是在前端应用部署位置不同于后端服务的情况下。此时可以借助 Spring Security 配置或者自定义过滤器等方式解决此类问题[^4]。 #### 使用默认静态资源路径 为了简化开发流程,默认情况下 Spring Boot 支持从以下几个路径加载静态资源: - `/static/` - `/public/` - `/resources/` - `/META-INF/resources/` 只要把要访问的 HTML 文件放入上述任一目录之下,就可以通过浏览器直接请求该文件地址来进行浏览了。 例如,假设有一个名为 `about.html` 的文件位于项目的 `src/main/resources/static/about.html` 路径下,那么可以直接通过 http://localhost:8080/about 来查看此页面的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值