企业级信息系统开发学习笔记1.7 基于XML配置方式使用Spring MVC

news2025/7/27 4:24:12

文章目录

  • 零、本节学习目标
  • 一、Spring MVC概述
    • 1、MVC架构
    • 2、Spring MVC
    • 3、使用Spring MVC的两种方式
  • 二、基于XML配置与注解的方式使用Spring MVC
    • (一)创建Spring项目【SpringMVCDemo01】
    • (二)在pom文件里添加相关依赖
    • (三)给项目添加Web功能
    • (四)创建三个页面
      • 1、登录页面 - login.jsp
      • 2、登录成功页面 - success.jsp
      • 3、登录失败页面 - failure.jsp
    • (五)创建登录控制器 - LoginController
    • (六)创建Spring配置文件 - spring-config.xml
    • (七)创建Spring MVC配置文件 - spring-mvc-config.xml
    • (八)在web.xml里加载Spring配置文件与Spring MVC配置文件
    • (九)配置Tomcat服务器
    • (十)添加项目对Tomcat的依赖
    • (十一)启动Tomcat服务器
    • (十二)测试登录功能
  • 三、实战练习
    • 任务1、设置项目首页 - index.jsp
      • 1、修改web.xml文件
      • 2、在views目录里创建首页文件index.jsp
      • 3、修改登录控制器 - LoginController
      • 4、启动服务器,查看效果
    • 任务2、首页添加登录链接,单击可跳转到登录页面
      • 1、修改首页文件 - index.jsp
      • 2、修改登录控制器 - LoginController
      • 3、启动服务器,查看效果
    • 任务3、利用Spring MVC配置文件实现快捷页面跳转
      • 1、修改登录控制器 - LoginController
      • 2、修改Spring MVC配置文件 - spring-mvc-config.xml
      • 3、启动服务器,查看效果
    • 任务4、添加静态资源,让Spring MVC正确处理
      • 1、添加一张图片
      • 2、修改首页文件,增加显示图片的元素
      • 3、启动服务器,查看效果
      • 4、修改Spring MVC配置文件,单独处理静态资源
      • 5、修改首页文件,图片源采用虚拟路径,由配置文件负责映射到真实路径
      • 6、重启服务器,查看效果
    • 课堂练习:添加CSS样式表和JavaScript脚本文件
    • 任务5、请求服务器端返回的简单字符串
      • 1、创建获取字符串控制器 - GetStringController
      • 2、启动服务器,查看效果
      • 3、修改获取字符串控制器 - GetStringController
      • 4、重启服务器,查看效果
        • 思考题:能否让返回的字符串变大一点显示?
    • 任务6、请求服务器端返回的JSON数据
      • 1、创建用户实体类 - User
      • 2、创建获取JSON控制器 - GetJsonController
      • 3、在pom.xml文件里添加对json的支持
      • 4、启动服务器,查看结果
    • 任务7、请求服务器端返回的XML数据
      • 1、创建获取XML控制器 - GetXmlController
      • 2、在pom.xml文件里添加对xml的支持
      • 3、在项目结构窗口将依赖添加到输出目录
      • 4、启动服务器,查看效果

零、本节学习目标

  1. 了解Spring MVC的基本原理
  2. 会基于XML配置方式使用Spring MVC

一、Spring MVC概述

1、MVC架构

MVC 是 Model、View 和 Controller 的缩写,分别代表 Web 应用程序中的 3 种职责。

  • 模型:用于存储数据以及处理用户请求的业务逻辑。
  • 视图:向控制器提交数据,显示模型中的数据。
  • 控制器:根据视图提出的请求判断将请求和数据交给哪个模型处理,将处理后的有关结果交给哪个视图更新显示。

三层架构:Presentation Tier + Application Tier + Data Tier (展现层+应用层+数据访问层)

