【SpringMVC】| 一文带你搞定SpringMVC的@RequestMapping注解

news2025/1/11 7:02:41

目录

环境搭建

@Request注解的功能

1. @RequestMapping注解的位置

2、@RequestMapping注解的【value】属性

3、@RequestMapping注解的【method】属性

4、@RequestMapping注解的【params】属性(了解)

5、@RequestMapping注解的【headers】属性(了解)

6、SpringMVC支持ant风格的路径

7、SpringMVC支持路径中的占位符(重点)


环境搭建

pon.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>org.example</groupId>
  <artifactId>springmvc-thymeleaf002</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>springmvc-thymeleaf002 Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>

  <dependencies>
    <!--springmvc依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>
    <!--servlet依赖-->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provide</scope>
    </dependency>
    <!--logback日志框架依赖-->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.11</version>
    </dependency>
    <!--spring整合thymeleaf的依赖-->
    <dependency>
      <groupId>org.thymeleaf</groupId>
      <artifactId>thymeleaf-spring5</artifactId>
      <version>3.0.10.RELEASE</version>
    </dependency>
  </dependencies>

  <build>
    <!--指定资源文件的位置-->
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.xml</include>
          <include>**/*.properties</include>
        </includes>
      </resource>
    </resources>

  </build>
</project>

在web.xml注册DispatcherServlet前端控制器

<?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">
    <!--注册SpringMVC框架-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置springMVC位置文件的位置和名称-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>
        <!--将前端控制器DispatcherServlet的初始化时间提前到服务器启动时-->
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

在springmvc.xml中配置包扫描和thymeleaf的视图解析器

<?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="com.zl.controller"/>
    <!-- 配置Thymeleaf视图解析器 -->
    <bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
        <property name="order" value="1"/>
        <property name="characterEncoding" value="UTF-8"/>
        <property name="templateEngine">
            <bean class="org.thymeleaf.spring5.SpringTemplateEngine">
                <property name="templateResolver">
                    <bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
                        <!-- 视图前缀 -->
                        <property name="prefix" value="/WEB-INF/templates/"/>
                        <!-- 视图后缀 -->
                        <property name="suffix" value=".html"/>
                        <property name="templateMode" value="HTML5"/>
                        <property name="characterEncoding" value="UTF-8"/>
                    </bean>
                </property>
            </bean>
        </property>
    </bean>
   
</beans>

@Request注解的功能

(1)从注解名称上我们可以看到,@RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。

(2)SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。

1. @RequestMapping注解的位置

@RequestMapping标识一个:设置映射请求的请求路径的初始信息

@RequestMapping标识一个法:设置映射请求请求路径的具体信息

(1)只出现在方法上

package com.zl.controller;

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

@Controller
public class ControllerTest {
    @RequestMapping("/")
    public String demo(){
        return "index";
    }
}

此时的访问路径就是:http://localhost:8080/springmvc/WEB-INF/templates/index.html,其中springmvc是上下文路径!

(2)出现在类上

注:表示在具体的映射路径前面又增加了一个路径,为了区分不同类的同一个请求!

例如:对于用户User可能有一个请求list;对于订单Order也可能有一个list;如果不加以区分就会报错,都是http://localhost:8080/springmvc/list,服务器就不知道到该访问哪一个。此时就可以在类前面在使用@RequestMapping注解加一层路径的名称!

package com.zl.controller;

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

@Controller
@RequestMapping("/action")
public class ControllerTest {
    @RequestMapping("/")
    public String demo(){
        return "index";
    }
}

此时的访问路径就是:http://localhost:8080/springmvc/action/WEB-INF/templates/index.html,其中springmvc是上下文路径!

2、@RequestMapping注解的【value】属性

注:【value属性】是通过请求的【请求地址】来匹配请求

(1)@RequestMapping注解的value属性通过请求的请求地址匹配请求映射。

(2)@RequestMapping注解的value属性是一个字符串类型的数组表示该请求映射能够匹配多个请求地址所对应的请求。

(3)@RequestMapping注解的value属性必须设置,至少通过请求地址匹配请求映射!

注:前面就是使用了value属性,只不过只有一个值就省略了value属性的名。实际上vlaue属性是一个字符串数组,可以有多个值!

@AliasFor("path")
String[] value() default {};

需求:多个请求地址访问同一个资源!

在index.html中配置两个请求地址

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <a th:href="@{/test1}">请求方式1</a>
    <a th:href="@{/test2}">请求方式2</a>
</body>
</html>

@RequestMapping注解的value属性指定多个值

package com.zl.controller;

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


@Controller
public class ControllerTest {
    @RequestMapping("/")
    public String demo(){
        return "index";
    }

    @RequestMapping(value = {"/test1","/test2"})
    public String toSuccess(){
        return "success";
    }
}

测试:此时无论是/test1请求还是/test2请求都能访问到success资源

3、@RequestMapping注解的【method】属性

注:【method属性】是通过请求的【请求方式】来匹配请求(不仅要满足请求的地址相同,请求的方式也要相同

(1)@RequestMapping注解的method属性通过请求的请求方式(get或post)匹配请求映射。

(2)@RequestMapping注解的method属性是一个RequestMethod类型的数组,表示该请求映射能够匹配多种请求方式的请求。

(3)若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性则浏览器报错405:Request method 'POST' not supported。

 RequestMethod[] method() default {};

RequestMethod实际上实际上一个枚举类型

package org.springframework.web.bind.annotation;

public enum RequestMethod {
    GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS,TRACE;
    private RequestMethod() {
    }
}

注:如果在@RequestMappring注解中没有使用method去指定请求的方式,那么无论前端发过来get还是post都可以进行匹配;因为此时不是以method顺序ing来匹配请求了!

例:前端分别使用get(默认就是get)和post发送请求

在index.html中配置两个请求地址get和post

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--默认就是get请求方式提交-->
<a th:href="@{/test1}">get请求方式</a><br>
<!--post请求方式-->
<form th:action="@{/test2}" method="post">
    <input type="submit" value="post请求方式">
</form>
</body>
</html>

@RequestMapping注解的value属性指定多个值,并且不指定请求方式

   @RequestMapping(value = {"/test1","/test2"})
    public String toSuccess(){
        return "success";
    }

测试:此时无论是get请求发送的/test1请求还是post请求发送的/test2请求都能访问到success资源;此时实际上就不以请求方式来进行匹配了,就是单纯的通过地址进行匹配!

 例:如果此时在@RequestMapping中使用method属性设置了请求方式;此时如果地址路径匹配上了,但是请求方式没有匹配上会报405错误

@RequestMapping注解的value属性指定多个值,并且设置的请求方式为get

    @RequestMapping(value = {"/test1","/test2"},method = RequestMethod.GET)
    public String toSuccess(){
        return "success";
    }

 测试:此时对于test2发送的时候使用的是post请求,接收的时候使用get请求,会报405错误

例:如果让请求映射既支持get请求又支持post请求,怎么办?

前面已经说了method属性是一个RequestMethod类型的数组,所以我们可以把两个都写上

    @RequestMapping(value = {"/test1","/test2"},
                 method = {RequestMethod.GET,RequestMethod.POST})
    public String toSuccess(){
        return "success";
    }

注:

(1)对于处理指定请求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解

①处理get请求的映射-->@GetMapping注解

②处理post请求的映射-->@PostMapping注解

③处理put请求的映射-->@PutMapping注解

④处理delete请求的映射-->@DeleteMapping注解

前端发送post请求

<!--发送post请求,为了测试PostMapping注解-->
<form th:action="@{/postmapping}" method="post">
    <input type="submit" value="post请求方式">
</form>

后端使用@PostMapping注解接收

注:  @PostMapping("/postmapping")就等同于@RequestMapping(value = "/postmapping",method = RequestMethod.POST)

    @PostMapping("/postmapping")
    public String testPostMapping(){
        return "success";
    }

(2)常用的请求方式有get,post,put,delete

①但是目前浏览器只支持get和post,若在form表单提交时,为method设置了其他请求方式的字符串(put或delete),则按照默认的请求方式get处理

②若要发送put和delete请求,则需要通过spring提供的过滤器HiddenHttpMethodFilter,在RESTful部分会讲到!

4、@RequestMapping注解的【params】属性(了解)

注:【params属性】是通过请求的【请求参数】来匹配请求

(1)@RequestMapping注解的params属性通过请求的请求参数匹配请求映射

(2)@RequestMapping注解的params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系

String[] params() default {};

"param":要求请求映射所匹配的请求必须携带param请求参数

"!param":要求请求映射所匹配的请求必须不能携带param请求参数

"param=value":要求请求映射所匹配的请求必须携带param请求参数且param=value

"param!=value":要求请求映射所匹配的请求必须携带param请求参数但是param!=value

后端使用param属性

解释:以下表示前端发送的请求必须有username属性,属性值随意;必须含有password属性,属性值也必须是123。

    @RequestMapping(value = "/param",
                    params = {"username","password=123"})
    public String toParam(){
        return "success";
    }

前端请求

注:可以使用?也可以使用()的形式;但是?IDEA会出现红色的下划线,但是不影响正常使用

<!--方式一-->
<a th:href="@{/param?username='root'&password=123}">param属性的方式</a>
<!--方式二-->
<a th:href="@{/param(username='root',password=123)}">param属性的方式</a>

5、@RequestMapping注解的【headers】属性(了解)

注:【headers属性】是通过请求的【请求头信息】来匹配请求

(1)@RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射;用法和param属性的使用方式是相同的。

(2)@RequestMapping注解的headers属性是一个字符串类型的数组,可以通过四种表达式设置请求头信息和请求映射的匹配关系:

"header":要求请求映射所匹配的请求必须携带header请求头信息

"!header":要求请求映射所匹配的请求必须不能携带header请求头信息

"header=value":要求请求映射所匹配的请求必须携带header请求头信息且header=value

"header!=value":要求请求映射所匹配的请求必须携带header请求头信息且header!=value

若当前请求满足@RequestMapping注解的value和method属性,但是不满足headers属性此时页面显示404错误,即资源未找到!

6、SpringMVC支持ant风格的路径

注:这种风格的请求,实际上就是支持模糊匹配!

(1)?表示任意的单个字符

后端代码

    @RequestMapping("/a?b/testAnt1")
    public String test1(){
        return "success";
    }

前端代码

①?是匹配单个字符,所以中间只能有一个字符,例如a1a,a2a等都可以!

②不能是特殊的字符,例如:问号?、斜杠/等。例如:a?a不可以,再例如aa,直接省略不写也不行。

<!--中间匹配一个字符-->
<a th:href="@{/a1b/testAnt1}">测试1</a>
<a th:href="@{/acb/testAnt1}">测试2</a>

(2)*:表示任意的0个或多个字符

后端代码

    @RequestMapping("/a*b/testAnt1")
    public String test2(){
        return "success";
    }

前端代码

<!--中间不匹配字符、匹配一个字符、匹配多个字符都可以-->
<a th:href="@{/cb/testAnt2}">测试3</a><br>
<a th:href="@{/c1b/testAnt2}">测试4</a><br>
<a th:href="@{/cccb/testAnt2}">测试5</a><br>

(3)**:表示任意的一层或多层目录;

使用两个**就可以使用【斜杠/】表示一层或多层目录;但是使用两个**有语法要求,此时**的前后都不能有东西,所以只能在斜杠后面,例如:/**。但如果前后有东西,例如:a**b,那么此时的**就真是普通的*,没有任何特殊的含义!

注意:在使用**时,只能使用/**/xxx的方式!

