1.7 基于XML配置方式使用Spring MVC

news2024/11/6 11:41:30

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

1、创建Maven项目

Maven项目 - SpringMvcDemo01
在这里插入图片描述

单击【Finish】按钮
在这里插入图片描述

2、添加相关依赖

在pom.xml文件里添加支持Spring MVC的相关依赖
在这里插入图片描述

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

    <properties>
        <!-- spring.version -->
        <spring.version>5.3.25</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.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>

3、给项目添加Web功能

打开项目结构窗口,在列表里选择【Modules】
在这里插入图片描述

单击【+】按钮,添加Web功能
在这里插入图片描述

在这里插入图片描述

单击【Create Artifact】按钮,将名称改为“SpringMvcDemo01”

在这里插入图片描述

单击【OK】按钮,可以看到项目多了一个web目录

在这里插入图片描述

4、创建三个页面

在WEB-INF里创建views子目录(存放JSP页面)
在这里插入图片描述

(1)创建登录页面

在views目录里创建登录页面 - login.jsp
在这里插入图片描述

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2023/3/14
  Time: 9:08
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>用户登录</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" >
  <script src="js/check.js"></script>
</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="登录" onclick="return checkLoginForm()"/>
        <input type="reset" value="重置"/>
      </td>
    </tr>
  </table>
</form>
</body>
</html>

(2)创建登录成功页面

在views目录里创建登录成功页面 - success.jsp
在这里插入图片描述

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2023/3/14
  Time: 9:09
  To change this template use File | Settings | File Templates.
--%>
<%@ 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)创建登录失败页面

在views目录里创建登录失败页面 - failure.jsp
在这里插入图片描述

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2023/3/14
  Time: 9:11
  To change this template use File | Settings | File Templates.
--%>
<%@ 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>


5、创建登录控制器

创建net.hf.spring.controller包,然后在包里创建LoginController类
在这里插入图片描述

package net.hf.spring.controller;

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

import javax.servlet.http.HttpSession;

/**
 * 功能:登录控制器
 * 作者:hf
 * 日期:2023年03月08日
 */
@Controller // 交给Spring容器来管理
public class LoginController {
    @PostMapping("/login")  // 可用@RequestMapping("/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        HttpSession session) {
        // 将登录表单提交的用户名写入会话
        session.setAttribute("username", username);
        // 判断用户是否登录成功
        if (username.equals("hf") && password.equals("123456")) {
            // 返回逻辑视图名success,表明跳转到登录成功页面
            return "success";
        } 
        
        // 返回逻辑视图名failure,表明跳转到登录失败页面
        return "failure"; 
    }
}

6、创建Spring配置文件

在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.hf.spring" />

</beans>

7、创建Spring MVC配置文件

在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: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.hf.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>

8、修改Web部署描述文件

一个Web项目启动时最先要读取web.xml文件
在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>

对应关系图
在这里插入图片描述

9、配置Tomcat服务器

单击工具栏上的【Curren File】

在这里插入图片描述

弹出【Run/Debug Configurations】窗口
在这里插入图片描述

添加本地的Tomcat服务器
在这里插入图片描述

对服务器进行设置(配置应用服务器,部署Web项目)
在这里插入图片描述

在这里插入图片描述

注意项目的URL
在这里插入图片描述

单击【OK】按钮
在这里插入图片描述

10、添加项目对Tomcat的依赖

打开【Project Structure】窗口,选择Modules对应的Dependencies,单击【+】按钮
在这里插入图片描述

添加应用服务器库 - Tomcat 8.5.86
在这里插入图片描述

单击【Add Selected】按钮
在这里插入图片描述

单击【OK】按钮

11、启动Tomcat服务器

单击工具栏上绿色的运行按钮
启动失败,输出目录没有项目运行所需的jar包
在这里插入图片描述

配置Artifacts,添加项目正常运行所需的jar包
在这里插入图片描述

单击【Put into /WEB-INF/lib】菜单项
在这里插入图片描述
单击【OK】按钮
启动服务器,查看结果

在这里插入图片描述

12、测试登录功能

登录成功
在这里插入图片描述
登录失败

在这里插入图片描述

二、实战练习

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

页面显示内容 - Welcome to Spring MVC World!与系统当前日期时间

1、修改web.xml文件

注释掉“设置启动首页”元素(删除也可以)
在这里插入图片描述

2、创建首页文件