2、Spring MVC

  • Spring MVC 是 Spring 提供给 Web 应用的框架设计。Spring MVC 是一个典型的教科书式的 MVC 构架,不像 Struts 等都是变种或者不是完全基于 MVC 系统的框架。Spring MVC 角色划分清晰,分工明细,并且和 Spring 框架无缝结合。作为当今业界最主流的 Web 开发框架,Spring MVC 已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。
  • 实际上MVC只存在于三层架构的展现层,M实际上是数据模型,是包含数据的对象,在Spring MVC里有一个专门的类交Model,用于和V之间的数据交互和传值;V指的是视图页面,包含JSP、FreeMarker、Velocity、Thymeleaf、Tile等;C当然就是控制器(Spring MVC的注解@Controller的类)。
  • Spring MVC工作流程
  1. 客户端请求提交到 DispatcherServlet。
  2. 由 DispatcherServlet 控制器寻找一个或多个 HandlerMapping,找到处理请求的 Controller。
  3. DispatcherServlet 将请求提交到 Controller。
  4. Controller 调用业务逻辑处理后返回 ModelAndView。
  5. DispatcherServlet 寻找一个或多个 ViewResolver 视图解析器,找到 ModelAndView 指定的视图。
  6. 视图负责将结果显示到客户端。
    在这里插入图片描述
  • Spring框架文档网址(https://docs.spring.io/spring-framework/docs/current/reference/html/)
    在这里插入图片描述
    在这里插入图片描述

3、使用Spring MVC的两种方式

  • 基于XML配置与注解的方式使用Spring MVC
  • 基于Java配置与注解的方式使用Spring MVC

二、基于XML配置与注解的方式使用Spring MVC

(一)创建Spring项目【SpringMVCDemo01】

在这里插入图片描述
在这里插入图片描述

(二)在pom文件里添加相关依赖

在这里插入图片描述

<?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.hw.spring</groupId>
    <artifactId>SpringMVCDemo01</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <!-- spring.version -->
        <spring.version>5.3.4</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 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>
        <!--日志框架-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <!--单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>                                          

(三)给项目添加Web功能

  • 打开项目结构窗口,在列表里选择【Modules】
    在这里插入图片描述
  • 单击【+】按钮,添加Web功能
    在这里插入图片描述
    在这里插入图片描述
  • 单击【Create Artifact】按钮,将名称改为“SpringMVCDemo01”
    在这里插入图片描述
  • 单击【OK】按钮,可以看到项目多了一个web目录
    在这里插入图片描述

(四)创建三个页面

  • 在WEB-INF里创建views子目录
    在这里插入图片描述

1、登录页面 - login.jsp

在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户登录</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
</head>
<body>
<h3 style="text-align: center">用户登录</h3>
<form id="frmLogin" action="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="登录"/>
                <input type="reset" value="重置"/>
            </td>
        </tr>
    </table>
</form>
</body>
</html>

2、登录成功页面 - success.jsp

在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>登录成功</title>
</head>
<body>
<h1>${username},登录成功!</h1>
</body>
</html>

3、登录失败页面 - failure.jsp

在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>登录失败</title>
</head>
<body>
<h1>${username},登录失败!</h1>
</body>
</html>

(五)创建登录控制器 - LoginController

  • 创建net.hw.spring.controller子包,然后在包里创建LoginController类

在这里插入图片描述

package net.hw.spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpSession;

/**
 * 功能:登录控制器
 * 作者:华卫
 * 日期:2021年04月07日
 */
@Controller
public class LoginController {
    @RequestMapping("/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        HttpSession session) {
        // 将从登录表单获取的用户名写入会话
        session.setAttribute("username", username);
        // 判断是否登录成功
        if (username.equals("admin") && password.equals("12345")) {
            // 返回逻辑视图名
            return "success";
        } else {
            // 返回逻辑视图名
            return "failure";
        }
    }
}

(六)创建Spring配置文件 - spring-config.xml

  • 在resources里创建mvc子目录,然后在子目录里创建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 
       https://www.springframework.org/schema/context/spring-context.xsd">
    
    <!--组件扫描-->
    <context:component-scan base-package="net.hw.spring.controller" />
</beans>

(七)创建Spring MVC配置文件 - spring-mvc-config.xml

  • 在resources/mvc目录里创建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/cache"
       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/cache 
       http://www.springframework.org/schema/cache/spring-cache.xsd 
       http://www.springframework.org/schema/context 
       https://www.springframework.org/schema/context/spring-context.xsd">

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

    <!--扫描控制器-->
    <context:component-scan base-package="net.hw.spring.controller"/>

    <!--定义内部资源视图解析器-->
    <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>
</beans>

在这里插入图片描述

(八)在web.xml里加载Spring配置文件与Spring MVC配置文件

  • 在web/WEB-INF目录里打开web.xml文件
    在这里插入图片描述

在这里插入图片描述

<?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">
    <!--设置启动首页-->
    <welcome-file-list>
        <welcome-file>/WEB-INF/views/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:mvc/spring-config.xml</param-value>
    </context-param>

    <!--配置Spring前段控制器,加载Spring MVC配置文件-->
    <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:mvc/spring-mvc-config.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>

    <!--设置字符编码过滤器-->
    <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>

(九)配置Tomcat服务器

  • 单击工具栏上的【Add Configuration】,弹出【Run/Debug Configurations】窗口
    在这里插入图片描述
    在这里插入图片描述
  • 添加本地的Tomcat服务器
    在这里插入图片描述
    在这里插入图片描述
  • 对服务器进行设置(配置应用服务器)
    在这里插入图片描述
  • 单击【Fix】按钮
    在这里插入图片描述
  • 单击【OK】按钮
    在这里插入图片描述

(十)添加项目对Tomcat的依赖

  • 打开【Project Structure】窗口
    在这里插入图片描述
  • 单击【Dependencies】选项卡
    在这里插入图片描述
  • 单击【+】按钮,选择【Library】
    在这里插入图片描述
    在这里插入图片描述
  • 单击【Add Selected】按钮
    在这里插入图片描述
  • 单击【OK】按钮
    在这里插入图片描述

(十一)启动Tomcat服务器

在这里插入图片描述

  • 启动失败,输出目录没有项目运行所需的jar包
    在这里插入图片描述
  • 配置Artifacts,添加项目正常运行所需的jar包
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 选在项目依赖的全部jar包,单击右键,选择【Put into /WEB-INF/lib】
    在这里插入图片描述
    在这里插入图片描述
  • 单击【OK】按钮
    在这里插入图片描述
  • 重启服务器,查看结果
    在这里插入图片描述
  • 修改Spring MVC配置文件
    在这里插入图片描述
  • 添加xmlns:mvc="http://www.springframework.org/schema/mvc"
    在这里插入图片描述
  • 重启服务器,查看结果
    在这里插入图片描述

(十二)测试登录功能

在这里插入图片描述

三、实战练习

任务1、设置项目首页 - index.jsp

  • 页面显示内容Hello, Spring MVC World!

1、修改web.xml文件

  • 注释掉“设置启动首页”元素
    在这里插入图片描述

2、在views目录里创建首页文件index.jsp

在这里插入图片描述

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>首页</title>
</head>
<body>
<h1>Hello, Spring MVC World!</h1>
</body>
</html>
  • 此时,启动服务器,查看效果
    在这里插入图片描述

3、修改登录控制器 - LoginController

在这里插入图片描述

4、启动服务器,查看效果

在这里插入图片描述

任务2、首页添加登录链接,单击可跳转到登录页面

1、修改首页文件 - index.jsp

在这里插入图片描述

2、修改登录控制器 - LoginController

在这里插入图片描述

3、启动服务器,查看效果

在这里插入图片描述

在这里插入图片描述

  • 说明:项目启动后,跳转到首页,然后从首页跳转到登录页面,都是通过登录控制器里的跳转方法实现的,跳转方法里没有任何业务逻辑,只是一条return语句负责页面跳转,我们有更为简单的方法来取代,即利用利用Spring MVC配置文件实现快捷页面跳转。

任务3、利用Spring MVC配置文件实现快捷页面跳转

1、修改登录控制器 - LoginController

  • 注释掉两个负责页面跳转的方法:index()、toLogin()
    在这里插入图片描述

2、修改Spring MVC配置文件 - 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:context="http://www.springframework.org/schema/context"
       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/context
       https://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/mvc
       https://www.springframework.org/schema/mvc/spring-mvc.xsd">

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

    <!--扫描控制器-->
    <context:component-scan base-package="net.hw.spring.controller"/>

    <!--定义内部资源视图解析器-->
    <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="/" view-name="index"/>
    <mvc:view-controller path="/toLogin" view-name="login"/>
</beans>

3、启动服务器,查看效果

在这里插入图片描述

任务4、添加静态资源,让Spring MVC正确处理

  • 静态资源包括图片、样式表、脚本,下面以图片为例进行说明

1、添加一张图片

  • 在WEB-INF里创建images目录,将图片bear.jpg拷贝进来(当然你们可以拷贝其它图片)
    在这里插入图片描述

2、修改首页文件,增加显示图片的元素

在这里插入图片描述

3、启动服务器,查看效果

在这里插入图片描述

4、修改Spring MVC配置文件,单独处理静态资源

在这里插入图片描述

5、修改首页文件,图片源采用虚拟路径,由配置文件负责映射到真实路径

在这里插入图片描述

6、重启服务器,查看效果

在这里插入图片描述

课堂练习:添加CSS样式表和JavaScript脚本文件

  • 在WEB-INF里创建css目录,在里面创建样式文件index.css,负责首页的样式(元素全部居中,设置页面背景颜色,去掉超链接的下划线……)
    在这里插入图片描述
  • 在WEB-INF里创建js目录,在里面创建脚本文件check.js,负责登录页面的非空校验(先进行用户名非空校验,后进行密码非空校验)
    在这里插入图片描述

任务5、请求服务器端返回的简单字符串

1、创建获取字符串控制器 - GetStringController

在这里插入图片描述

2、启动服务器,查看效果

  • 访问http://localhost:8080/SpringMVCDemo01/getString
    在这里插入图片描述

3、修改获取字符串控制器 - GetStringController

在这里插入图片描述

4、重启服务器,查看效果

  • 访问http://localhost:8080/SpringMVCDemo01/getString
    在这里插入图片描述

思考题:能否让返回的字符串变大一点显示?

在这里插入图片描述
在这里插入图片描述

任务6、请求服务器端返回的JSON数据

1、创建用户实体类 - User

  • 创建net.hw.spring.bean包,然后在包里创建User类
    在这里插入图片描述
package net.hw.spring.lesson07.bean;

import java.util.Date;

/**
 * 功能:用户实体类
 * 作者:华卫
 * 日期:2021年04月12日
 */
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 +
                '}';
    }
}