后端代码

    @RequestMapping("/**/testAnt3")
    public String test3(){
        return "success";
    }

前端代码

<!--任意一个路径、多层路径、省略不写都是可以的-->
<a th:href="@{/abc/testAnt3}">测试6</a><br>
<a th:href="@{/ab/c/testAnt3}">测试7</a><br>
<a th:href="@{/testAnt3}">测试8</a><br>

7、SpringMVC支持路径中的占位符(重点)

原始方式:/deleteUser?id=1

restful方式:/deleteUser/1

SpringMVC路径中的占位符常用于RESTful风格中,当请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的@RequestMapping注解的value属性中通过占位符{xxx}表示传输的数据,在通过@PathVariable注解,将占位符所表示的数据赋值给控制器方法的形参!

注:仅限于超链接地址栏提交数据,它是一杠一值(前端传数据)一杠一大括号(后端接收数据),使用注解@PathVariable(路径变量)来解析。

前端代码:一杠一值

<a th:href="@{/testRest/jack/12}">测试路径中的占位符-->/testRest</a><br>

后端代码:一杠一大括号

    @RequestMapping("/testRest/{name}/{age}")
    public String toRest(@PathVariable String name, @PathVariable int age){
        System.out.println("name:"+name+", age:"+age);
        return "success";
    }

