SpringMVC Day02 : 请求方式

news2024/11/15 7:07:38

前言

欢迎阅读 Spring MVC 系列教程的第二篇文章!在上一篇文章中,我们介绍了 Spring MVC 的基本概念和使用方法。今天,我们将深入探讨 Spring MVC 中不同的请求方式,以及如何在你的应用程序中正确地处理它们。

在 Web 开发中,客户端向服务器发送请求时,可以使用不同的请求方式来表达不同的操作意图。常见的请求方式包括 GET、POST、PUT、DELETE 等。每种请求方式都有其特定的语义和用途,因此在开发过程中,我们需要根据实际需求选择合适的请求方式,并在服务器端进行相应的处理。

Spring MVC 提供了强大而灵活的机制来处理各种类型的请求方式。无论你是构建一个简单的表单提交页面还是创建一个 RESTful API,Spring MVC 都能够满足你的需求。在本文中,我们将详细介绍 Spring MVC 中处理不同请求方式的方法,并提供实际示例来帮助你更好地理解和应用这些概念。

如果你是一个初学者,或者对 Spring MVC 的请求方式处理机制感到困惑,别担心!本文将从基础知识开始,逐步引导你了解每种请求方式的特点和用途。我们将涵盖 GET 和 POST 请求的处理,以及如何通过注解和配置文件来定义请求映射和处理方法。

一、前期准备

1、新建项目,结构如下

2、添加依赖
    <dependencies>
    
        <!-- springmvc 依赖,会将spring的核心包一并添加进来 -->
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.3.23</version>
        </dependency>
     
 
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.30</version>
        </dependency>
 
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.4.5</version>
        </dependency>
 
 
 
    </dependencies>
 3、在 jsp 包下新建一个 index.jsp 页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>welcome to springmvc</h1>
</body>
</html>

简单的输出一句话即可。

4、配置 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">

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <!-- 所有的请求都经过核心控制器,但是不处理 static 是无感知的 -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

通过以上配置,当有请求到达应用的根路径时,DispatcherServlet 将会接收到该请求,并根据配置的映射规则将请求分发给相应的 Controller 进行处理。这样就实现了请求的转发和处理。

需要注意的是,这段配置只是 Spring MVC 的一部分,还需要进一步配置和编写 Controller等组件来完整地搭建一个可用的 Spring MVC 应用。

 5、新建 dispatcher-servlet.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">


    <!-- 扫描 -->
    <context:component-scan base-package="edu.nf.ch02"/>
    <!-- 启用注解处理器 -->
    <mvc:annotation-driven/>
    <!-- 视图解析器 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

这是一个典型的 Spring MVC 配置文件,它使用 XML 格式来定义 Spring MVC 的相关配置。让我逐行解释一下每个元素的作用:

  1. contextmvc:命名空间的别名,简化了后续元素的引用。
  2. <context:component-scan>:指定要扫描的基础包路径,用于自动注册 Spring Bean。
  3. <mvc:annotation-driven>:启用注解处理器,用于处理带有注解的控制器类和方法。
  4. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">:定义视图解析器,用于将逻辑视图名解析为具体的视图对象。
    • prefix 属性:指定 JSP 文件的前缀路径,通常是 /WEB-INF/jsp/
    • suffix 属性:指定 JSP 文件的后缀,通常是 .jsp

通过这个配置文件,Spring MVC 将能够自动扫描指定包路径下的控制器类,并根据注解进行请求映射和处理。同时,它还配置了视图解析器,使得在控制器方法中返回的逻辑视图名能够正确解析为对应的 JSP 视图。

二、get 请求,使用 @RequestMapping 注解

1、在 controller 包下,新建一个 RequestMapController 控制器

@Controller
public class RequestMapController {

    @RequestMapping(value = "/getUser")
    public ModelAndView getUser() {
        return new ModelAndView("index");
    }

}

具体来说,这段代码的作用如下:

  1. @Controller 注解标识这个类是一个控制器类,它告诉 Spring 这个类需要被扫描和管理。

  2. @RequestMapping 注解用于将请求映射到处理方法上。在这里,value = "/getUser" 表示当请求路径为 "/getUser" 时,会调用该方法进行处理。你可以根据实际需求修改映射的路径。

  3. getUser() 方法返回一个 ModelAndView 对象,用于指定要渲染的视图和模型数据。在这里,new ModelAndView("index") 表示要渲染名为 "index" 的视图。你可以根据实际需求修改要返回的视图名称。

