Spring MVC

在这里插入图片描述

hi,今天为大家带来Spring MVC相关知识

文章目录

  • 🌻1.什么是Spring MVC?
    • 🍬1.1什么是MVC?
    • 🍬1.2MVC和Spring MVC的关系
  • 🌻2.Spring MVC的意义
    • 🍬2.1Spring MVC和Spring Boot区别
  • 🌻3.Spring MVC的三大要点
    • 🍬3.1Spring MVC创建和连接
      • 🧊3.1.1 创建Spring MVC项目
      • 🧊3.1.2实现客户端和程序之间的连接
        • 🍧3.1.2.1@RequestMapping,@PostMapping,@GetMapping
    • 🍬3.2获取参数
      • 🧊3.2.1获取单个参数
      • 🧊3.2.2 获取多个参数
      • 🧊3.2.3 获取对象
      • 🧊3.2.4表单传递参数
      • 🧊3.2.5 重命名后端参数
      • 🧊3.2.6@RequestBody接收JSON对象
      • 🧊3.2.7获取URL参数
      • 🧊3.2.8上传文件
      • 🧊3.2.9获取Cookie
      • 🧊3.2.10获取Session
      • 3.2.11 获取Header
    • 🍬3.3返回数据
      • 🧊3.1返回静态页面
      • 🧊3.2返回json对象
      • 🧊3.3请求转发VS请求重定向

🌻1.什么是Spring MVC?

Spring MVC是一个基于Servlet API构建的Web框架,是一种基于MVC(模型-视图-控制器)模式的框架,用于构建Web应用程序。它是Spring框架的一部分,提供了一个容易扩展和灵活的方式来开发Web应用程序。
Spring MVC特性:
1.Spring MVC是一个Web框架
2.Spring MVC是基于Servlet api构建的

🍬1.1什么是MVC?

MVC,全称Model Version Controller,模型视图控制器,是一种软件架构模式
MVC执行流程
图片版本
在这里插入图片描述
文字版本
1.用户发出请求先到Controller
2.Comtroller把请求转发给Model层
3.Model处理请求并将数据返回给Controller
4.Controller继续转发数据给View
5.View将数据可视化返回给用户

Controller(控制器)是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据,控制⽤户输⼊,并向模型发送数据.
模型(Model):负责数据管理和业务逻辑,通常包括数据库操作、数据验证、数据转换等。
视图(View):负责呈现数据给用户,通常包括用户界面、报表、图表等。

🍬1.2MVC和Spring MVC的关系

MVC是一种思想,Spring MVC是MVC思想的具体实现

🌻2.Spring MVC的意义

⼤部分的 Java 项⽬都是基于 Spring(或 Spring Boot)的,Spring 的核⼼就是 SpringMVC,也就是说 Spring MVC 是 Spring 框架的核⼼模块,所以Spring MVC很重要

🍬2.1Spring MVC和Spring Boot区别

Spring MVC是Spring Framework的一部分,它是一个基于Servlet的Web框架,用于开发Web应用程序。它提供了一种按照模型-视图-控制器(MVC)模式来组织代码的方式,使得Web应用程序的开发更加灵活和可维护。在开发过程中,需要手动配置各种依赖项和设置。

Spring Boot是一个基于Spring Framework的快速开发框架,它的目的是简化Spring应用程序的开发、部署和运行。它提供了自动配置、约定优于配置(Convention over Configuration)和快速启动等功能,使得开发者无需手动配置和管理依赖项,只需添加所需的依赖项即可快速启动应用程序。

Spring Boot在某些方面比Spring MVC更加方便和简化,尤其是在快速开发和部署方面。但是,Spring MVC的灵活性更高,它可以更好地满足定制化需求

🌻3.Spring MVC的三大要点

连接功能:用户和服务器程序连接
获取参数:用户访问带的参数后端可以获取
返回数据:服务器处理好请求,返回给用户

🍬3.1Spring MVC创建和连接

🧊3.1.1 创建Spring MVC项目

Spring MVC项目就是基于Spring Boot项目多了一个Spring Web依赖
在这里插入图片描述

🧊3.1.2实现客户端和程序之间的连接