执行结果:成功获取到前端提交的数据

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

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

相关文章

Attention 和 Transformer

本文参考d2l&#xff0c;搭配知识点和代码&#xff0c;助力一口气搞懂Transformer&#xff0c;参考&#xff1a; chapter_attention-mechanisms-and-transformers https://d2l.ai/chapter_attention-mechanisms-and-transformers/index.html 目录如下&#xff1a; x.1 Queri…

项目复盘四步:怎么做才有成效?这些关键点不可忽略

在项目管理中&#xff0c;及时复盘是非常重要的&#xff0c;因为只有通过反思和分析&#xff0c;才能找到差距存在的原因。 复盘分析的第一步是回顾目标 因为目标是工作开展的关键。在执行项目的过程中&#xff0c;要始终朝着所设定的目标去努力实现。计划和现实会存在偏差&…

超详细Zookeeper+Kafka+ELK集群部署

一、Zookeeper 概述 1、Zookeeper 定义 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目。 2、Zookeeper 工作机制 Zookeeper从设计模式角度来理解&#xff1a;是一个基于观察者模式设计的分布式服务管理框架&#xff0c;它负责存储和管理…

AutoCV第九课:ML基础

目录 矩阵运算前言1. 矩阵乘法和求导总结 矩阵运算 前言 手写AI推出的全新保姆级从零手写自动驾驶CV课程&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考。 本次课程主要学习矩阵运算的基础&#xff0c;考虑使用矩阵来表达多个线性回归模型。 课程大纲可看下面…

