Spring、Spring MVC、SpringBoot的欢迎页配置

一、Spring MVC(纯 XML 配置 / 注解配置)

1. XML 配置(传统方式)

适用于基于 spring-mvc.xml 配置的项目,核心是配置 WelcomePageHandlerMappingmvc:view-controller

  • path="/" 表示访问项目根路径(如 http://localhost:8080/项目名/)时触发;

  • view-name="index" 会结合视图解析器的前缀 / 后缀,最终指向 /WEB-INF/pages/index.jsp

  • 如果页面放在 webapp 根目录(而非 WEB-INF),可直接配置 <mvc:view-controller path="/" view-name="/index.jsp"/>

XML 复制代码
<!-- 1. 基础配置:开启注解驱动、视图解析器(示例为JSP视图) -->
<mvc:annotation-driven />
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/" /> <!-- 页面前缀 -->
    <property name="suffix" value=".jsp" /> <!-- 页面后缀 -->
</bean>

<!-- 2. 配置欢迎页:访问根路径/时,跳转到index.jsp -->
<!-- 方式A:直接配置视图控制器(推荐) -->
<mvc:view-controller path="/" view-name="index"/>

<!-- 方式B:配置WelcomePageHandlerMapping(兼容老版本) -->
<!-- <bean class="org.springframework.web.servlet.handler.WelcomePageHandlerMapping">
    <property name="welcomePage" value="/WEB-INF/pages/index.jsp"/>
</bean> -->

2. 注解配置(无 XML)

适用于基于 @Configuration 的 Spring MVC 配置,通过编程式配置视图控制器

java 复制代码
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
@EnableWebMvc // 开启Spring MVC注解支持
public class WebMvcConfig implements WebMvcConfigurer {

    // 配置欢迎页
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        // 访问/时,跳转到index视图(结合视图解析器)
        registry.addViewController("/").setViewName("index");
        // 如果是静态页面(如webapp下的index.html),直接指定路径:
        // registry.addViewController("/").setViewName("/index.html");
    }

    // 配置视图解析器(可选,根据页面类型)
    /*
    @Bean
    public InternalResourceViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/pages/");
        resolver.setSuffix(".jsp");
        return resolver;
    }
    */
}

二、Spring 框架

纯 Spring 框架(非 Web 场景)没有 "欢迎页" 概念,因为 Spring 核心是 IoC/DI 容器,不处理 Web 请求;只有当 Spring 结合 Spring MVC 用于 Web 开发时,才需要按上面 Spring MVC 的方式配置欢迎页。

如果是 Spring 整合 Web 但未用 Spring MVC(极少场景),本质还是依赖 Servlet 规范配置欢迎页:在 web.xml 中配置

XML 复制代码
<!-- web.xml 中配置Servlet规范的欢迎页 -->
<welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

三、SpringBoot(最简化配置)

1. 静态资源欢迎页

SpringBoot 会自动扫描以下目录下的 index.html作为欢迎页

2. 自定义控制器指定欢迎页

如果需要动态逻辑(比如登录判断后跳转),可通过 @Controller 配置

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

@Controller
public class IndexController {

    // 访问根路径时跳转
    @GetMapping("/")
    public String index() {
        // 可添加自定义逻辑(如用户登录状态判断)
        // 返回的"index"会结合视图解析器(如Thymeleaf/JSP)找页面
        return "index"; 
        // 如果是静态页面,直接返回路径:return "/index.html";
    }
}

3. 配置文件指定(覆盖默认)

如果需要自定义欢迎页路径,可在 application.properties/application.yml 中配置

XML 复制代码
# application.properties
# 方式1:通过视图控制器指定
spring.mvc.view.controller.path=/
spring.mvc.view.controller.view-name=custom-index # 对应templates/custom-index.html(Thymeleaf)

# 方式2:如果是JSP,需先配置视图解析器
spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
spring.mvc.view.controller.path=/
spring.mvc.view.controller.view-name=index # 对应/WEB-INF/jsp/index.jsp

**注意:**SpringBoot 对 JSP 支持较弱

若用 JSP 做欢迎页,需要:

(1)添加 JSP 依赖

XML 复制代码
<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-jasper</artifactId>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
</dependency>

(2)JSP 文件需放在 src/main/webapp/WEB-INF/jsp/ 下(不能放在 resources 下)

(3)按方式 2/3 配置,而非方式 1(静态资源目录不识别 JSP)

相关推荐
NE_STOP13 小时前
springMVC-HTTP消息转换器与文件上传、下载、异常处理
spring
洋洋技术笔记15 小时前
Spring Boot配置管理最佳实践
spring boot
刀法如飞1 天前
一款Go语言Gin框架MVC脚手架,满足大部分场景
go·mvc·gin
用户8307196840821 天前
Spring Boot 项目中日期处理的最佳实践
java·spring boot
JavaGuide1 天前
Claude Opus 4.6 真的用不起了!我换成了国产 M2.5,实测真香!!
java·spring·ai·claude code
玹外之音1 天前
Spring AI MCP 实战:将你的服务升级为 AI 可调用的智能工具
spring·ai编程
来一斤小鲜肉1 天前
Spring AI入门:第一个AI应用跑起来
spring·ai编程
NE_STOP2 天前
springMVC-常见视图组件与RESTFul编程风格
spring
大道至简Edward2 天前
Spring Boot 2.7 + JDK 8 升级到 Spring Boot 3.x + JDK 17 完整指南
spring boot·后端