在views目录里创建首页文件 - index.jsp
在这里插入图片描述

<%@ page import="java.util.Date" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
    <head>
        <title>首页</title>
    </head>
    <body>
        <h1>Welcome to Spring MVC World~</h1>
        <h3><%= new Date() %></h3> <!--JSP表达式元素-->
    </body>
</html>

此时,启动服务器,查看效果
在这里插入图片描述

3、修改登录控制器

在登录控制器里LoginController里添加一个方法能够跳转到首页
在这里插入图片描述

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

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

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

1、修改首页文件

添加一个超链接,跳转到登录页面
在这里插入图片描述

启动服务器
在这里插入图片描述

单击【跳转到登录页面】超链接
在这里插入图片描述
修改超链接元素
在这里插入图片描述

2、修改登录控制器

在LoginController里添加一个跳转到登录页面的方法toLogin()
在这里插入图片描述

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

显示首页
在这里插入图片描述

单击【跳转到登录页面】超链接
在这里插入图片描述

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

1、修改Spring MVC配置文件

定义两个视图控制器来负责页面跳转

<?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.hf.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>

2、修改登录控制器

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

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

显示首页(说明Spring MVC配置文件里的第一个视图控制器生效)
在这里插入图片描述

单击【跳转到登录页面】超链接,跳转到了登录页面(说明Spring MVC配置文件里的第二个视图控制器也生效了)
在这里插入图片描述

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

1、添加一张图片

在WEB-INF里创建images目录,将图片gingko.jpg拷贝进来
在这里插入图片描述

2、修改首页文件

增加显示图片的元素
在这里插入图片描述

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

首页无法正常显示图片,也就是说明应用无法访问静态的图片资源
在这里插入图片描述

4、修改Spring MVC配置文件

单独处理静态资源
在这里插入图片描述

5、修改首页文件

图片源采用虚拟路径,由配置文件负责映射到真实路径
在这里插入图片描述

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

在这里插入图片描述

课堂练习

(1)添加CSS样式表

在WEB-INF里创建css目录,在里面创建样式文件index.css,负责首页的样式(元素全部居中,设置页面背景颜色,去掉超链接的下划线……)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

(2)添加JavaScript脚本

在WEB-INF里创建js目录,在里面创建脚本文件check.js,负责登录页面的非空校验(先进行用户名非空校验,后进行密码非空校验)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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

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

获取字符串控制器 - GetStringController
在这里插入图片描述

package net.hf.spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 功能:获取字符串控制器
 * 作者:hf
 * 日期:2023年03月21日
 */
@Controller
public class GetStringController {
    @GetMapping("/getString")
    @ResponseBody // 响应正文注解,表明返回普通字符串而不是返回逻辑视图名
    public String getString() {
        return "Spring MVC真好玩~";
    }
}

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

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

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

设置返回字符串采用的编码
在这里插入图片描述

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

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

思考题:能否让返回字符串有点样式?
设置返回普通文本,返回字符串不认网页标签
在这里插入图片描述

设置返回网页文本,返回字符串才认网页标签
在这里插入图片描述

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

1、创建用户实体类

创建net.hf.spring.bean包,然后在包里创建User类
在这里插入图片描述

用户实体类对应用户表
在这里插入图片描述

package net.hf.spring.bean;

import java.util.Date;

/**
 * 功能:用户实体类
 * 作者:hf
 * 日期:2023年03月21日
 */
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控制器

获取JSON控制器 - GetJsonController
在这里插入图片描述

package net.hf.spring.controller;

import net.hf.spring.bean.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

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

/**
 * 功能:获取JSON控制器
 * 作者:hf
 * 日期:2023年03月21日
 */
@RestController // @RestController是@Controller和@ResponseBody的结合
public class GetJsonController {
    @GetMapping(value = "/getJson", produces = "application/json; charset=utf-8")
    public User getJson() {
        // 创建用户对象
        User user = new User();
        // 设置用户对象属性
        user.setId(1);
        user.setUsername("萌萌哒");
        user.setPassword("123456");
        user.setTelephone("13890903456");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        // 返回用户对象(按照请求映射注解的参数设置转换成JSON)
        return user;
    }

    @GetMapping(value = "/getJsonArray", produces = "application/json; charset=utf-8")
    public List<User> getJsonArray() {
        // 创建用户列表
        List<User> users = new ArrayList<>();

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

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

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

        // 返回用户列表
        return users;
    }
}