🍧3.1.2.1@RequestMapping,@PostMapping,@GetMapping

@RequestMapping既可以修饰类又可以修饰方法,一般来说方法是一定要加这个注解的,类可加可不加

package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** Created with IntelliJ IDEA.* Description:* User: WHY* Date: 2023-08-04* Time: 17:27*/
@RestController
@RequestMapping("/test")
public class TestController {@RequestMapping("/hi")public String sayHi(){return "hi ,spring mvc";}}

运行结果
在这里插入图片描述
那么方法可以写多个路径吗?可以的
在这里插入图片描述

在这里插入图片描述
默认情况下@RequestMapping既支持get请求又支持post请求

我们来验证一下,这个时候就得请出我们的老朋友了postman
在这里插入图片描述
在这里插入图片描述
由此可见上述结论正确
那么如果想要一个post请求呢?
三种方法
🥝1.采用@RequestMapping("/xxx)
在这里插入图片描述

🥝2.@RequestMapping(value = “/xxx”,method = RequestMethod.POST)

 @RequestMapping(value = "/hii",method = RequestMethod.POST)public String sayhi2(){return "zezeze";}

method规定了请求的方法为post
在这里插入图片描述
这里的post请求是不支持get请求的,因为默认浏览器的URL都被封装为get请求
在这里插入图片描述

🥝3.@PostMapping(“/xxx”)

@PostMapping("/h")public String sayhi(){return "wyb";}

在这里插入图片描述
如果想要一个get请求呢?

  1. @RequestMapping(“/xxx”)
    在这里插入图片描述

2.@RequestMapping(value=“/xxx”,method=RequestMethod.GET)_

 @RequestMapping(value = "/hiii",method = RequestMethod.GET)public String sayhi3(){return "zezeze";}

在这里插入图片描述

3.@GetMapping(“/xxx”)

@GetMapping("/hello")public String saihi4(){return "who";}

在这里插入图片描述

🍬3.2获取参数

🧊3.2.1获取单个参数

比如要获取姓名

package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;/*** Created with IntelliJ IDEA.* Description:* User: WHY* Date: 2023-08-04* Time: 20:02*/
@RestController
@RequestMapping("/u")
public class TestController2 {@RequestMapping("/h")public String getName(HttpServletRequest request){return "Name"+request.getParameter("name" );}
}

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

因为Spring MVC是基于servlet实现的,所以获取参数可以使用servlet的那一套方法获取,但是有了Spring MVC,就有了更简单的写法

package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletRequest;/*** Created with IntelliJ IDEA.* Description:* User: WHY* Date: 2023-08-04* Time: 20:02*/
@RestController
@RequestMapping("/u")
public class TestController2 {@RequestMapping("/h")public String getName(HttpServletRequest request){return "Name"+request.getParameter("name" );}@RequestMapping("/b")public String getName2(String name){return "Name"+name;}
}

在这里插入图片描述
也是没有问题的

🧊3.2.2 获取多个参数

比如要获取姓名和年龄

@RequestMapping("/d")public String get(String name,Integer age){return "Name"+name+"Age"+age;}

在这里插入图片描述

🧊3.2.3 获取对象

package com.example.demo.controller;import com.example.demo.model.User;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** Created with IntelliJ IDEA.* Description:* User: WHY* Date: 2023-08-04* Time: 20:21*/
@RestController
@RequestMapping
public class UserController {@RequestMapping("/getUser")public User getUser(User user){return user;}
}

在这里插入图片描述
啥都不传递的时候会发现都是该类型的默认值
现在进行传参
在这里插入图片描述
我们在浏览器拿到结果的时候发现一个问题
浏览器显示的是json对象,我们在后端没有手动的转换对象
在servlet阶段,我们需要使用jQuery的objectMappper对象的方法将Java对象转换为json字符串,然后返回给前端,现在有了框架,框架为我们自动转换为json格式返回给前端~~
如果返回的是HTML格式,就会直接返回成HTML,不会再自动转换
举个例子

 @RequestMapping("/html")public String html(){return "<h1>hello<h1>";}

在这里插入图片描述
抓包看看
在这里插入图片描述
类型就是text/plain,也就是text/html

🧊3.2.4表单传递参数

采用postman 演示
在这里插入图片描述
传递成功,后端返回的依然是json格式

🧊3.2.5 重命名后端参数

当前端传递过来的时候名字和后端程序员想起的名字不一样,这个时候可以采用重命名的方式,使用注解@RequestParam
在这里插入图片描述
这里意味着前端传递过来的参数是n,后端不想用n,起名用了name,但是在浏览器的URL上必须用n,不然会报错

在这里插入图片描述
在这里插入图片描述
有一个问题,为什么其他的不传参数时不会报错,这里就会报错?
是因为这个@RequestParam的源码
在这里插入图片描述
required这里,默认必须有参数,我们改一下
在这里插入图片描述

在这里插入图片描述
当不传参数的时候,不会报错

🧊3.2.6@RequestBody接收JSON对象

对于前端来说,对象和json对象是两个不同的概念,对象对于前端来说就是一些属性 ,最后后端返回给前端的时候就是json,当前端传递的是json时,返回的时候拿不到结果了,我们拿postman验证一下
在这里插入图片描述
点击发送根本拿不到了,打开fiddler抓包工具看看
在这里插入图片描述

那么后端要咋样获取前端的json对象呢?

   @RequestMapping("/transjson")public User transjson(@RequestBody User user){return user;}
}

