总结SSM设置欢迎页的方式

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配置欢迎页是容器默认方式。

  1. 配置代码
    在 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>
  2. 访问位置

    注意:

    1. 访问的是 webapp 根目录下的 index.jsp 欢迎页,不是 static/ 或 **WEB-INF/**下的
    2. 不需要编写Controller层,不需要经过 SpringMVC 的 DispatcherServlet,Tomcat会直接解析。
  3. 适用场景
    适合静态的 HTML 或 JSP,且直接放在 webapp (或 WebContent) 根目录下,没有放在 WEB-INF 里。

  4. 注意事项

    1. web.xml配置中有文件查找顺序
    2. DispatcherServlet影响 :如果配置了 <url-pattern>/</url-pattern>,可能会拦截欢迎页请求。需要配置静态资源处理或使用 mvc:default-servlet-handler/
    3. 安全考虑 :业务页面建议放在 /WEB-INF/ 下,通过Controller访问;静态首页可以放在webapp根目录。

方式二:使用SpringMVC-mvc:view-controller配置欢迎页

  1. 配置代码

    1. pom.xml同前期准备内容一样

    2. web.xml内容同方式一中的内容一样,添加<welcome-file-list> 标签

    3. 在 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>
    4. 在 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会按以下顺序自动查找:

      1. index.html

      2. index.htm

      3. index.jsp

      这就是为什么你访问根路径时,还是看到了/webapp/index.jsp,而不是/WEB-INF/views/index.jsp。

  2. 解决问题

    1. **解决方法一:**删除webapp根目录下的index.jsp页面

    2. 解决方法二: 添加跳转页面代码

      1. 在 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>
      1. 将 src/main/resources/springmvc.xml 配置文件中的
      复制代码
      <mvc:view-controller path="/" view-name="index"/>
      修改为(或添加)
      <mvc:view-controller path="/index" view-name="index"/>
      就访问成功了
  3. 访问位置
    访问 WEB-INF/views/index.jsp 页面

  4. 适用场景
    页面在 WEB-INF 下,但不需要执行任何 Java 业务逻辑,只是单纯的跳转显示。

  5. 注意事项
    由于Tomcat容器本身有默认的欢迎页查找机制,所有配置有些麻烦。


方式三:使用SpringMVC-Controller配置欢迎页(最常用)

  1. 配置代码
    1. pom.xml同前期准备内容一样

    2. web.xml内容同方式一中的内容一样,添加<welcome-file-list> 标签

    3. 在 webapp根目录下的index.jsp页面中添加跳转,与方式二中解决问题方法二的代码一样

    4. 在 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>
    5. 在 src/main/resources/springmvc.xml 配置文件中配置欢迎页内容在方式二的基础上添加扫描包代码

      XML 复制代码
          <!-- 配置spring创建容器时要扫描的包 -->
          <context:component-scan base-package="com.qcby"></context:component-scan>
    6. 在controller层

      java 复制代码
      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";
          }
      }
  2. 访问位置
    访问 WEB-INF/views/index.jsp 页面
  3. 适用场景
    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转发 最灵活,可添加业务逻辑 需要写代码
相关推荐
Hui Baby2 小时前
java -jar 启动原理
java·pycharm·jar
weixin_511255212 小时前
更新jar内资源和代码
java·jar
木井巳2 小时前
【递归算法】验证二叉搜索树
java·算法·leetcode·深度优先·剪枝
不当菜虚困2 小时前
windows下HSDB导出class文件报错【java.io.IOException : 系统找不到指定的路径。】
java·开发语言
小马爱打代码2 小时前
Spring Boot:第三方 API 调用的企业级容错设计
java·spring boot·后端
草履虫建模2 小时前
A13 String 详解:不可变、常量池、equals 与 ==、性能与常见坑
java·开发语言·spring·jdk·intellij-idea·java基础·新手
invicinble2 小时前
学习的门道和思路
java·开发语言·学习
weixin199701080163 小时前
加盟网 item_search - 根据关键词获取行业列表接口对接全攻略:从入门到精通
java·python
EliseL3 小时前
SuperMap iObjects Java 如何将3DTiles数据转换为S3M三维瓦片
java·3d·三维