通过以上代码,当有请求路径为 "/getUser" 的请求到达时,Spring MVC 将会调用 getUser() 方法进行处理,并将返回的视图名称 "index" 渲染给客户端。

2、@RequestMapping 注解的第二种使用方式
@Controller
public class RequestMapController {

    @RequestMapping(value = "/getUser", method = RequestMethod.GET)
    public ModelAndView getUser() {
        return new ModelAndView("index");
    }

}

通过添加 method = RequestMethod.GET 参数,进一步限定了请求的 HTTP 方法为 GET。

具体来说,这段代码的作用如下:

  1. @RequestMapping 注解用于将请求映射到处理方法上。在这里,value = "/getUser" 表示当请求路径为 "/getUser" 时,会调用该方法进行处理。

  2. method = RequestMethod.GET 参数指定了请求的 HTTP 方法为 GET。这意味着只有使用 GET 方法发送的请求才会被映射到该方法进行处理,其他 HTTP 方法(如 POST、PUT、DELETE 等)的请求将不会被处理。

通过以上代码,当有使用 GET 方法请求路径为 "/getUser" 的请求到达时,Spring MVC 将会调用相应的处理方法进行处理。

需要注意的是,RequestMethod.GET 是一个枚举类型,它定义了多种 HTTP 方法,包括 GET、POST、PUT、DELETE 等。你可以根据实际需求选择适合的方法。

3、运行结果

启动 jetty 服务器

启动服务器后,输入控制器的配置的 /getUser 回车访问,即可调用 getUser 方法,ModelAndView就会将返回的视图名称 "index" 渲染给客户端。

三、post 请求,使用 @RequestMapping 注解

1、第一种写法
 @RequestMapping(value = "/login")
    public ModelAndView login() {
        return new ModelAndView("index");
    }

当客户端发送到 "/login" 路径的请求时,将会调用 login() 方法进行处理,并返回一个名为 "index" 的视图进行渲染。

 2、第二种写法
 @RequestMapping(value = "/login", method = {RequestMethod.POST, RequestMethod.GET})
    public ModelAndView login() {
        return new ModelAndView("index");
    }

login() 方法可以处理两种请求方式:POST 和 GET。

  • RequestMethod.POST 表示该方法可以处理 HTTP POST 请求。
  • RequestMethod.GET 表示该方法可以处理 HTTP GET 请求。

通过在 @RequestMapping 注解中指定 method 属性,并传入一个包含所支持的请求方式的数组,我们可以限制处理器方法只处理特定的请求方式。这样做的好处是可以提高应用程序的安全性和可靠性,确保只有符合预期的请求方式才能访问相应的处理器方法。

当客户端发送 POST 或 GET 请求到 "/login" 路径时,都会调用 login() 方法进行处理,并返回一个名为 "index" 的视图进行渲染。

3、运行结果

四、使用 @GetMapping 注解

从 springmvc 4.0 开始,提供了新的子注解来替换 @RequestMapping

1、什么是 @GetMapping 注解

在传统的 Spring MVC 中,我们可以使用 @RequestMapping 注解来定义请求映射规则,并通过指定请求方法为 GET 来限定处理器方法只能处理 GET 请求。但是,这种方式需要在注解中指定请求方法,并且代码的可读性较低。

为了简化代码编写和提高可读性,Spring MVC 4.3 版本引入了一系列的便捷注解,其中包括 @GetMapping。它是 @RequestMapping(method = RequestMethod.GET) 的缩写形式,表示该方法只能处理 HTTP GET 请求。

使用 @GetMapping 注解时,我们可以直接指定请求路径,而无需显式地指定请求方法。这样可以使代码更加简洁明了,同时也提高了代码的可读性和可维护性。

2、使用注解
 /**
     * @return
     * @GetMapping():只用于 get 请求
     */
    @GetMapping("/getUser2")
    public ModelAndView getUser2() {
        return new ModelAndView("index");
    }

public ModelAndView getUser2() 是一个处理器方法,它返回一个 ModelAndView 对象。在这个例子中,该方法的作用是获取用户信息,并返回一个逻辑视图名为 "index" 的视图。

@GetMapping 是一个组合注解,它是 Spring MVC 4.3 版本引入的一个便捷注解,等价于 @RequestMapping(method = RequestMethod.GET)。它表示该方法只能处理 HTTP GET 请求。

通过使用 @GetMapping("/getUser2") 注解,我们可以将请求路径和请求方式(GET)直接绑定到 getUser2() 方法上,简化了代码的编写,并提高了可读性。