多元回归预测 | Matlab龙格算法(RUN)优化最小二乘支持向量机回归预测,RUN-LSSVM回归预测,多变量输入模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元回归预测 | Matlab龙格算法(RUN)优化最小二乘支持向量机回归预测,RUN-LSSVM回归预测,多变量输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码 %--…

注意力机制(一)SE模块(Squeeze-and-Excitation Networks)论文总结和代码实现

Squeeze-and-Excitation Networks&#xff08;压缩和激励网络&#xff09; 论文地址&#xff1a;Squeeze-and-Excitation Networks 论文中文版&#xff1a;Squeeze-and-Excitation Networks_中文版 代码地址&#xff1a;GitHub - hujie-frank/SENet: Squeeze-and-Excitation Ne…

git 文件恢复与项目还原:008

1. 【文件恢复】&#xff1a;将文件恢复到上一次提交的状态 注意&#xff1a;新建且没有提交的文件无法使用文件恢复 命令&#xff1a; git checkout -- 文件名假如我们的一开始是这样的&#xff0c;这是没有报错的状态文件 然后我添加了一段内容&#xff0c; 比如我添加这段内…

做外贸算运费的时候需不需要多算一些

看到一个网友在一篇文章下留言说&#xff1a;客户算运费的时候需不需要多算一些 听公司老员工说给客户算运费要多加20% 这样合适吗 我个人感觉有点离谱。 那我们就这个话题&#xff0c;谈一谈运费是否要多加一些呢&#xff1f;为什么要多加一些&#xff1f; 首先&#xff0c;要…

Zookeeper学习---3、服务器动态上下线监听案例、ZooKeeper 分布式锁案例、企业面试真题

1、服务器动态上下线监听案例 1、需求 某分布式系统中&#xff0c;主节点可以有多台&#xff0c;可以动态上下线&#xff0c;任意一台客户端都能实时感知到主节点服务器的上下线。 2、需求分析 3、具体实现 &#xff08;1&#xff09;先在集群上创建/servers 节点 &#xff…

软考A计划-试题模拟含答案解析-卷八

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

2023年上半年系统集成项目管理工程师下午真题及答案解析

