SpringBoot-使用Thymeleaf提取公共页面

本文介绍如何在SpringBoot项目中使用Thymeleaf提取并复用公共页面,简化前端开发工作,包括配置依赖、引入命名空间及使用语法。

SpringBoot-使用Thymeleaf提取公共页面

在我们进行项目练习时,会发现有的前端静态页面样式都是差不多的形式,但是代码量却是出奇的多,那此时我们就可以使用Thymeleaf的基础语法来,提取出公共页面,来时实现代码复用,以及简化

1. 在SpringBoot项目中导入Thymeleaf依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2. 静态页面中引入命名空间

xmlns:th="http://www.thymeleaf.org"

3. 抽取页面公共部分

语法: th:fragment="对应的id名"
作用:抽取页面公共部分,作为一个组件,通过id进行标识


我们可以在一个指定的位置

  • 如我在templates目录下创建了一个commons目录,用来存放我分抽取的公布部分页面,如图所示
    在这里插入图片描述

  • 我将所有的公共部分都放在commons.html页面中

在这里插入图片描述

4. 使用我们抽取的公共部分

语法: th:replace="~{公共部分所在的页面:所需公共部分标识的id}"
语法: th:insert="~{公共部分所在的页面:所需公共部分标识的id}"

如我的公共页面存放在了:templates/commons/commons.html,在我们需要的地方使用上述语法之一即可,在我的dashboard.html静态页面中插入我们提取的公共部分
在这里插入图片描述 然后,我们就可以运行项目来查看效果