这段代码的含义是:当客户端发送 GET 请求到 "/getUser2" 路径时,将会调用 getUser2() 方法进行处理,并返回一个名为 "index" 的视图进行渲染。

3、运行结果 

 五、使用 @PostMapping 注解

1、什么是 @PostMapping 注解

@PostMapping 注解是 Spring MVC 提供的一个注解,用于将 HTTP POST 请求映射到处理方法上。它是 @RequestMapping 注解的一个特定版本,专门用于处理 POST 请求。

具体来说,@PostMapping 注解的作用如下:

  1. @PostMapping 注解用于将 POST 请求映射到处理方法上。在这里,你可以指定一个或多个请求路径,当请求的路径匹配其中之一时,会调用该方法进行处理。

  2. @RequestMapping 注解类似,@PostMapping 注解也支持通过 valuepath 参数指定请求路径,例如:@PostMapping(value = "/login2")@PostMapping(path = "/login2")

  3. 通过 consumes 参数,你可以指定接受的请求内容类型(Content-Type)。例如:@PostMapping(value = "/login2", consumes = "application/json") 表示只接受 Content-Type 为 "application/json" 的请求。

  4. 通过 produces 参数,你可以指定响应的内容类型(Content-Type)。例如:@PostMapping(value = "/login2", produces = "application/json") 表示响应的 Content-Type 将为 "application/json"。

使用 @PostMapping 注解可以更加清晰地表达处理 POST 请求的意图,并提高代码的可读性和可维护性。

需要注意的是,@PostMapping 注解仅用于映射 HTTP POST 请求,如果需要处理其他 HTTP 方法的请求,可以使用 @GetMapping@PutMapping@DeleteMapping 等相应的注解。

2、使用 @PostMapping 注解
 /**
     * @PostMapping() : 只用于 post 请求
     * @return
     */
    @PostMapping("/login2")
    public ModelAndView login2() {
        return new ModelAndView("index");
    }
  1. public ModelAndView login2() 是该方法的签名,它表示该方法的返回类型为 ModelAndViewModelAndView 是 Spring MVC 中用于指定要渲染的视图和模型数据的对象。

  2. return new ModelAndView("index") 表示该方法返回一个名为 "index" 的视图。在这里,"index" 是视图的名称,你可以根据实际需求修改要返回的视图名称。

当有使用 POST 方法请求路径为 "/login2" 的请求到达时,Spring MVC 将会调用该方法进行处理,并返回名为 "index" 的视图。

3、运行结果

 HTTP 错误 405 "Request method 'GET' not supported" 意味着你发送了一个不支持的 HTTP 请求方法。

通常情况下,这个错误是因为你发送了一个 GET 请求到一个只支持 POST 请求的接口或方法上。根据你提供的代码示例来看,你的 login2() 方法使用了 @PostMapping 注解,指定该方法只能处理 POST 请求。

当你发送一个 GET 请求到 /login2 路径时,由于该方法不支持 GET 请求,服务器会返回 HTTP 405 错误。

要解决这个问题,你可以采取以下几种方式之一:

  1. 将请求方式改为 POST:根据你的代码示例,将请求方式改为 POST,以匹配 login2() 方法的注解。例如,在浏览器中使用表单提交或者使用 POST 请求工具发送请求。

  2. 修改方法注解:如果你希望该方法同时支持 GET 和 POST 请求,可以将 @PostMapping 注解改为 @RequestMapping(method = {RequestMethod.GET, RequestMethod.POST}),这样该方法就可以处理 GET 和 POST 请求了。

需要根据具体情况来选择适合的解决方案。

 4、添加页面提交表单
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<form method="post" action="../login2">
    <input type="submit" value="登录" >
</form>
</body>
</html>

写一个提交表单来请求这个 login2。

运行结果:

六、Spring MVC 中处理 GET 和 POST 请求的方式

  1. 使用注解 @RequestMapping@RequestMapping 注解是 Spring MVC 中最常用的处理请求的注解。通过指定请求路径和请求方法,可以将一个方法映射到相应的 GET 或 POST 请求上。
  2. 使用注解 @GetMapping@PostMapping:Spring 4.3 版本引入了更方便的注解 @GetMapping@PostMapping,用于直接指定 GET 或 POST 请求。 

七、GET 和 POST 请求方式的区别