试题一(18分) A公司跨国收购了B公司的主营业务&#xff0c;保留了B公司原有的人员组织结构和内部办公系统。为了解决B公司内部办公系统与A公司原有系统不兼容的问题&#xff0c;财务、人力和行政部门联合向公司高层申请尽快启动系统和业务的整合。 A公司领导指定HR总监王工担…

云容灾部署前的准备指南

据ITIC的研究表明&#xff0c;98%的千人规模企业每年都会遭遇停机危机&#xff0c;每停机一小时就会损失约700,000人民币。当灾难发生时&#xff0c;使用云容灾的企业可以通过云平台提供的资源和服务&#xff0c;快速帮助企业恢复业务。 HyperBDR云容灾&#xff0c;深度对接全…

Kibana:使用 Docker 安装 Kibana - 8.x

Kibana 的 Docker 镜像可从 Elastic Docker 注册中心获得。 基本映像是 ubuntu:20.04。www.docker.elastic.co 上提供了所有已发布的 Docker 图像和标签的列表。 源代码在 GitHub 中。 这些镜像包含免费和订阅功能。 开始 30 天试用以试用所有功能。 如果你还没有安装好自己的…

一文了解什么是ChatGPT

ChatGPT 是一种自然语言人工智能聊天机器人。在最基本的层面上&#xff0c;这意味着你可以问它任何问题&#xff0c;它会生成一个答案。 一、如何使用聊天 GPT 首先&#xff0c;转到chat.openai.com。如果这是您的第一次&#xff0c;您需要在开始之前使用 OpenAI 设置一个免费…

C919中有哪些项目是华为之作?

#C919# C919和华为都是我们国人的骄傲。那你知道在C919中有哪些项目是华为之作吗&#xff1f;C919与华为的合作主要涉及航空电子领域&#xff1a; 1.飞机高清视频传输系统&#xff1a;该系统使用华为的数字视频传输技术&#xff0c;可以将高清视频信号快速地传输到地面监控中心…

Gradio的web界面演示与交互机器学习模型,高级接口特征《6》

大多数模型都是黑盒&#xff0c;其内部逻辑对最终用户是隐藏的。为了鼓励透明度&#xff0c;我们通过简单地将Interface类中的interpretation关键字设置为default&#xff0c;使得向模型添加解释变得非常容易。这允许您的用户了解输入的哪些部分负责输出。 1、Interpret解释 …

NetApp E 系列混合闪存阵列——专为需要高带宽的专用应用程序而构建(如数据分析、视频监控、HPC、基于磁盘的备份)

E 系列混合闪存阵列&#xff1a;专为交付而构建 为什么选择 NetApp E 系列阵列&#xff1f; 超过 100 万次的安装和计数 凭借其提供的精简性和可靠性&#xff0c;我们的 E 系列阵列成为了众多企业的首选系统。从推动数据密集型应用程序&#xff08;如分析、视频监控和基于磁盘…

PLC/DCS系统常见的干扰现象及判断方法

一般来说&#xff0c;常见的干扰现象有以下几种&#xff1a; 1.系统发指令时&#xff0c;电机无规则地转动&#xff1b; 2.信号等于零时&#xff0c;数字显示表数值乱跳; 3。传感器工作时&#xff0c;DCS/PLC 采集过来的信号与实际参数所对应的信号值不吻合&#xff0c;且误…

微信小程序报错:“该小程序提供的服务出现故障,请稍后再试”(IOS报错,Android则正常)

记录对接微信小程序时遇到的问题&#xff0c;问题表现为&#xff1a; 1、发送消息后出现报错&#xff1a;该小程序提供的服务出现故障&#xff0c;请稍后再试 2、只有IOS会报错&#xff0c;Android则是正常的 3、IOS报错的微信号&#xff0c;即使在电脑端登录&#xff0c;使…

HKPCA Show携手电巢直播开启“云”观展!掀起一场电子人的顶级狂欢!

近日&#xff0c;国际电子电路&#xff08;深圳&#xff09;展览会&#xff08;HKPCA Show&#xff09;已于深圳国际会展中心圆满举办&#xff01;本次展览划分七大主题专区&#xff0c;面积超50,000平方米&#xff0c;展位超2500个&#xff0c;汇聚众多行业知名、有影响力的参…