<think>首先,用户的问题是关于Spring Boot 3设置默认首页的方法,以及是否支持通过WebMvcConfigurer或@Controller注解配置后端公共路径。用户提供了几个引用,我需要参考这些引用,但也要基于我的知识回答。 用户引用: - 引用[1]:展示了RouterController类,使用@RequestMapping设置路径,如"/"和"/index"指向index页面- 引用[2]:讨论@ControllerAdvice和异常处理。 - 引用[3]:另一个Controller示例,显示如何返回视图。 - 引用[4]:关于@Transactional注解的事务配置。 用户的问题焦点是设置默认首页和公共路径配置。所以,我需要提取相关信息。 关键点: - 设置默认首页:在Spring Boot中,通常可以通过配置视图控制器或使用Controller来处理根路径。 - 后端公共路径:可能指的是基础路径(base path),比如所有Controller的公共前缀。 回答结构: 1. **介绍设置默认首页的方法**:基于Spring Boot 3。 2. **讨论是否支持设置后端公共路径**:解释如何配置公共路径。 3. **参考用户提供的引用**:自然地融入引用,比如引用[1]展示了如何设置根路径。 4. **生成相关问题**:在末尾添加相关问题,如系统指令要求。 系统指令: - 使用中文回答。 - 数学表达式用$...$,但这里可能不涉及数学。 - 独立公式用$$...$$,但可能不需要。 - 生成相关问题。 - 回答中引用的段落末尾添加引用标识,如[^1]。 回答内容: - **设置默认首页的方法**: - 方法1:使用@Controller和@RequestMapping,如引用[1]所示,设置"/"或"/index"返回特定视图。 - 方法2:通过WebMvcConfigurer配置视图控制器,避免编写额外的Controller。 - 方法3:使用Thymeleaf或模板引擎,直接在templates目录下放置index.htmlSpring Boot会自动将其作为首页。 -Spring Boot 3中,这些方法仍然适用。 - **是否支持设置后端公共路径**: - "后端公共路径"可能指的是所有Controller的统一前缀,比如所有API以"/api"开头。 -Spring Boot中,可以通过在application.properties中设置`server.servlet.context-path`来配置上下文路径,但这影响整个应用。 - 对于Controller级别的公共路径,可以使用@RequestMapping的value属性设置基础路径,或者使用@RestControllerAdvice结合路径,但更常见的是在单个Controller上设置。 - WebMvcConfigurer可以用于添加拦截器或视图控制器,但不直接设置Controller公共路径;通常需要在每个Controller上定义。 - 引用[1]展示了@RequestMapping可以设置路径如"/level1/{id}",这支持路径变量,但不直接显示公共路径设置。然而,它表明可以通过Controller组织路径。 -Spring Boot 3中,支持使用@Controller或@RestController,并通过@RequestMapping设置基础路径。 参考引用: - 引用[1]:展示设置根路径和子路径,可以用来设置首页[^1]。 - 引用[2]和[3]:相关但不太直接,可以提到异常处理和视图渲染。 - 引用[4]:事务配置,不相关,可以忽略。 生成相关问题: - 如系统指令示例,添加3个相关问题。 - 例如: 1. 如何在Spring Boot中配置全局异常处理? 2. Spring Boot中如何设置静态资源路径? 3. 使用Thymeleaf模板引擎时如何自定义视图解析? 确保回答真实可靠:基于Spring Boot文档和常见实践。 最终回答结构: 1. 解释设置默认首页的方法。 2. 讨论公共路径配置。 3. 自然地添加引用。 4. 添加相关问题。</think>### Spring Boot 3 设置默认首页及公共路径配置指南 在 Spring Boot 3 项目中,设置默认首页和配置后端公共路径是常见的需求。以下基于您的引用和 Spring Boot 最佳实践,逐步解释实现方法。Spring Boot 3 完全兼容 Spring Framework 6,支持通过 `@Controller`、`WebMvcConfigurer` 等方式灵活配置。 #### 1. **设置默认首页的方法** Spring Boot 3 支持多种方式将特定页面(如 `index.html` 或自定义视图)设置为默认首页。以下是三种常用方法: - **方法1:通过 `@Controller` 注解配置** 在 Controller 类中定义根路径 (`"/"` 或 `"/index"`) 的映射,直接返回视图名称。这种方式简单直接,适合小型项目。 参考您的引用[1] 中的示例,`RouterController` 通过 `@RequestMapping` 设置根路径指向 `index` 视图[^1]: ```java @Controller public class RouterController { @RequestMapping({"/", "/index"}) public String index() { return "index"; // 返回 templates/index.html 或其他视图 } } ``` - **优点**:代码直观,易于扩展其他路径。 - **注意**:视图文件需放在 `src/main/resources/templates/` 下(如使用 Thymeleaf)。 - **方法2:通过 `WebMvcConfigurer` 配置** 实现 `WebMvcConfigurer` 接口,重写 `addViewControllers` 方法,添加根路径的视图控制器。这避免了编写额外 Controller,适合集中管理路径映射。 示例代码: ```java @Configuration public class MvcConfig implements WebMvcConfigurer { @Override public void addViewControllers(ViewControllerRegistry registry) { registry.addViewController("/").setViewName("index"); // 设置根路径指向 index 视图 registry.addViewController("/index").setViewName("index"); } } ``` - **优点**:配置简洁,不污染业务逻辑层。 - **适用场景**:当不需要复杂逻辑时,优先使用此方法。 - **方法3:静态资源默认首页** 如果首页是静态 HTML 文件(如 `index.html`),可直接将其放在 `src/main/resources/static/` 目录下。Spring Boot 会自动将其作为根路径的默认页面- **优点**:零配置,适合纯前端项目。 - **限制**:不支持动态内容渲染。 **总结**:所有方法在 Spring Boot 3 中均有效。推荐使用 `WebMvcConfigurer` 配置视图控制器,因为它更模块化;若需动态处理,则结合 `@Controller`。 #### 2. **是否支持设置后端公共路径** 是的,Spring Boot 3 支持通过 `WebMvcConfigurer` 或 `@Controller` 配置后端公共路径(即所有 Controller 的统一前缀)。这有助于组织 API 结构,例如所有路径以 `/api` 开头。 - **通过 `@Controller` 设置公共路径** 在类级别的 `@RequestMapping` 中定义基础路径,所有方法级路径自动继承此前缀。参考您的引用[1],`RouterController` 使用路径变量实现公用路径(如 `/level1/{id}`)[^1],但更常见的做法是直接设置类级路径: ```java @Controller @RequestMapping("/api") // 公共路径前缀 public class ApiController { @GetMapping("/users") public String getUsers() { ... } // 实际路径为 /api/users } ``` - **支持情况**:完全支持,是标准实践。 - **优点**:灵活,可针对不同 Controller 设置不同前缀。 - **通过 `WebMvcConfigurer` 设置全局公共路径** `WebMvcConfigurer` 本身不直接设置路径前缀,但可结合以下方式: - **上下文路径(Context Path)**:在 `application.properties` 中设置 `server.servlet.context-path=/myapp`,使所有路径以 `/myapp` 开头(如 `/myapp/index`)。 - **路径匹配配置**:重写 `configurePathMatch` 方法,添加自定义路径处理器(如 `PathMatchConfigurer`),但较少用于公共路径。 示例: ```properties # application.properties server.servlet.context-path=/backend # 全局公共路径 ``` - **是否推荐?** - **支持**:Spring Boot 3 通过上述机制完全支持公共路径配置。 - **最佳实践**: - 使用类级 `@RequestMapping` 设置 Controller 专属公共路径(如引用[1] 中的 `/level1/{id}` 模式)[^1]。 - 全局公共路径优先用 `server.servlet.context-path`,避免侵入代码。 - 异常处理可参考您的引用[2],通过 `@ControllerAdvice` 统一管理路径相关错误[^2]。 #### 额外提示 - **视图渲染**:如您的引用[3] 所示,结合 `Model` 对象传递动态数据到首页[^3]。 - **事务安全**:公共路径配置不涉及事务,但引用[4] 提醒了事务回滚机制,在业务逻辑中可参考[^4]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值