采用@RequestBody 这个注解

在这里插入图片描述
拿到了
再抓包看看

在这里插入图片描述
没有问题,我们也可以发现前端传递json对象时返回的格式也是json对象

🧊3.2.7获取URL参数

不采用querystring的方法获取属性,而是跟在路由之后,/后跟,采用@PathVariable注解,来举个例子

 /*** 以获取文章id为例*/@RequestMapping("/article/{id}")public Integer article(@PathVariable("id") Integer aid){return aid;}

在这里插入图片描述

在这里插入图片描述
但是注意,当自定义的名字和注解或者和路由注解的名字一样的时候,就可以省略@PathVariable后面的括号

@RequestMapping("/article/{aid}")public Integer article2(@PathVariable Integer aid){return aid;}

在这里插入图片描述

在这里插入图片描述
看到返回的依然还是json对象
当要获取URL的多个参数时,这样写

    @RequestMapping("/article/{aid}/{name}")public String  article2(@PathVariable Integer aid,@PathVariable String name){return "id"+aid+"name"+name;}

在这里插入图片描述

🧊3.2.8上传文件

采用@RequestPart注解,Multipartfile接收
采用transferto方法保存到路径

package com.example.demo.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestPart;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;import java.io.File;
import java.io.IOException;/*** Created with IntelliJ IDEA.* Description:* User: WHY* Date: 2023-08-05* Time: 8:43*/
@RestController
@RequestMapping("/hhh")
public class UserController {@RequestMapping("/upfile")public String upload(@RequestPart("myfile")MultipartFile file) throws IOException {String path="D:\\image\\img.png";//保存文件file.transferTo(new File(path));return path;}}

上传文件的时候只能用post请求,因为get请求的文件流比较小,post支持的文件流比较大,上传文件的时候文件流是很大的

在这里插入图片描述

在这里插入图片描述
文件上传成功
但是我们保存的图片名字被限制了.根据上述代码假如有100个人上传图片,因为 名字一样,前99个被覆盖,还有可能用户上传的是一个视屏,后来存入格式命名为.png,这也是不对的,所以需要源文件的后缀名

