利用SSM框架实现用户登录功能(可视化03)

目录

一、SSM框架

(一)SSM为何物

(二)Spring框架

(三)Spring MVC框架

二、用户登录运行效果

 三、利用SSM框架实现用户登录

1、创建数据库

2、创建用户表 

3、用户表添加记录

(二)创建Maven项目

(三)添加相关依赖

(四)创建日志属性文件

(五)创建数据库配置属性文件

(六)给项目添加Web功能

(七)配置Tomcat服务器

1、安装Tomcat服务器

2、启动Tomcat服务 

3、访问Tomcat主页 

 5、项目配置Tomcat服务器

(八)创建用户实体类 

(九)创建用户映射器接口

(十)创建用户服务类

(十一)创建用户控制器

(十二)创建用户映射器配置文件

(十二)创建用户映射器配置文件 

(十三)准备静态资源

2、创建样式文件

3、创建脚本文件

(十四)创建页面

 2、创建登录页面

3、创建网站首页 

4、创建后台管理页面

(十五)创建Spring配置文件

(十六)创建Spring MVC配置文件

(十七)编辑Web部署描述文件

(十八)启动服务器,查看效果


一、SSM框架

(一)SSM为何物

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容),常作为数据源较简单的Web项目的框架。

(二)Spring框架

Spring就像是整个项目中装配Bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地new一个对象,而是让Spring框架帮你来完成这一切。

(三)Spring MVC框架

Spring MVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。Spring MVC相当于SSH框架中Struts。

M:模型层、V:视图层、C:控制层

MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。比如一批统计数据可以分别用柱状图、饼图来表示。C存在的目的则是确保M和V的同步,一旦M改变,V应该同步更新。

模型-视图-控制器(MVC)是Xerox PARC在二十世纪八十年代为编程语言Smalltalk-80发明的一种软件设计模式,已被广泛使用。后来被推荐为Oracle旗下Sun公司Java EE平台的设计模式,并且受到越来越多的使用ColdFusion和PHP的开发者的欢迎。模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点。
 

二、用户登录运行效果

 三、利用SSM框架实现用户登录

1、创建数据库

执行命令:CREATE DATABASE ssmdb CHARSET='utf8mb4';

2、创建用户表 


CREATE TABLE `t_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `password` varchar(20) DEFAULT NULL,
  `telephone` varchar(11) DEFAULT NULL,
  `register_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `popedom` int(11) DEFAULT NULL COMMENT '0:管理员;1:普通用户',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
 

3、用户表添加记录

INSERT INTO `t_user` VALUES ('1', 'admin', '12345', '15734345678', '2021-09-02 08:40:35', '0');
INSERT INTO `t_user` VALUES ('2', 'alice', '11111', '13956567889', '2021-10-20 09:51:43', '1');
INSERT INTO `t_user` VALUES ('3', 'brown', '22222', '13956678907', '2022-03-21 09:52:36', '1');
INSERT INTO `t_user` VALUES ('4', 'linda', '33333', '15890905678', '2022-05-25 09:52:56', '1');

执行SQL命令添加4条记录

(二)创建Maven项目

  • 创建Maven项目 - SSMLogin
  • 设置项目命令、项目位置、组ID和项目ID

(三)添加相关依赖

pom.xml文件里添加相关依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>net.cm.ssm</groupId>
    <artifactId>SSMLogin</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <!-- spring.version -->
        <spring.version>5.3.20</spring.version>
    </properties>

    <dependencies>
        <!--Spring核心-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring Bean-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring容器-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring测试-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring数据库支持-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--数据库驱动工具包-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <!--数据库连接池框架-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.10</version>
        </dependency>
        <!--持久层框架-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.10</version>
        </dependency>
        <!--提供MyBatis与Spring整合的支持-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
        </dependency>
        <!--日志框架-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
        <!--Spring Web-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--Spring MVC-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!--JSP标准标签库-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <!--Servlet-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
</project>
 

打开Maven窗口,单击刷新按钮,下载依赖

 

(四)创建日志属性文件

