java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SSM设置欢迎页方式

SSM设置欢迎页的三种方式总结

作者:好好研究

这篇文章主要介绍了SSM项目设置欢迎页的三种方式:使用web.xml配置、使用SpringMVC-mvc:view-controller配置和使用SpringMVC-Controller配置,每种方式都有其适用场景、优点和缺点,需要的朋友可以参考下

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会直接解析。

  1. 适用场景
    适合静态的 HTML 或 JSP,且直接放在 webapp (或 WebContent) 根目录下,没有放在 WEB-INF 里。
  2. 注意事项
    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页面
<%@ 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>
<?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。

  1. 解决问题
    1. 解决方法一:删除webapp根目录下的index.jsp页面
    2. 解决方法二:添加跳转页面代码
      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 页面

  1. 适用场景
    页面在 WEB-INF 下,但不需要执行任何 Java 业务逻辑,只是单纯的跳转显示。
  2. 注意事项
    由于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页面
<%@ 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. 适用场景
    1. 页面放在 WEB-INF 目录下(最安全)
    2. 需要查询数据、处理业务逻辑或使用模板引擎
    3. 通过SpringMVC拦截/请求并转发到指定的视图

总结

方式访问路径配置位置优点缺点
方式一:web.xml欢迎页webapp/index.jspwebapp根目录简单,快速无法使用Spring MVC功能
方式二:mvc:view-controllerWEB-INF/views/index.jspWEB-INF目录安全,可通过Controller处理配置复杂,需要正确Spring MVC配置
方式三:ControllerWEB-INF/views/index.jspController转发最灵活,可添加业务逻辑需要写代码

以上就是SSM设置欢迎页的三种方式总结的详细内容,更多关于SSM设置欢迎页方式的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文