    public String upload(@RequestPart("myfile")MultipartFile file) throws IOException {//生成唯一id,采用UUIDString name= UUID.randomUUID().toString().replace("-","");//得到源文件后缀名name+=(file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")));String path="D:\\image\\"+name;//保存文件file.transferTo(new File(path));return path;}

在这里插入图片描述
在这里插入图片描述
每一次地址都不一样,图片命名也不一样,不会被覆盖

在这里插入图片描述

UUID是全球唯一id,等于MAC地址+随机种子+加密算法,是一个十六进制三十二位的数

🧊3.2.9获取Cookie

使用注解@CookieValue

 @RequestMapping("/getcookie")public String getcookie(@CookieValue("java") String cookie){return cookie;}

在这里插入图片描述
什么都没有获取到就会报错,
在这里插入图片描述

因为它的源码也是默认有参数,我们设定一下,就不会报错了
在这里插入图片描述
在这里插入图片描述
现在来设定一下cookie
在这里插入图片描述
在这里插入图片描述

🧊3.2.10获取Session

session来自于服务器,我们要先存session,才能取seesion

//存sessionpublic static  String Sessionkey="session";@RequestMapping("/setsession")public String setsession(HttpServletRequest request){HttpSession session=request.getSession();if(session!=null){session.setAttribute("Sessionkey","王麻子");return "success";}else{return "fail";}}

获取session,采用注解@SessionAttribute

@RequestMapping("/getsession")public String getSessionkey(@SessionAttribute(value="Sessionkey",required = false)String session){return session;}

结果
在这里插入图片描述

在这里插入图片描述

3.2.11 获取Header

采用@RequestHeader注解

    @RequestMapping("/header")public String getheader(@RequestHeader("User-Agent") String userAgent){return "userAgent"+userAgent;}

在这里插入图片描述

🍬3.3返回数据

🧊3.1返回静态页面

当默认情况下只加@Controller注解的时候,返回的是一个静态页面

@Controller
public class TestController {@RequestMapping("/hi")public String hi(){return "hello";}
}

在这里插入图片描述
在这里插入图片描述
这个代码默认情况下返回的是hello.html页面,在resources下没有找到这个页面,所以报错
在static下创建一个hello.html
在这里插入图片描述

在这里插入图片描述

@Controller
public class TestController {@RequestMapping("/hi")public String hi(){return "hello.html";}
}

在这里插入图片描述

返回的是静态页面的结果,如果想要打印hello.html这个语句,加注解@ResponseBody
在这里插入图片描述
在这里插入图片描述

🧊3.2返回json对象

 @RequestMapping("/json")@ResponseBodypublic HashMap<String, String> method() {HashMap<String, String> map = new HashMap<>();map.put("Java", "Java Value");map.put("Oracle", "MySQL Value");map.put("Spring", "Spring Value");return map;}

在这里插入图片描述

🧊3.3请求转发VS请求重定向

举个例子:李华想吃辣条,告诉爸爸想吃辣条.爸爸有两种做法,第一种:可以选择帮李华去买
第二种;可以选择把钱给李华,让李华自己去买
第一种就叫做请求转发,也就是服务器帮着干
第二种就是请求重定向,也就是客户端自己跳转到另一个网址自己干

1.请求重定向(redirect):将请求重新定位到资源;
2.请求转发(forward)服务器端转发
3.请求重定向地址发⽣变化,请求转发地址不发⽣变化
4.请求重定向与直接访问新地址效果一样,不存在原来的外部资源不能访问;请求转发服务器端转发有可能造成原外部资源不能访问(对应上述的例子,李华自己买辣条知道自己口味,他爹买可能买不到李华喜欢的)

区别:

🐷处理方式不同:
重定向是通过将请求发送到另一个URL来完成的,客户端将收到一个新的响应,浏览器将向新的URL发出请求并在地址栏中显示新的URL。重定向是一种客户端行为,它是通过HTTP响应码实现的,例如302、307或303。
请求转发是在服务器上进行的,当服务器接收到请求并处理它时,它直接将请求发送到另一个资源(Servlet或JSP),该资源将处理并发送响应。请求转发对客户端是透明的,客户端只知道最初请求的URL,不知道服务器之间的转发操作。
🐷对浏览器地址栏的影响不同:
在重定向过程中,浏览器将会看到URL的变化,因为浏览器地址栏中将显示一个新的URL。这意味着即使用户保存旧URL,也不能保证它们仍然有效,因为它们将被重定向到新的URL。
在请求转发过程中,浏览器地址栏中显示的URL不会发生变化,因为客户端不知道服务器之间的转发操作。
🐷对数据传递的影响不同:
在重定向过程中,数据必须通过URL传递,因为浏览器会向新的URL发送一个新的请求。因此,如果需要传递大量的数据,使用重定向不是一个好的选择。
在请求转发过程中,数据可以在服务器之间共享,因为请求仍然是相同的请求,并且在服务器之间传递。因此,如果需要传递大量的数据,使用请求转发可能更加有效。

今天的讲解就到这里.下期见,拜拜~
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用PointNet分类3D点云

在本教程中&#xff0c;我们将学习如何训练PointNet进行分类。 我们将主要关注数据和训练过程&#xff1b; 展示如何从头开始编码 Point Net 的教程位于此处。 本教程的代码位于这个Github库中&#xff0c;我们将使用的笔记本位于这个Github库中。 一些代码的灵感来自于这个Git…

wordpress 打开缓慢处理

gravatar.com 头像网站被墙 追踪发现请求头像时长为21秒 解决方案一 不推荐&#xff0c;容易失效&#xff0c;网址要是要稳定为主&#xff0c;宁愿头像显示异常&#xff0c;也不能网址打不开 网上大部分搜索到的替换的CDN网址都过期了&#xff0c;例如&#xff1a;gravatar.du…

知识付费系统开发:构建高效智能的付费内容平台

随着数字化时代的来临&#xff0c;知识付费正迅速崭露头角&#xff0c;为知识创作者和求知者带来了全新的商机。在这个背景下&#xff0c;开发一款高效智能的知识付费系统成为了一项重要的任务。本文将深入探讨如何基于Python编程语言和相关技术构建一个智能的知识付费内容平台…

备份容灾哪家好怎么样

数字化时代&#xff0c;数据安全是我们不容忽视的问题。云呐容灾备份系统不仅提供了强大的数据保护功能&#xff0c;而且操作简单&#xff0c;使用方便。无论你是企业管理员&#xff0c;还是个人用户&#xff0c;都可以轻松上手。它还提供了丰富的报告和监控功能&#xff0c;让…

Unity 实现字幕打字效果

Text文本打字效果&#xff0c;TextMeshPro可以对应参考&#xff0c;差距不大&#xff0c;改改参数名就能用。改脚本原本被我集成到其他的程序集中&#xff0c;现在已经分离。 效果 实现功能 1.能够设置每行能够容纳的字数和允许的冗余 2.打字效果 3.每行打完上移 4.开头进入&…

springboot(1)

精要&#xff1a; 自动配置&#xff1a;针对很多Spring应用程序常见的应用功能&#xff0c;Spring Boot能自动提供相关配置。 起步依赖&#xff1a;告诉Spring Boot需要什么功能&#xff0c;它就能引入需要的库。 命令行界面&#xff1a;这是Spring Boot的可选特性&#xff0…

嵌入式开发学习(STC51-18-LCD液晶显示)

内容 在LCD1602液晶上显示字符信息&#xff1b; LCD1602介绍 简介 1602液晶也叫1602字符型液晶&#xff0c;它能显示2行字符信息&#xff0c;每行又能显示16个字符&#xff1b; 它是一种专门用来显示字母、数字、符号的点阵型液晶模块&#xff1b; 它是由若干个5x7或者5x…

座舱开发的“道”与“术”

前言&#xff1a; 近年来&#xff0c;随着汽车“新四化”浪潮的兴起&#xff0c;软件定义已成为产业共识&#xff0c;将深度参与到整个汽车的定义、开发验证销售以及服务全过程。一方面确保软件可升级&#xff0c;跨车型、软件甚至跨车企软件重用。另一方面对于硬来讲&#xf…

任务 13、MidJourney种子激发极致创作,绘制震撼连贯画作

13.1 任务概述 通过本次实验任务&#xff0c;学员将深入了解Midjourney种子的概念和重要性&#xff0c;以及种子对生成图像的影响。他们将学会在Midjourney平台中设置种子值并调整其参数&#xff0c;以达到所需的效果。此外&#xff0c;任务还详细介绍了Midjourney V4.0版本中…

UNIX网络编程——UDP协议,CS架构

目录 一.socket创建通信的套接字 二.IPv4地址结构 三.通用地址结构 四. 两种地址结构的使用场合 五.sendto发送数据 六.bind固定地址信息​编辑 七.recvfrom接受UDP的消息​编辑 一.socket创建通信的套接字 二.IPv4地址结构 三.通用地址结构 四. 两种地址结构的使用场合…

【Linux】结合Python 简易实现监控公司网站,邮件发送异常

目录 背景 实现思路 邮件4小时内只会发送一次&#xff0c;如果执行了发送邮件的脚本&#xff0c;就使用sed命令将对应的调用代码置为无效 请求脚本 Python邮件发送脚本 定时任务设置 恢复邮件发送能力脚本 资料获取方法 背景 由于一些原因&#xff0c;博主负责测试的网…

入门Echarts数据可视化:从基础到实践

目录 引言数据可视化的重要性Echarts资源与拓展 Echarts简介及开发准备什么是EchartsEcharts的特点与优势安装Echarts引入Echarts库 第一个图表使用Echarts绘制一个简单的柱状图数据准备与图表配置数据格式要求图表标题与标签设置 实践与性能优化提升图表渲染性能的技巧响应式设…

多态总结

什么是多态&#xff1f; 所谓多态&#xff0c;就是同一个操作&#xff0c;作用在了不同的对象上&#xff0c;就会有不同的解释&#xff0c;进而产生不同的执行结果。使用时&#xff0c;是采用父类指针指向子类对象的方法。其中&#xff0c;重载和重写是常见的实现多态的手段。…

深入理解机器学习与极大似然之间的联系

似然函数&#xff1a;事件A的发生含着有许多其它事件的发生。所以我就把这些其它事件发生的联合概率来作为事件A的概率&#xff0c;也就是似然函数。数据类型的不同&#xff08;离散型和连续性&#xff09;就有不同的似然函数 极大似然极大似然估计方法&#xff08;Maximum Li…

sql server 删除指定字符串

replace方法 update #test set FIVCODEreplace(FIVCODE,440,) WHERE SOURCEFENTRYID140728

无数资深果粉称之为 Mac 装机必备软件的 ——CleanMyMac X

它就是被无数资深果粉称之为 Mac 装机必备软件的 ——CleanMyMac X。或许你没用过它&#xff0c;但是大概率你身边一定有它的资深用户&#xff0c;作为 MacPaw 旗下的老牌清理软件&#xff0c;在全球已经拥有超过 2500 万次的下载量。 它有着五大强悍的功能&#xff0c;可以帮…

浅谈智慧消防助力现代社会火灾防控

安科瑞 华楠 摘 要&#xff1a;随着我国经济水平的不断提高&#xff0c;科学技术取得了长足进步。科学技术的进步推动着社会不断前进&#xff0c;改变了各行各业的人们的生活。随着各种新型的技术尤其是人工智能技术的出现&#xff0c;社会进入了智能化时代。消防作为维护我们…

淘宝整店商品如何批量获取?获取淘宝店铺所有商品接口item_search_shop

在竞争日益激烈的电商行业&#xff0c;不少商家出于以下的考虑&#xff0c;想要实现一键批量获取淘宝店铺的所有商品。 竞争分析&#xff1a;通过获取某个店铺内的所有商品信息&#xff0c;可以对竞争对手的产品进行全面的了解和分析。可以了解到对手的产品种类、价格、销量等情…

【福建事业单位-资料分析】01 速算技巧-基期与现期

【福建事业单位-资料分析】01 速算技巧-基期与现期 一、速算技巧&#xff08;基于选项的速算&#xff09;1.1 计算类别——截位直除练习总结 二、速算技巧-比较类-分数比较2.1 一大一小&#xff08;一大/一小&#xff09;2.2 同大同小①分子分母都变大&#xff0c;保留两位直接…

LVS工作环境配置

一、LVS-DR工作模式配置 模拟环境如下&#xff1a; 1台客户机 1台LVS负载调度器 2台web服务器 1、环境部署 &#xff08;1&#xff09;LVS负载调度器 yum install -y ipvsadm # 在LVS负载调度器上进行环境安装 ifconfig ens33:200 192.168.134.200/24 # 配置LVS的VIP…