2、创建获取JSON控制器 - GetJsonController

在这里插入图片描述

package net.hw.spring.controller;

import net.hw.spring.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 功能:获取JSON控制器
 * 作者:华卫
 * 日期:2021年04月12日
 */
@Controller
public class GetJsonController {
    @RequestMapping(value = "/getJson", produces = "application/json; charset=utf-8")
    @ResponseBody // 响应正文注解
    public User getJson() {
        User user = new User();
        user.setId(1);
        user.setUsername("萌萌哒");
        user.setPassword("902345");
        user.setTelephone("15834345678");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        return user;
    }

    @RequestMapping(value = "/getJsonArray", produces = "application/json; charset=utf-8")
    @ResponseBody // 响应正文注解
    public List<User> getJsonArray() {
        List<User> users = new ArrayList<>();

        // 创建第1个用户
        User user = new User();
        user.setId(1);
        user.setUsername("萌萌哒");
        user.setPassword("902345");
        user.setTelephone("15834345678");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        // 将用户添加到用户列表
        users.add(user);

        // 创建第2个用户
        user = new User();
        user.setId(2);
        user.setUsername("康科德");
        user.setPassword("12345");
        user.setTelephone("13856567890");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        // 将用户添加到用户列表
        users.add(user);

        // 创建第3个用户
        user = new User();
        user.setId(3);
        user.setUsername("娃哈哈");
        user.setPassword("54321");
        user.setTelephone("15890905678");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        // 将用户添加到用户列表
        users.add(user);

        return users;
    }
}