resources目录里创建log4j.properties文件

 log4j.rootLogger=WARN, stdout, logfile
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/ssm.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

(五)创建数据库配置属性文件

resources目录里创建jdbc.properties

 jdbc.driverClassName = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/ssmdb?useSSL=false
jdbc.username = root
jdbc.password = 903213

(六)给项目添加Web功能

 1.将默认的SSMLogin:Web exploded改名为SSMLogin

2.WEB-INF目录里classes子目录里放的是用户编写的源程序编译之后的字节码文件,但是项目依赖的jar包需要创建一个lib目录

3.把右边的Available Elements全部选中,单击右键,弹出快捷菜单

单击Put into /WEB-INF/lib菜单项,把选中的jar包添加到左边的/WEB-INF/lib目录

单击【OK】按钮

 

 

(七)配置Tomcat服务器

1、安装Tomcat服务器

下载tomcat-8.5.58.rar,解压到D盘根目录

进入可执行目录bin

 

配置Tomcat环境变量

 

 

 ​​​​​​​

2、启动Tomcat服务 

在命令窗口执行:startup.bat,启动Tomcat服务(当然可以在资源管理器窗口里直接双击startup.bat图标

3、访问Tomcat主页 

主页在E:\tomcat-8.5.58\webapps\ROOT目录里

在浏览器里访问http://localhost:8080(或http://localhost:8080/index.jsp

​​​​​​​

 5、项目配置Tomcat服务器

单击工具栏上的【Add Configuration…】,按照演示进行操作

 

 

 

 

(八)创建用户实体类 

创建net.huawei.ssm.bean包,在包里创建User

package net.cm.ssm.bean;

import java.util.Date;
public class User {
    private int id;
    private String username;
    private String password;
    private String telephone;
    private Date registerTime;
    private int popedom;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public Date getRegisterTime() {
        return registerTime;
    }

    public void setRegisterTime(Date registerTime) {
        this.registerTime = registerTime;
    }

    public int getPopedom() {
        return popedom;
    }

    public void setPopedom(int popedom) {
        this.popedom = popedom;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", telephone='" + telephone + '\'' +
                ", registerTime=" + registerTime +
                ", popedom=" + popedom +
                '}';
    }
}

(九)创建用户映射器接口

package net.cm.shop.mapper;

import net.cm.shop.bean.User;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Mapper // 交给Spring容器管理
public interface UserMapper {
    User login(@Param("username") String username, @Param("password") String password);
}

(十)创建用户服务类

net.cm.ssm包里创建service子包,然后在子包里创建UserService

package net.cm.ssm.service;

import net.cm.ssm.bean.User;
import net.cm.ssm.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


@Service // 交给Spring容器管理
public class UserService {
    @Autowired // 自动装配
    private UserMapper userMapper;

    public User login(String username, String password) {
        return userMapper.login(username, password);
    }
}
 

(十一)创建用户控制器

net.cm.ssm包里创建controller子包,然后在子包里创建UserController

package net.cm.shop.controller;

import net.cm.service.UserService;
import net.cm.shop.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpSession;

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;
    
    @RequestMapping("/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        HttpSession session) {
        // 调用用户服务对象的登录方法
        User user = userService.login(username, password);
        // 判断用户是否登录成功
        if (user != null) {
            // 将登录用户名写入会话
            session.setAttribute("username", username);
            // 删除会话里可能存在的登录错误提示信息
            if (session.getAttribute("loginMsg") != null) {
                session.removeAttribute("loginMsg");
            }
            // 判断用户角色,跳转到不同页面
            if (user.getPopedom() == 0) {
                // 跳转到后台管理页面
                return "backend/management"; // 逻辑视图名
            } else {
                // 跳转到前台首页
                return "frontend/index"; // 逻辑视图名
            }
        } else {
            // 将登录错误信息写入会话
            session.setAttribute("loginMsg", "用户名或密码错误!");
            // 跳转到前台登录页面
            return "frontend/login"; // 逻辑视图名
        }
    }
    
    @RequestMapping("/logout")
    public String logout(HttpSession session) {
        // 删除会话里保存的用户名信息
        session.removeAttribute("username");
        // 结束会话
        session.invalidate(); 
        // 跳转到前台登录页面
        return "frontend/login"; // 逻辑视图名
    }
}