3、给项目添加JSON依赖

在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
在这里插入图片描述

需要将刚才新添加的依赖要放到输出目录
在这里插入图片描述

添加之后,lib里就有了对json支持的依赖包
在这里插入图片描述

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

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

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

1、创建获取XML控制器

获取XML控制器 - GetXmlController

在这里插入图片描述

package net.hf.spring.controller;

import net.hf.spring.bean.User;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

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

/**
 * 功能:获取XML控制器
 * 作者:hf
 * 日期:2023年03月21日
 */
@RestController
public class GetXmlController {
    @GetMapping(value = "/getXml", produces = "application/xml; charset=utf-8")
    public List<User> getXml() {
        // 创建用户列表
        List<User> users = new ArrayList<>();

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

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

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

        // 返回用户列表
        return users;
    }
}

2、项目添加XML的依赖

在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/625221.html

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

相关文章

excel学习--开始界面控制台讲解

1、部分基础控制台讲解 上面的那行表示垂直居中 下面的那行表示水平居中 上面设置表格内容的表现方向 下面设置表格内容的缩进量 合并单元格的两种主要方式即左图所示&#xff0c;一种是跨越合并&#xff0c;另一种是合并单元格&#xff0c;跨越合并只能进行列合并&#xff0c…

09 - Linux进程层次分析

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. 详解Linux进程组1.1 Linux进程组1.2 进程组示例程序1.3 编程实验&#xff1a;Linux进程组1.4 深入理解进程组1.4.1 进程组标识设置技巧…

【算法题解】35. 两两交换链表中的节点

这是一道 中等难度 的题 https://leetcode.cn/problems/swap-nodes-in-pairs/ 题目 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff…

LVS负载均衡群集及VS/NAT部署

一、企业群集应用概述 1.群集的含义 群集&#xff08;Cluster&#xff09;&#xff0c;又称集群。由多台主机构成&#xff0c;但对外只表现为一个整体&#xff0c;只提供一个访问入口&#xff08;域名或IP地址&#xff09;&#xff0c;相当于一台大型计算机。 但是在互联网应…

htmlCSS-----元素类型

目录 前言&#xff1a; 元素类型 1.块级元素 2. 行内元素 3. 行内块元素 前言&#xff1a; 今天我们就学习CSS中的元素的类型&#xff0c;了解网页元素类型的相关性质&#xff0c;有助于我们去对网页进行排版处理。下面就一起去看看吧。 元素类型 常见元素类型有&#xff…

又壕又实惠的 AI 训练来了,Hugging Face 第一的 LLM 大模型 Falcon 40B 纳入亚马逊云科技服务

出品 | CSDN 云计算 2023 年&#xff0c;几乎是 AI 爆炸式发展的一年。各类大模型接踵而至&#xff0c;全行业都将 AIGC 融入生产流程&#xff0c;以提升效率。最近&#xff0c;阿联酋首都阿布扎比的科研中心 TII&#xff08;Technology Innovation Institute&#xff09;拥有 …

制氧机语音芯片新方案,高品质低功耗NV040C语音IC

在医疗设备行业中&#xff0c;制氧机是一种常见的设备&#xff0c;尤其在之前疫情期间&#xff0c;制氧机甚至成为了医院中不可或缺的设备之一。而在制氧机中加入语音芯片的语音方案&#xff0c;则可以进一步提高其人机交互的体验&#xff0c;增强其功能和可靠性。在制氧机中&a…

超超超详细C++入门总结

C入门知识总结 1.什么是C2. C关键字(C98)3.命名空间3.1命名空间定义1.命名空间的普通定义2.命名空间的嵌套定义3.同一个工程中允许存在多个相同名称的命名空间&#xff0c;编译器最后会合成同一个命名空间 3.2命名空间的使用1.加命名空间名称以及作用域限定符2.使用using将命名…

Flume事务

Flume事务 在Flume中一共有两个事务 Put事务&#xff1a;在Source组件和Channel组件之间&#xff0c;保证Source组件到Channel组件之间数据传递的可靠性。 take事务&#xff1a;在Channel组件和Sink组件之间&#xff0c;保证channel组件到Sink组件之间数据传输的可靠性。Put事务…

算法拾遗三十二bfprt算法,蓄水池算法