3、在pom.xml文件里添加对json的支持

在这里插入图片描述

<!--对json的支持-->                                        
<dependency>                                               
    <groupId>com.fasterxml.jackson.core</groupId>          
    <artifactId>jackson-core</artifactId>                  
    <version>2.9.7</version>                               
</dependency>                                              
<dependency>                                               
    <groupId>com.fasterxml.jackson.core</groupId>          
    <artifactId>jackson-databind</artifactId>              
    <version>2.9.7</version>                               
</dependency>                                              
<dependency>                                               
    <groupId>com.fasterxml.jackson.core</groupId>          
    <artifactId>jackson-annotations</artifactId>           
    <version>2.9.7</version>                               
</dependency>                                              

4、启动服务器,查看结果

  • 访问http://localhost:8080/SpringMVCDemo01/getJson
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 重启服务器,再次访问,查看效果
    在这里插入图片描述

  • 访问http://localhost:8080/SpringMVCDemo01/getJsonArray
    在这里插入图片描述

任务7、请求服务器端返回的XML数据

1、创建获取XML控制器 - GetXmlController

在这里插入图片描述

package net.hw.spring.controller;

import net.hw.spring.bean.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 功能:获取XML控制器
 * 作者:华卫
 * 日期:2021年04月12日
 */
@Controller
public class GetXmlController {
    @RequestMapping(value = "/getXml", produces = "application/xml; charset=utf-8")
    public @ResponseBody
    List<User> getXml() {
        List<User> users = new ArrayList<User>();

        User user = new User();
        user.setId(1);
        user.setUsername("萌萌哒");
        user.setPassword("12345");
        user.setTelephone("15889895678");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        users.add(user);

        user = new User();
        user.setId(2);
        user.setUsername("李文霞");
        user.setPassword("45678");
        user.setTelephone("13978783456");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        users.add(user);

        user = new User();
        user.setId(3);
        user.setUsername("郑智化");
        user.setPassword("88888");
        user.setTelephone("15890903456");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        users.add(user);

        return users;
    }
}

