SSM项目设置欢迎页
前期准备
-
pom.xml文件引入Servlet和SpringMVC基础依赖(保证项目能运行)
XML<!-- 仅需引入Servlet和SpringMVC基础依赖(保证项目能运行) --> <dependencies> <!--springmvc框架的核心依赖--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> </dependencies> -
web.xml文件添加前端控制器、监听器、过滤器(解决中文乱码的问题)
XML<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <!--前端控制器--> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--初始化参数,加载springmvc.xml配置文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <!--启动加载--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!--监听器--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> <!--过滤器,解决中文乱码的问题--> <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
方式一:使用web.xml配置欢迎页(最基础且推荐)
使用web.xml配置欢迎页是容器默认方式。
-
配置代码
在 src/main/webapp/WEB-INF/web.xml 下使用 <welcome-file-list> 标签配置欢迎页XML<!-- 配置欢迎页 --> <welcome-file-list> <welcome-file>index.html</welcome-file><!-- 先找这个 --> <welcome-file>index.jsp</welcome-file> <!-- 找不到再找这个 --> <welcome-file>index</welcome-file> <!-- 最后找这个 --> <!--<welcome-file>WEB-INF/static/index.jsp</welcome-file>--><!-- × 错误写法 --> </welcome-file-list>
-
访问位置

注意:- 访问的是 webapp 根目录下的 index.jsp 欢迎页,不是 static/ 或 **WEB-INF/**下的
- 不需要编写Controller层,不需要经过 SpringMVC 的 DispatcherServlet,Tomcat会直接解析。
-
适用场景
适合静态的 HTML 或 JSP,且直接放在 webapp (或 WebContent) 根目录下,没有放在WEB-INF里。 -
注意事项
- web.xml配置中有文件查找顺序
- DispatcherServlet影响 :如果配置了 <url-pattern>/</url-pattern>,可能会拦截欢迎页请求。需要配置静态资源处理或使用 mvc:default-servlet-handler/
- 安全考虑 :业务页面建议放在 /WEB-INF/
下,通过Controller访问;静态首页可以放在webapp根目录。
方式二:使用SpringMVC-mvc:view-controller配置欢迎页
-
配置代码
-
pom.xml同前期准备内容一样
-
web.xml内容同方式一中的内容一样,添加<welcome-file-list> 标签
-
在 src/main/webapp/WEB-INF/views/ 下使新建 index.jsp页面
html<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h2>SpringMVC-mvc:view-controller配置欢迎页</h2> <p>访问路径:WEB-INF/views/index.jsp</p> </body> </html> -
在 src/main/resources/springmvc.xml 配置文件中配置欢迎页
XML<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!-- 开启mvc注解驱动 --> <mvc:annotation-driven/> <!-- 配置欢迎页 --> <mvc:view-controller path="/" view-name="index"/> <!-- 配置视图解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--页面前缀--> <property name="prefix" value="/WEB-INF/views/"></property> <!--页面后缀--> <property name="suffix" value=".jsp"></property> </bean> </beans>运行会发现依然找的是webapp根目录下的index.jsp页面。
问题: 即使web.xml中没有配置<welcome-file-list>,Tomcat容器本身有默认的欢迎页查找机制 。当访问应用根路径时,Tomcat会按以下顺序自动查找:-
index.html
-
index.htm
-
index.jsp
这就是为什么你访问根路径时,还是看到了
/webapp/index.jsp,而不是/WEB-INF/views/index.jsp。 -
-
-
解决问题
-
**解决方法一:**删除webapp根目录下的index.jsp页面
-
解决方法二: 添加跳转页面代码
- 在 webapp根目录下的index.jsp页面中添加跳转
html<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %> <html> <head> <meta charset="UTF-8"> <title>Title</title> <script> // 自动跳转到Spring MVC处理的首页 window.location.href = "${pageContext.request.contextPath}/index"; </script> </head> <body> <h2><%= "Hello World!" %></h2> </body> </html>- 将 src/main/resources/springmvc.xml 配置文件中的
<mvc:view-controller path="/" view-name="index"/> 修改为(或添加) <mvc:view-controller path="/index" view-name="index"/> 就访问成功了
-
-
访问位置
访问 WEB-INF/views/index.jsp 页面

-
适用场景
页面在WEB-INF下,但不需要执行任何 Java 业务逻辑,只是单纯的跳转显示。 -
注意事项
由于Tomcat容器本身有默认的欢迎页查找机制,所有配置有些麻烦。
方式三:使用SpringMVC-Controller配置欢迎页(最常用)
- 配置代码
-
pom.xml同前期准备内容一样
-
web.xml内容同方式一中的内容一样,添加<welcome-file-list> 标签
-
在 webapp根目录下的index.jsp页面中添加跳转,与方式二中解决问题方法二的代码一样
-
在 src/main/webapp/WEB-INF/views/ 下使新建 index.jsp页面
html<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h2>SpringMVC-Controller配置欢迎页</h2> <p>访问路径:WEB-INF/views/index.jsp</p> </body> </html> -
在 src/main/resources/springmvc.xml 配置文件中配置欢迎页内容在方式二的基础上添加扫描包代码
XML<!-- 配置spring创建容器时要扫描的包 --> <context:component-scan base-package="com.qcby"></context:component-scan> -
在controller层
javapackage com.qcby.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class WelcomeController { @RequestMapping("/") public String index(){ return "index"; } }
-
- 访问位置
访问 WEB-INF/views/index.jsp 页面

- 适用场景
- 页面放在 WEB-INF 目录下(最安全)
- 需要查询数据、处理业务逻辑或使用模板引擎
- 通过SpringMVC拦截/请求并转发到指定的视图
总结
| 方式 | 访问路径 | 配置位置 | 优点 | 缺点 |
|---|---|---|---|---|
| 方式一:web.xml欢迎页 | webapp/index.jsp |
webapp根目录 | 简单,快速 | 无法使用Spring MVC功能 |
| 方式二:mvc:view-controller | WEB-INF/views/index.jsp |
WEB-INF目录 | 安全,可通过Controller处理 | 配置复杂,需要正确Spring MVC配置 |
| 方式三:Controller | WEB-INF/views/index.jsp |
Controller转发 | 最灵活,可添加业务逻辑 | 需要写代码 |