spring boot项目欢迎页设置方式

方式一:静态资源目录放置 index.html(最简推荐,纯静态页面)

这是 Spring Boot 默认支持、无需额外配置的方式,核心利用框架内置的静态资源映射规则,直接放置静态页面即可生效。

配置步骤

将命名为 index.html 的静态页面,放在 Spring Boot 规定的 4 个静态资源目录 中任意一个即可(优先级:/META-INF/resources/ > /resources/ > /static/ > /public/),推荐使用最常用的 src/main/resources/static/ 目录:

plaintext

复制代码
src/
└── main/
    └── resources/
        └── static/  # 推荐目录
            └── index.html  # 欢迎页,命名必须是index.html
访问方式

启动项目后,直接访问项目根路径 http://localhost:8080/,框架会自动加载该 index.html

适用场景

纯静态页面(仅 HTML/CSS/JS),无需动态数据渲染,开发最快、零配置。

方式二:模板引擎目录放置 index.xxx(动态页面,如 Thymeleaf/Freemarker)

若欢迎页需要 动态渲染数据(如从数据库获取内容、展示动态参数),需使用模板引擎(Spring Boot 主流推荐 Thymeleaf),核心是将模板文件放在框架约定的模板目录中。

核心前提

先在 pom.xml(Maven)或 build.gradle(Gradle)中引入模板引擎依赖(以 Thymeleaf 为例):

xml

复制代码
<!-- Maven 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
配置步骤

将模板文件(Thymeleaf 为 index.html,Freemarker 为 index.ftl)放在 Spring Boot 模板引擎 默认目录 src/main/resources/templates/(该目录是框架约定,无需额外配置路径):

plaintext

复制代码
src/
└── main/
    └── resources/
        └── templates/  # 模板引擎默认目录
            └── index.html  # Thymeleaf动态欢迎页
关键说明
  1. 模板文件可使用对应引擎的语法(如 Thymeleaf 的 th:text 渲染动态数据);
  2. 无需手动编写控制器,Spring Boot 会自动映射根路径 / 到该模板文件;
  3. 若同时存在「静态目录的 index.html」和「模板目录的 index.html」,模板引擎的页面优先级更高(框架会优先加载动态页面)。
适用场景

需要动态数据渲染的欢迎页,如展示系统版本、当前时间、用户信息等动态内容。

方式三:@Controller 编写自定义路由(编程式配置,灵活度最高)

通过手动编写控制器方法,映射根路径 / 到指定页面,支持 自定义跳转逻辑、动态传参、指定任意页面名称 / 路径,是灵活度最高的方式,完全摆脱框架的命名 / 目录约定。

实现步骤
  1. 创建 Spring MVC 控制器(标注 @Controller不可用 @RestController,否则会直接返回字符串而非页面);
  2. 编写方法映射根路径 /,通过 return 指定页面路径(静态页面 / 模板页面均可)。
代码示例
场景 1:跳转到模板引擎页面(推荐,支持动态传参)

java

运行

复制代码
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class IndexController {

    // 映射根路径 /,访问 http://localhost:8080/ 时触发
    @GetMapping("/")
    public String index(Model model) {
        // 自定义逻辑:向页面传递动态数据
        model.addAttribute("title", "Spring Boot 欢迎页");
        model.addAttribute("content", "通过@Controller实现,灵活度最高");
        // 返回模板引擎目录下的页面路径(无需写后缀,框架自动识别)
        // 对应 src/main/resources/templates/index.html
        return "index";
    }
}
场景 2:跳转到静态资源目录的页面

java

运行

复制代码
@Controller
public class IndexController {
    @GetMapping("/")
    public String index() {
        // 跳转到 static 目录下的 static-index.html
        // 前缀 classpath:/static/ 是框架默认,后缀可省略
        return "static-index";
    }
}
核心优势
  1. 突破框架约定:页面名称可自定义(无需是 index)、路径可自由指定;
  2. 支持复杂逻辑:跳转前可执行数据库查询、参数校验、权限判断等;
  3. 灵活传参:通过 Model/ModelAndView 向页面传递任意动态数据;
  4. 可扩展:可结合拦截器、过滤器实现个性化的欢迎页逻辑(如根据用户角色展示不同欢迎页)。
适用场景
  • 欢迎页需要复杂业务逻辑处理;
  • 不想遵循框架的目录 / 命名约定;
  • 需根据不同条件展示不同欢迎页(如多端适配、权限控制)。

三种方式核心对比 & 优先级

实现方式 核心特点 适用场景 配置复杂度
静态目录 index.html 零配置、纯静态、速度最快 无动态数据的简单欢迎页 极低
模板引擎目录 index.xxx 少量配置(仅引依赖)、支持动态渲染 需基础动态数据的欢迎页
@Controller 自定义路由 完全自定义、逻辑灵活、支持复杂场景 需业务逻辑 / 权限控制 / 个性化的欢迎页

优先级规则(同一路径下多个欢迎页共存时)

@Controller 映射的 / 路径 > 模板引擎目录的 index.xxx > 静态资源目录的 index.html

关键注意事项

  1. 若使用方式三,控制器必须标注 @Controller@RestController 会将返回值解析为 JSON / 字符串,无法跳转到页面;
  2. 静态资源目录的优先级是框架内置的,无需手动配置,若需修改可通过 spring.web.resources.static-locations 自定义;
  3. 模板引擎页面的目录(templates/)是约定路径,修改需配置对应引擎的属性(如 Thymeleaf 的 spring.thymeleaf.prefix);
  4. Spring Boot 2.4+ 移除了 spring.mvc.view.prefix/suffix 的默认配置,若使用 JSP 作为模板,需手动配置该属性(不推荐在 Spring Boot 中使用 JSP)。
相关推荐
勇往直前plus31 分钟前
从文件到屏幕:Python/java 字符编码、解码、文本处理的底层逻辑解析
java·开发语言·python
Drifter_yh7 小时前
【黑马点评】Redisson 分布式锁核心原理剖析
java·数据库·redis·分布式·spring·缓存
莫寒清8 小时前
Spring MVC:@RequestParam 注解详解
java·spring·mvc
没有医保李先生9 小时前
字节对齐的总结
java·开发语言
甲枫叶10 小时前
【claude】Claude Code正式引入Git Worktree原生支持:Agent全面实现并行独立工作
java·人工智能·git·python·ai编程
六件套是我10 小时前
无法访问org.springframeword.beans.factory.annotation.Value
java·开发语言·spring boot
LYS_061811 小时前
C++学习(5)(函数 指针 引用)
java·c++·算法
forestsea11 小时前
Spring Cloud Alibaba 2025.1.0.0 正式发布:拥抱 Spring Boot 4.0 与 Java 21+ 的新时代
java·spring boot·后端
IT枫斗者11 小时前
IntelliJ IDEA 2025.3史诗级更新:统一发行版+Spring Boot 4支持,这更新太香了!
java·开发语言·前端·javascript·spring boot·后端·intellij-idea