2、在pom.xml文件里添加对xml的支持

在这里插入图片描述

<!--对xml的支持-->
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
    <version>2.5.3</version>
</dependency>

3、在项目结构窗口将依赖添加到输出目录

在这里插入图片描述
在这里插入图片描述

4、启动服务器,查看效果

  • 访问http://localhost:8080/SpringMVCDemo01/getXml
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/394710.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ConvMixer:Patches Are All You Need

Patches Are All You Need 发表时间&#xff1a;[Submitted on 24 Jan 2022]&#xff1b; 发表期刊/会议&#xff1a;Computer Vision and Pattern Recognition&#xff1b; 论文地址&#xff1a;https://arxiv.org/abs/2201.09792&#xff1b; 代码地址&#xff1a;https:…

Python编程训练题2

1.11 有 n 盏灯&#xff0c;编号 1&#xff5e;n&#xff08;0<n<100&#xff09;。第 1 个人把所有灯打开&#xff0c;第 2 个人按下所有编号为 2 的倍数的开关&#xff08;这些灯将被关掉&#xff09;&#xff0c;第 3 个人按下所有编号为 3 的倍数的开关&#xff08;其…

【华为OD机试2023】租车骑绿岛 C++ Java Python

【华为OD机试2023】租车骑绿岛 C++ Java Python 前言 如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议! 本文解法非最优解(即非性能最优),不能保证通过率。 Tips1:机试为ACM 模式 你的代码需要处理输入输出,input/cin接收输入…

如何实现在on ethernetPacket中自动回复NDP response消息

