在传统的 SSM (Spring + Spring MVC + MyBatis) 项目中,配置"欢迎页"(即访问项目根路径 http://localhost:8080/项目名/ 时显示的页面)主要有以下 3 种常用方式。
根据你的页面存放位置(在 webapp 根目录还是 WEB-INF 下),选择最适合的一种:
方式 1:使用 web.xml 配置 (最基础)
适用场景 :你的欢迎页是静态 HTML 或普通的 JSP,且直接放在 webapp (或 WebContent) 根目录下 ,没有放在 WEB-INF 里。
这是 Java Web 容器(如 Tomcat)的标准规范,不需要经过 Spring MVC 的 DispatcherServlet。
配置位置 :src/main/webapp/WEB-INF/web.xml
XML
<web-app>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
注意 :这种方式无法 直接访问
WEB-INF目录下的文件,因为WEB-INF对浏览器是隐藏的。
方式 2:使用 Controller 控制器 (最常用/推荐)
适用场景:
-
你的页面放在
WEB-INF目录下(为了安全)。 -
进入欢迎页前需要查询数据库或处理业务逻辑。
-
使用 Thymeleaf 或其他模板引擎。
通过 Spring MVC 拦截 / 请求并转发到指定视图。
Java 代码:
java
package com.qcby.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class WelcomeController {
@RequestMapping("/")
public String showWelcomePage() {
// 这里的 "index" 对应你的视图解析器配置
// 如果是 JSP,可能对应 /WEB-INF/jsp/index.jsp
// 如果是 Thymeleaf,可能对应 classpath:/templates/index.html
return "index";
}
}
方式 3:使用 Spring MVC 配置文件 (最简洁)
适用场景 :页面在 WEB-INF 下,但不需要执行任何 Java 业务逻辑,只是单纯的跳转显示。
你可以在 Spring MVC 的配置文件(通常是 spring-mvc.xml)中直接定义一个映射,省去写 Controller 类的麻烦。
XML 配置 (spring-mvc.xml):
XML
<mvc:view-controller path="/" view-name="index"/>
<mvc:annotation-driven />
💡 总结:我该选哪个?
| 你的页面位置 | 是否需要查数据? | 推荐方式 |
|---|---|---|
webapp/ 根目录 (如 index.html) |
否 | 方式 1 (web.xml) |
WEB-INF/ 目录下 |
是 (需要数据) | 方式 2 (Controller) |
WEB-INF/ 目录下 |
否 (直接显示) | 方式 3 (view-controller) 或 方式 2 |
特别提醒:
如果同时配置了 web.xml 和 @RequestMapping("/"),通常 Controller 的优先级更高 (前提是请求被 DispatcherServlet 拦截了,通常拦截配置为 /)。