GET 和 POST 是两种常见的 HTTP 请求方式,它们在以下几个方面存在区别:

  1. 数据传输方式:

    • GET:通过 URL 参数将数据附加在请求的 URL 中进行传输。数据以键值对的形式出现在 URL 的查询字符串中,例如 localhost:8080/login2?key1=value1&key2=value2
    • POST:通过请求体将数据发送给服务器。数据以键值对的形式出现在请求体中,不会暴露在 URL 中。
  2. 安全性:

    • GET:由于数据附加在 URL 上,因此在网络传输过程中可能被拦截、缓存或保存在浏览器历史记录中。敏感数据不应该使用 GET 请求发送。
    • POST:数据包含在请求体中,相对于 GET 请求更安全,因为请求体的内容不容易被拦截或缓存。
  3. 缓存:

    • GET:可以被浏览器缓存,当再次发起相同的 GET 请求时,浏览器可以直接从缓存中获取响应结果,提高性能。
    • POST:默认情况下不会被浏览器缓存,每次都会向服务器发送请求。
  4. 请求体大小限制:

    • GET:由于数据附加在 URL 中,URL 的长度有限制,不同浏览器和服务器对 URL 长度的限制不同。通常情况下,GET 请求的数据大小限制较小。
    • POST:由于数据包含在请求体中,对数据大小的限制相对较大,一般取决于服务器的配置和网络环境。
  5. 幂等性:

    • GET:GET 请求是幂等的,即多次重复请求不会对服务器产生副作用。例如,多次请求同一个 URL,不会对服务器端数据产生变化。
    • POST:POST 请求一般不是幂等的,多次重复请求可能会对服务器产生副作用。例如,重复提交表单可能导致重复创建相同的数据。

根据上述区别,选择适当的请求方式取决于具体的业务需求。一般而言,GET 请求适用于获取资源、查询数据等无副作用的操作,而 POST 请求适用于提交数据、创建资源等可能产生副作用的操作。

 

八、gitee 案例

案例地址:ch02 · qiuqiu/SpringMVC - 码云 - 开源中国 (gitee.com)

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

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

相关文章

转转闲鱼交易猫三合一后台源码

1、一键添加商品&#xff0c;商品管理&#xff0c;一键分享功能&#xff0c;包括卡框功能 这个样式图就是后台生成完的一个链接截图 后台一键生成&#xff0c;独立后台管理 教程&#xff1a;修改conf数据库账号密码 不会的可以看源码里有搭建教程 下载程序&#xff1a;htt…

基于教与学算法的无人机航迹规划-附代码

基于教与学算法的无人机航迹规划 文章目录 基于教与学算法的无人机航迹规划1.教与学搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要&#xff1a;本文主要介绍利用教与学算法来优化无人机航迹规划。 1.教与学…

操作系统:计算机系统概述

一战成硕 1.1 手工操作阶段1.2 批处理阶段1.3 分时操作系统1.4 实时操作系统1.5 中断和异常的概念1.6 系统调用 1.1 手工操作阶段 1.2 批处理阶段 单道批处理系统 自动性 顺序性 单道性多道批处理系统 多道 宏观上并行 微观上串行 优点&#xff1a;资源利用率高&#xff0c;多…

2023年【四川省安全员B证】考试报名及四川省安全员B证找解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年四川省安全员B证考试报名为正在备考四川省安全员B证操作证的学员准备的理论考试专题&#xff0c;每个月更新的四川省安全员B证找解析祝您顺利通过四川省安全员B证考试。 1、【多选题】下列关于钢筋临边防护栏杆…

[Unity3D]图片格式自定义MaxSize

如何适用 只需在“项目”窗口中创建一个名为“编辑器”的文件夹&#xff0c;然后在其中添加此脚本即可。然后&#xff0c;打开Window-Custom Max Size Setter&#xff0c;选择一个或多个纹理并调整其最大尺寸值。 由于 NPOT 纹理大小不能很好地与压缩算法配合使用&#xff0c;…

分布式系统的链路追踪,让你轻松解决订单无法查看的问题!

你好&#xff0c;我是积极活泼的小米&#xff01;今天我要跟大家聊聊分布式系统的链路追踪&#xff0c;这个话题对于我们在技术领域工作的小伙伴们来说&#xff0c;可是非常重要的哦&#xff01; 背景 昨天&#xff0c;产品大佬丰哥找到了我&#xff0c;他抱怨说分销员的订单…

【C++杂货铺】C++11特性总结:列表初始化 | 声明 | STL的升级