(十二)创建用户映射器配置文件

resources里创建mapper子目录,然后在子目录里创建UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="net.huawei.ssm.mapper.UserMapper">
    <!--定义结果映射,因为表字段名与实体属性名不尽一致-->
    <resultMap id="userMap" type="net.huawei.ssm.bean.User">
        <result property="id" column="id"/>
        <result property="username" column="username"/>
        <result property="password" column="password"/>
        <result property="telephone" column="telephone"/>
        <result property="registerTime" javaType="java.util.Date" column="register_time" jdbcType="TIMESTAMP"/>
        <result property="popedom" column="popedom"/>
    </resultMap>
    
    <!--定义登录映射语句-->
    <select id="login" resultMap="userMap">
        SELECT * FROM t_user WHERE username = #{username} AND password = #{password};
    </select> 
</mapper>

​​​​​​​

(十二)创建用户映射器配置文件 

resources里创建mapper子目录,然后在子目录里创建UserMapper.xml

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="net.huawei.ssm.mapper.UserMapper">
    <!--定义结果映射,因为表字段名与实体属性名不尽一致-->
    <resultMap id="userMap" type="net.huawei.ssm.bean.User">
        <result property="id" column="id"/>
        <result property="username" column="username"/>
        <result property="password" column="password"/>
        <result property="telephone" column="telephone"/>
        <result property="registerTime" javaType="java.util.Date" column="register_time" jdbcType="TIMESTAMP"/>
        <result property="popedom" column="popedom"/>
    </resultMap>
    
    <!--定义登录映射语句-->
    <select id="login" resultMap="userMap">
        SELECT * FROM t_user WHERE username = #{username} AND password = #{password};
    </select> 
</mapper>
 

(十三)准备静态资源

WEB-INF里创建images目录,用来存放图片资源 - bear.png

2、创建样式文件

WEB-INF里创建css子目录,然后在子目录里创建login.css

 /* 样式 */
body {
    margin: 0px;
    text-align: center;
    background: #cccccc;
}

3、创建脚本文件

WEB-INF里创建js子目录,然后在子目录里创建check.js

 /**
 * 检验登录表单
 * 
 * @returns {Boolean}
 */
function checkLoginForm() {    
    // 获取用户名文本框
    var username = document.getElementById("username");
    // 获取密码文本框
    var password = document.getElementById("password");
    // 非空校验
    if (username.value == "") {
        alert("用户名不能为空!");
        // 让用户名文本框获得焦点
        username.focus();
        return false;
    }
    if (password.value == "") {
        alert("密码不能为空!");
        // 让密码文本框获得焦点
        password.focus();
        return false;
    }    
        
    return true; // 表明可以提交数据到服务器端
}

(十四)创建页面

WEB-INF里创建views子目录,在views里创建frontendbackend两个子目录

 

 2、创建登录页面

views/frontend里创建login.jsp

 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set var="path" value="${pageContext.request.contextPath}"/>
<c:set var="basePath"
       value="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${path}/"/>
<html>
<head>
    <title>用户登录</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
    <base href="${basePath}">
    <script src="js/check.js"></script>
    <link href="css/login.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<h3 style="text-align: center">用户登录</h3>
<form id="frmLogin" action="user/login" method="post">
    <table class="tb" border="1" cellpadding="10" style="margin: 0px auto">
        <tr>
            <td align="center">账号</td>
            <td><input id="username" type="text" name="username"/></td>
        </tr>
        <tr>
            <td align="center">密码</td>
            <td><input id="password" type="password" name="password"/></td>
        </tr>
        <tr align="center">
            <td colspan="2">
                <input type="submit" value="登录" οnclick="return checkLoginForm()"/>
                <input type="reset" value="重置"/>
            </td>
        </tr>
    </table>
</form>
<c:if test="${loginMsg!=null}">
    <script type="text/javascript">alert("${loginMsg}")</script>
    <c:remove var="loginMsg"/>