对于IPv4协议来说,如果主机想通过目标ipv4地址发送以太网数据帧给目的主机,需要在数据链路层填充目的mac地址。根据目标ipv4地址查找目标mac地址,这是ARP协议的工作原理 对于IPv6协议来说,根据目标ipv6地址查找目标mac地址,它使用的不是ARP协议,而是邻居发现NDP(Neighb…

Oracle启动数据库报ORA-01102解决办法

1.机器启动之后登录服务器使用sqlplus / as sysdba 登录数据库发现数据库并没有启动之前把数据库服务添加过开机自启动 2.使用startup命令启动数据库报错了 SYSorcl>startup; ORACLE 例程已经启动。 Total System Global Area 2471931904 bytes Fixed Size 2255752 byt…

框架——MyBatis的入门案例

框架概述1.1什么是框架框架&#xff08;Framework&#xff09;是整个或部分系统的可重用设计&#xff0c;表现为一组抽象构件及构件实例间交与的方法&#xff1b;另一种定义认为&#xff0c;框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义…

关基系统国产化全面落地,ZoomEye Pro支持信创资产识别

信创产业发展的核心动力是IT底层架构的独立自主&#xff0c;为了尽快推进关键信息基础设施系统的国产化替代&#xff0c;一方面国家不断推出相关政策&#xff0c;协调各方资源&#xff0c;提供强有力的政策支撑&#xff0c;另一方面也在各关基行业有序推进重要信息基础设施的国…

第四章:面向对象编程

第四章&#xff1a;面向对象编程 4.1&#xff1a;面向过程与面向对象 面向过程(POP)与面向对象(OOP) 二者都是一种思想&#xff0c;面向对象是相对于面向过程而言的。面向过程&#xff0c;强调的是功能行为&#xff0c;以函数为最小单位&#xff0c;考虑怎么做。面向对象&…

2024秋招BAT核心算法 | 详解图论

图论入门与最短路径算法 图的基本概念 由节点和边组成的集合 图的一些概念&#xff1a; ①有向边&#xff08;有向图&#xff09;&#xff0c;无向边&#xff08;无向图&#xff09;&#xff0c;权值 ②节点&#xff08;度&#xff09;&#xff0c;对应无向图&#xff0c;…

抓狂!谷歌账号又又登录异常?给你支招解决

最近&#xff0c;就有很多朋友向东哥反馈说&#xff0c;谷歌账号登录异常了&#xff0c;明明账号密码都是对的&#xff0c;愣是登不上去&#xff0c;严重影响工作进度&#xff0c;很是捉急。所以东哥今天就总结了一份谷歌账号登录异常的解决方案&#xff0c;希望能帮助到大家&a…

CAS详解

CAS详解一 简介二 CAS底层原理2.1.AtomicInteger内部的重要参数2.2.AtomicInteger.getAndIncrement()分析2.2.1.getAndIncrement()方法分析2.2.2.举例分析三 CAS缺点四 CAS会导致"ABA问题"4.1.AtomicReference 原⼦引⽤。4.2.ABA问题的解决(AtomicStampedReference 类…

Eslint、Stylelint、Prettier、lint-staged、husky、commitlint【前端代码校验规则】

一、Eslint yarn add typescript-eslint/eslint-plugin typescript-eslint/parser eslint eslint-config-prettier eslint-config-standard-with-typescript eslint-plugin-import eslint-plugin-n eslint-plugin-prettier eslint-plugin-promise eslint-plugin-react eslint-…

实验四:搜索

实验四&#xff1a;搜索 1.填格子 题目描述 有一个由数字 0、1 组成的方阵中&#xff0c;存在一任意形状的封闭区域&#xff0c;封闭区域由数字1 包围构成&#xff0c;每个节点只能走上下左右 4 个方向。现要求把封闭区域内的所有空间都填写成2 输入要求 每组测试数据第一…

Provisioning Edge Inference as a Service via Online Learning 阅读笔记

通过在线学习提供边缘推理服务 一、论文研究背景、动机和主要贡献 研究背景 趋势&#xff1a;机器学习模型训练从中央云服务器逐步转移到边缘服务器 好处&#xff1a; 与云相比&#xff1a;a.低延迟 b.保护用户隐私&#xff08;数据不会上传到云&#xff09;与on-device相…

如何理解元数据、数据元、元模型、数据字典、数据模型这五个的关系?如何进行数据治理呢?数据治理该从哪方面入手呢?

如何理解元数据、数据元、元模型、数据字典、数据模型这五个的关系&#xff1f;如何进行数据治理呢&#xff1f;数据治理该从哪方面入手呢&#xff1f;导读一、数据元二、元数据三、数据模型四、数据字典五、元模型导读 请问元数据、数据元、数据字典、数据模型及元模型的区别…

数仓治理之数据梳理

目录 1.定义 2.用途作用 3.实施方法 3.1自上而下 3.1.1数据域梳理 3.1.2数据主题梳理 3.1.3 数据实体梳理 3.1.4设计数据模型 3.1.5优点 3.1.5缺点 3.2自下而上 3.2.1需求分析 3.2.2展现 3.2.3分析逻辑 3.2.4数据建模 3.2.5优点 3.2.6缺点 1.定义 “数据梳理”即对…

SpringBoot 如何保证接口安全?

为什么要保证接口安全对于互联网来说&#xff0c;只要你系统的接口暴露在外网&#xff0c;就避免不了接口安全问题。 如果你的接口在外网裸奔&#xff0c;只要让黑客知道接口的地址和参数就可以调用&#xff0c;那简直就是灾难。举个例子&#xff1a;你的网站用户注册的时候&am…

【云原生kubernetes】k8s数据存储之Volume使用详解

目录 一、什么是Volume 二、k8s中的Volume 三、k8s中常见的Volume类型 四、Volume 之 EmptyDir 4.1 EmptyDir 特点 4.2 EmptyDir 实现文件共享 4.2.1 关于busybox 4.3 操作步骤 4.3.1 创建配置模板文件yaml 4.3.2 创建Pod 4.3.3 访问nginx使其产生访问日志 4.3.4 …

I.MX6ULL_Linux_系统篇(27) 系统烧录工具

前面我们已经移植好了 uboot 和 linux kernle&#xff0c;制作好了根文件系统。但是我们移植都是通过网络来测试的&#xff0c;在实际的产品开发中肯定不可能通过网络来运行&#xff0c;因此我们需要将 uboot、 linux kernel、 .dtb(设备树)和 rootfs 这四个文件烧写到板子上的…

Nginx学习 (2) —— 虚拟主机配置

文章目录虚拟主机原理域名解析与泛域名解析&#xff08;实践&#xff09;配置文件中ServerName的匹配规则技术架构多用户二级域名短网址虚拟主机原理 为什么需要虚拟主机&#xff1a; 当一台主机充当服务器给用户提供资源的时候&#xff0c;并不是一直都有很大的用户量&#…