算法拾遗三十二bfprt算法&#xff0c;蓄水池算法 在无序数组中求第k小的数快排解法bfprt解法 练习题目蓄水池算法bfprt 应用 在无序数组中求第k小的数 快排解法 // 改写快排&#xff0c;时间复杂度O(N)// k > 1public static int minKth2(int[] array, int k) {int[] arr …

HNU计算机图形学-作业一

任务一&#xff1a;创建交互式三维场景 前言 完整工程文件 具体运行环境配置看这个栏目的第一篇文章 专选课计算机图形学的第一次作业&#xff0c;老师是第一次给本科生上课&#xff0c;用的作业是香港中文大学的计算机图形学的作业内容&#xff08;老师就是这个学校毕业&a…

软件测试方法 -- 等价类边界值

测试用例的定义 测试用例是为了特定的目的而设计的一组测试输入、执行条件和预期的结果&#xff0c;以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果&#xff0c;他是指导测试工作进行的依据。 下面我们介绍几种常用的黑盒测试方法 等价类划分法 定…

微信小程序实用工具——渐变色按钮(一)

今日推荐&#x1f481;‍♂️ 2023五月天演唱会&#x1f3a4;&#x1f3a4;&#x1f3a4;大家一起冲冲冲&#x1f3c3;‍♂️&#x1f3c3;‍♂️&#x1f3c3;‍♂️ 文章目录 今日推荐&#x1f481;‍♂️&#x1f3d6;️开头介绍 &#x1f468;‍&#x1f3eb;1️⃣ 按钮一…

【数学建模】 非线性规划+二次规划

非线性规划概念和实例 如果目标函数或约束条件中包含非线性函数&#xff0c;就称这种规划问题为非线性规划问题。一般说来&#xff0c;解非线性规划要比解线性规划问题困难得多。而且&#xff0c;也不象线性规划有单纯形法这一通用方法&#xff0c;非线性规划目前还没有适于各…

大咖驾到:XR云新未来|弹性算力赋能可交互、沉浸式商业实践

活动背景 XR市场作为数字化经济的重要发展方向&#xff0c;成为各大企业竞相布局的焦点。技术的进步和应用场景的扩大&#xff0c;为企业抢占XR市场先机、实现商业化带来了巨大机遇&#xff0c;同时也带来了技术挑战和成本压力。如何在竞争激烈的市场中脱颖而出&#xff0c;成…

【每日挠头算法题(3)】字符串解码|数组中重复的数字

每日挠头算法题 一、字符串解码思路&#xff1a;栈具体代码如下&#xff1a; 二、数组中重复的数字思路1&#xff1a;计数法具体代码如下&#xff1a; 思路2&#xff1a;原地交换法具体代码如下&#xff1a; 总结 一、字符串解码 点我直达~ 思路&#xff1a;栈 这道题怎么看都…

python 爬虫某东网商品信息 | 没想到销量最高的是

哈喽大家好&#xff0c;我是咸鱼 好久没更新 python 爬虫相关的文章了&#xff0c;今天我们使用 selenium 模块来简单写个爬虫程序——爬取某东网商品信息 网址链接&#xff1a;https://www.jd.com/ 完整源码在文章最后 元素定位 我们需要找到网页上元素的位置信息&#x…

Spring内容

(195条消息) 超高频面试题系列之----Spring全家桶&#xff08;面试亲测&#xff09;_spring全家桶面试题_zyyn_未来可期的博客-CSDN博客 1、推断构造方法&#xff1a; &#xff08;1&#xff09;如果只有一个构造方法&#xff0c;没问题就用这个 &#xff08;2&#xff09;如…

Java学习路线(26)——XML与设计模式

一、XML &#xff08;一&#xff09;XML的概念&#xff1a; XML是可扩展标记语言&#xff08;Extensible Markup Language&#xff09;&#xff0c;一种数据表示形式&#xff0c;可以描述非常复杂的数据结构&#xff0c;常用于传输和存储数据。 &#xff08;二&#xff09;XM…

day50|动态规划11-买卖股票的最佳实际3-4(限制买卖次数的情况)

123.买卖股票的最佳时机III 确定递归函数&#xff0c;当前的每一个状态都由前一天决定。 以dp[i][1]和dp[i][2]为例讲解递归函数的含义&#xff1a; dp[i][1]max(dp[i-1][1],dp[i-1][0]-prices[i]) 含义&#xff1a; 第i天的股票第一天持有状态有两种&#xff0c;一种是前一…