</c:if>
</body>
</html>

3、创建网站首页 

views/frontend里创建index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set var="path" value="${pageContext.request.contextPath}"/>
<c:set var="basePath"
       value="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${path}/"/>
<html>
<head>
    <title>首页</title>
    <base href="${basePath}">    
</head>
<body>
<h3>欢迎访问西蒙购物网</h3>
登录用户:${username} —— <a href="user/logout">注销</a><br/>
<img src="images/bear.png" width="300" height="250">
</body>
</html>

4、创建后台管理页面

views/backend里创建management.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<c:set var="path" value="${pageContext.request.contextPath}"/>
<c:set var="basePath"
       value="${pageContext.request.scheme}://${pageContext.request.serverName}:${pageContext.request.serverPort}${path}/"/>
<html>
<head>
    <title>后台管理</title>
    <base href="${basePath}">
</head>
<body>
<h3>西蒙购物网后台管理</h3>
管理员:${username} —— <a href="user/logout">注销</a><br/>
<img src="images/bear.png" width="300" height="250">
</body>
</html>

(十五)创建Spring配置文件

resources里创建config子目录,然后在子目录里创建spring-config.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:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd">

    <!--组件扫描-->
    <context:component-scan base-package="net.huawei.ssm"/>

    <!--读取jdbc属性文件,供创建数据源使用-->
    <context:property-placeholder location="classpath:jdbc.properties"/>

    <!--配置数据源Bean,采用阿里的Druid数据库连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <!--配置数据源基本属性-->
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!--定义持久层框架MyBatis的SQL会话工厂-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--配置数据源,负责操作对象-->
        <property name="dataSource" ref="dataSource"/>
        <!--配置映射器位置,负责操作方法-->
        <property name="mapperLocations" value="classpath:mapper/*Mapper.xml"/>
    </bean>

    <!--配置MyB映射器扫描-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!--绑定SQL会话工厂-->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
        <!--配置映射器扫描的根包-->
        <property name="basePackage" value="net.huawei.ssm.mapper"/>
    </bean>
</beans>
 

(十六)创建Spring MVC配置文件

resources/config目录里创建spring-mvc-config.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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/context
       https://www.springframework.org/schema/context/spring-context.xsd">

    <!--处理对静态资源的请求-->
    <mvc:resources mapping="/css/**" location="/WEB-INF/css/"/>
    <mvc:resources mapping="/images/**" location="/WEB-INF/images/"/>
    <mvc:resources mapping="/js/**" location="/WEB-INF/js/"/>

    <!--采用注解驱动-->
    <mvc:annotation-driven />

    <!--扫描控制器(添加了@Controller注解的类)-->
    <context:component-scan base-package="net.huawei.ssm.controller"/>

    <!--不扫描服务类(添加了@Service注解的类),留在spring-config.xml里扫描,防止事务失效-->
    <context:component-scan base-package="net.huawei.ssm">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service"/>
    </context:component-scan>

    <!--定义内部资源视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    
    <!--定义视图控制器(负责页面跳转)-->
    <mvc:view-controller path="user/login" view-name="frontend/login"/>
</beans>
 

(十七)编辑Web部署描述文件

​​​​​​​

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         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_4_0.xsd"
         version="4.0">

    <display-name>simonshop</display-name>
    <welcome-file-list>
        <welcome-file>/WEB-INF/views/frontend/login.jsp</welcome-file>
    </welcome-file-list>

    <!--Spring监听器,让Spring随Web项目启动而初始化-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- 指定Spring配置文件位置 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:config/spring-config.xml</param-value>
    </context-param>

    <!--配置Spring前端控制器,通过初始化参数设置读取控制器配置文件-->
    <servlet>
        <servlet-name>DispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:config/spring-mvc-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!--Spring MVC的派发器负责一切客户端请求-->
    <servlet-mapping>
        <servlet-name>DispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!--设置字符编码过滤器-->
    <filter>
        <filter-name>Character Encoding</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>Character Encoding</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>
 

(十八)启动服务器,查看效果

​​​​​​​


版权声明:本文为qq_56244269原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。