文章目录 一、C11简介二、统一的列表初始化2.1 { } 初始化2.2 列表初始化在内置类型上的应用2.3 列表初始化在内置类型上的应用2.4 initializer_list2.4.1 {1, 2, 3} 的类型2.4.2 initializer_list 使用场景2.4.3 模拟实现的 vector 中的 { } 初始化和赋值 三、声明3.1 auto3.1…

【小尘送书-第九期】《Excel数据透视表应用大全for Excel 365 Excel 2019》

大家好&#xff0c;我是小尘&#xff0c;欢迎你的关注&#xff01;大家可以一起交流学习&#xff01;欢迎大家在CSDN后台私信我&#xff01;一起讨论学习&#xff0c;讨论如何找到满意的工作&#xff01; &#x1f468;‍&#x1f4bb;博主主页&#xff1a;小尘要自信 &#x1…

OTA语音芯片NV040C在智能电动牙刷的应用

以往我们对牙齿的清洁是使用的是手动方式进行&#xff0c;用柔软的牙刷刷毛去进行牙齿的清洁。但现在我们拥有了一种新颖的刷牙方式&#xff0c;靠电力去驱动、清洁我们的牙齿。电动牙刷的刷头通过快速旋转&#xff0c;产生高频振动&#xff0c;将牙膏迅速分解为细小的泡沫&…

基于Java的医院预约挂号管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

SiteGround主机最新购买使用指南及外贸建站教程

SiteGround是一家知名的虚拟主机服务提供商&#xff0c;它在过去几年中在WordPress和WooCommerce建站领域取得了显著的发展和改进。SiteGround致力于为用户提供专门针对WordPress优化的虚拟主机&#xff0c;并将WordPress深度集成到其主机服务中&#xff0c;使外贸建站过程变得…

2、QtCharts QGraphicsScene绘制折线图

文章目录 界面设置代码 界面设置 代码 #include "dialog.h" #include "ui_dialog.h"Dialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Dialog) {ui->setupUi(this);//构建图标系列lineSerisenew QLineSeries(this);//为折线添加数据for …

一文详解Docker容器(Container)

目录 基本介绍 常用命令 docker run &#xff1a;创建一个新的容器 docker ps &#xff1a;列出 Docker容器相关信息 docker stop &#xff1a;停止一个运行中的 Docker容器 docker rm &#xff1a; 删除一个或者多个已经停止的 Docker容器 docker pause &#xff1a;暂…

怎么突破反爬虫机制

在当今的数字化时代&#xff0c;网络爬虫已经成为了收集信息和数据的重要工具。然而&#xff0c;许多网站和平台都配备了反爬虫机制&#xff0c;以防止恶意攻击和过度访问。对于普通用户来说&#xff0c;如何突破这些反爬虫机制呢&#xff1f;本文将为你提供一些实用的技巧和建…

《Cesium 进阶知识点》- el-select 列表打开后,点击Cesium.Viewer场景无法自动关闭

前提 el-select属性 popper-append-to-body 必须 为 false。这样初始化的列表 el-select-dropdown 才在 el-select下&#xff1b;目前测试&#xff0c;仅对 Cesium.Viewer 生成的 canvas 点击时列表无法自动关闭&#xff1b;使用原生 canvas 和 echarts&#xff0c;点击其场景…

【uniapp】仿微信支付界面

效果图 完整代码 <template><view class="my-pay-page"><view :style=

opencv python 环境安装问题

问题描述&#xff1a; 在centos上使用python的某个库&#xff0c;有用到opencv&#xff0c;但在import时报以下错误&#xff1a; ImportError: libGL.so.1: cannot open shared object file: No such file or directory 若是系统可以连接外网&#xff0c;则只需一条命令&…

kubeadm方式部署单节点kubernetes环境

------实验所需机器 master&#xff08;2C/4G&#xff0c;cpu核心数要求大于2&#xff09; 20.0.0.101 docker、kubeadm、kubelet、kubectl、flannel node01&#xff08;2C/2G&#xff09; 20.0.0.102 docker、kubeadm、kubelet、kubectl、flannel node02&#xff…

基于 ARM+FPGA+AD平台的多类型同步信号采集仪开发及试验验证(二)板卡总体设计

2.2 板卡总体设计 本章开发了一款基于 AD7193RJ45 的多类型传感信号同步调理板卡&#xff0c;如图 2.4 所 示&#xff0c;负责将传感器传来的模拟电信号转化为数字信号&#xff0c;以供数据采集系统采集&#xff0c;实现了 单通道自由切换传感信号类型与同步采集多类型传…