当前位置: 首页 > wzjs >正文

昆山网站制作nba最新排行榜

昆山网站制作,nba最新排行榜,网站在线做照片,上海专业的网站建很早之前博主聊过HTTP的报文结构以及其中和传参相关的重要参数content-type还有spring mvc,以前的三篇文章: HTTP与HTTPS协议详解:基础与安全机制-CSDN博客 详解Http的Content-Type_content-type application-CSDN博客 如何在Spring Boot中…

很早之前博主聊过HTTP的报文结构以及其中和传参相关的重要参数content-type还有spring mvc,以前的三篇文章:

HTTP与HTTPS协议详解:基础与安全机制-CSDN博客

详解Http的Content-Type_content-type application-CSDN博客

如何在Spring Boot中使用Spring MVC_springboot引入springmvc-CSDN博客

今天把这几部分内容合起来,从根源上聊清楚http的参数以及spring mvc的传参问题。

目录

1.content-type

2.Spring MVC传参

2.1.设计思想

2.1.零散参数

2.2.封装成实体

2.3.json


1.content-type

要聊SpringMVC的传参,就要先搞清楚HTTP报文是如何传参的。最熟悉的陌生人HTTP报文结构:

HTTP天天都在用,报文结构估计很多人其实记忆都不是很清晰。HTTP报文分为三部分:

  • 请求行,记录method、URL、http协议版本。

  • 请求头,以kv键值对记录一些附加消息,如cookie。

  • 请求数据,也叫请求体,专门拿来装数据的的。

整个HTTP协议里约定了HTTP报文中可以用来传请求参数的地方:

  • URL

  • 请求体

URL中的参数是以固定的格式表述的,比如:

http://example.com/api/data?param1=value1&param2=value2

由于URL中的参数格式是固定的,所以请求的参数是很容易被解析出来的,无非就是以&和=这两个符号做一下分割就把参数的名称和值解析出来了。但是请求体中的参数格式是不固定的,有可能是json、有可能是xml、也有可能是二进制等等。所以要在请求头中加一个附加消息用来阐述请求体中的参数格式,这个附加信息就是——content-type。

常见的content-type类型:

  • application/json,用来声明请求体中参数是json格式。

  • application/xml 或 text/xml,用来声明请求体中参数是xml格式。

  • application/x-www-form-urlencoded,用来声明请求体中参数是URL参数格式,html表单用的就是这种格式来传参。

这里展开聊聊content-type=application/x-www-form-urlencoded,也就是html表单是如何来组织参数传递的?

<form action="/submit" method="POST" enctype="application/x-www-form-urlencoded"><label for="name">Name:</label><input type="text" id="name" name="name"><br><br><label for="email">Email:</label><input type="email" id="email" name="email"><br><br><label for="age">Age:</label><input type="number" id="age" name="age"><br><br><label for="bio">Bio:</label><textarea id="bio" name="bio"></textarea><br><br><input type="submit" value="Submit">
</form>

编码规则:

  • 表单字段编码:

    每个表单字段的名称和值会被编码为键值对。键和值之间用 = 连接。不同的键值对之间用 & 分隔。

  • 特殊字符编码:

    特殊字符(如空格、&、= 等)会被 URL 编码。例如,空格会被编码为 %20 或 +,& 会被编码为 %26,= 会被编码为 %3D。

  • 请求体: 编码后的键值对会被放在 HTTP 请求体中。请求头中会包含 Content-Type: application/x-www-form-urlencoded 和 Content-Length 字段。

假设用户输入以下数据:

Name: John Doe
Email: john.doe@example.com
Age: 30
Bio: This is a sample bio.Name: John Doe
Email: john.doe@example.com
Age: 30
Bio: This is a sample bio.

在HTTP报文中数据会被组织成如下样子:

POST /submit HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 83
​
name=John+Doe&email=john.doe%40example.com&age=30&bio=This+is+a+sample+bio.

总结一下:

HTTP协议中规定了HTTP报文中只有两个地方可以传参:URL、Body。URL中的传参格式由于是固定的所不用声明解析规则,但是body中的传参格式是不固定的,所以要通过content-type去声明参数的格式。要注意的是,这和method无关,POST请求也能通过body去传参。

2.Spring MVC传参

2.1.设计思想

任何框架出现都是为了解决实际的场景问题的,Spring MVC最核心的职责是:

  • 映射请求,即将请求映射到对应的处理器(controller)

  • 映射参数,即将前端传过来的参数映射到处理器具体方法的参数列表

映射参数可能会遇到哪些场景?我们其实想一想就能理出来:

  • 参数是零散的,一个个的传过来的。

  • 参数是个封装好的实体对象,整个实体被传过来。

无非传参就这两种情况,然后就是携带参数的位置不同,要么URL要么Body。

所以要实现的能力无非就是:

  • 参数是单个的,要去URL或者Body里面去取单个参数

  • 参数是实体,去URL或者Body里面取参数映射成实体

2.1.零散参数

如果后端接口参数是零散的Spring MVC会通过参数名称自动进行匹配映射,或者通过@RequestParam注解来自定义映射:

@RestController
public class TestController {@PostMapping("/testRequestParam")public void testRequestParam(String param1,@RequestParam("param2")String param2){System.out.println("param1:"+param1+"\t"+"param2:"+param2);}
}

可匹取值的范围

  • 表单(body)

  • URL

表单:

URL:

结果:

也就是说@RequestParam能取到键值对类型的传参。json除外,因为json在spring mvc中是单独处理的。

2.2.封装成实体

如果后端接口参数是实体,Spring MVC会通过参数名称自动进行实体字段和前端传参的匹配映射,可匹配映射的范围

  • 表单(body)

  • URL

表单:

URL:

也就是说能映射键值对类型的传参。json除外,因为json在spring mvc中是单独处理的。

2.3.json

要注意的点是,如果json是键值对里面的value,通过参数名或者@RequestParam来取值,比如这种:

但是如果直接就是个JSON,那么必须通过@RequestBody,Json只能通过这个注解来声明,后端才能接收到:

http://www.dtcms.com/wzjs/369214.html

相关文章:

  • 网盘做网站空间友情链接交换源码
  • 北京城乡建设门户网站新手电商运营从哪开始学
  • 小说网站系统怎么做浙江网络科技有限公司
  • 如何查看网站的外链站长基地
  • wap网站做微信小程序百度一下首页网址
  • 如何建立国际网站什么公司适合做seo优化
  • 建设部人事教育司网站镇海seo关键词优化费用
  • 怎么在子域名建立一个不同的网站seo网站关键词优化快速官网
  • 企业内部的网站系统win10优化工具下载
  • 佛山市多语言营销型网站建站tool站长工具
  • 做自媒体有哪些素材网站郑州百度搜索优化
  • 商城网站建站系统nba最新新闻消息
  • 网站首页图片滑动怎么做自助建站系统代理
  • 苏州市建设交易中心网站平台接广告在哪里接的
  • 济南做外贸网站的公司列举常见的网络营销工具
  • 网站定制建设哪里好百度风云排行榜官网
  • 美食网站界面设计白杨seo
  • 专门做别墅的网站跨国网站浏览器
  • 网站建设中 模板素材发广告去哪个平台
  • 江西专业南昌网站建设焦作seo推广
  • 个人开网站泉州排名推广
  • ps切片以后 怎么做网站网页制作接单
  • 网站后台如何做色盲测试图
  • 门户网站开发用什么框架好做网站优化的公司
  • 廊坊市建设局网站深圳谷歌seo推广
  • 网站建设有没有资质南京今日新闻头条
  • 腾讯云网站搭建教程网页生成app
  • 正规的大连网站建设沈阳今天刚刚发生的新闻
  • 上海网站制作网站开发seo推广需要多少钱
  • 哪些网站做的人比较少seo的优化步骤