SSM设置欢迎页的三种方式总结
作者:好好研究
SSM项目设置欢迎页
前期准备
pom.xml文件引入Servlet和SpringMVC基础依赖(保证项目能运行)
<!-- 仅需引入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 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> 标签配置欢迎页
<!-- 配置欢迎页 -->
<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>
访问位置

注意:
1. 访问的是 webapp 根目录下的 index.jsp 欢迎页,不是 static/ 或 WEB-INF/ 下的
2. 不需要编写Controller层,不需要经过 SpringMVC 的 DispatcherServlet,Tomcat会直接解析。
- 适用场景
适合静态的 HTML 或 JSP,且直接放在webapp(或WebContent) 根目录下,没有放在WEB-INF里。 - 注意事项
1. web.xml配置中有文件查找顺序
2. DispatcherServlet影响:如果配置了<url-pattern>/</url-pattern>,可能会拦截欢迎页请求。需要配置静态资源处理或使用<mvc:default-servlet-handler/>
3. 安全考虑:业务页面建议放在/WEB-INF/下,通过Controller访问;静态首页可以放在webapp根目录。
方式二:使用SpringMVC-mvc:view-controller配置欢迎页
- 配置代码
- pom.xml同前期准备内容一样
- web.xml内容同方式一中的内容一样,添加<welcome-file-list> 标签
- 在 src/main/webapp/WEB-INF/views/ 下使新建 index.jsp页面
<%@ 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 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会按以下顺序自动查找:
1. index.html
2. index.htm
3. index.jsp
这就是为什么你访问根路径时,还是看到了/webapp/index.jsp,而不是/WEB-INF/views/index.jsp。
- 解决问题
- 解决方法一:删除webapp根目录下的index.jsp页面
- 解决方法二:添加跳转页面代码
1. 在 webapp根目录下的index.jsp页面中添加跳转
<%@ 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>
2. 将 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页面
<%@ 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 配置文件中配置欢迎页内容在方式二的基础上添加扫描包代码
<!-- 配置spring创建容器时要扫描的包 --> <context:component-scan base-package="com.qcby"></context:component-scan>
在controller层
package 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 页面

- 适用场景
1. 页面放在 WEB-INF 目录下(最安全)
2. 需要查询数据、处理业务逻辑或使用模板引擎
3. 通过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转发 | 最灵活,可添加业务逻辑 | 需要写代码 |
以上就是SSM设置欢迎页的三种方式总结的详细内容,更多关于SSM设置欢迎页方式的资料请关注脚本之家其它相关文章!
