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)

相关推荐
Dragon Wu6 分钟前
Spring Security Oauth2.1 授权码模式实现前后端分离的方案
java·spring boot·后端·spring cloud·springboot·springcloud
跳动的梦想家h12 分钟前
环境配置 + AI 提效双管齐下
java·vue.js·spring
独断万古他化1 小时前
【Spring 原理】Bean 的作用域与生命周期
java·后端·spring
一 乐2 小时前
校园二手交易|基于springboot + vue校园二手交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
80530单词突击赢2 小时前
SpringBoot整合SpringMVC全解析
java·spring boot·后端
vx1_Biye_Design2 小时前
基于Spring Boot+Vue的学生管理系统设计与实现-计算机毕业设计源码46223
java·vue.js·spring boot·spring·eclipse·tomcat·maven
vx_Biye_Design2 小时前
基于Spring Boot+vue的湖北旅游景点门票预约平台的设计--毕设附源码29593
java·vue.js·spring boot·spring cloud·servlet·eclipse·课程设计
qq5_8115175152 小时前
web城乡居民基本医疗信息管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
hdsoft_huge2 小时前
1panel面板中部署SpringBoot和Vue前后端分离系统 【图文教程】
vue.js·spring boot·后端
Hx_Ma162 小时前
SpringBoot数据源自动管理
java·spring boot·spring