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

网站导航功能手机网站会员中心模板下载

网站导航功能,手机网站会员中心模板下载,星凯网站建设,wordpress 主页 慢在 Spring Boot 中,针对表单提交和请求体提交(如 JSON) 两种数据格式,服务器端有不同的接收和处理方式,核心是通过注解和参数绑定机制实现自动解析。 **表单提交 (Form Submission):**主要用于浏览器向服务…

在 Spring Boot 中,针对表单提交和请求体提交(如 JSON) 两种数据格式,服务器端有不同的接收和处理方式,核心是通过注解和参数绑定机制实现自动解析。

**表单提交 (Form Submission):**主要用于浏览器向服务器发送数据,如用户登录、搜索等。数据被编码在请求体中,格式为 key=value,通过 application/x-www-form-urlencoded 或 multipart/form-data 类型的请求头告知服务器。
**请求体提交 (Body Submission):**是现代 API 交互(如 RESTful)的标准方式。客户端(如 App、前端 JS)将数据(通常是 JSON 格式)直接放入请求体中,通过 application/json 等类型的请求头告知服务器。

一、接收表单提交数据(application/x-www-form-urlencoded 或 multipart/form-data)
表单提交的数据以键值对形式存在,Spring Boot 主要通过以下方式接收:

1. 简单参数接收(直接绑定到方法参数)
适用于参数较少的场景,使用 @RequestParam 注解(可省略):

@PostMapping("/form/simple")
public String handleSimpleForm(// @RequestParam 可省略,默认按参数名匹配@RequestParam String username,@RequestParam Integer age,// 可选参数,设置默认值@RequestParam(defaultValue = "male") String gender
) {return "接收表单数据:username=" + username + ", age=" + age + ", gender=" + gender;
}

2. 实体类接收(参数较多时推荐)
将表单字段映射到实体类的属性(属性名需与表单字段名一致):

java
运行
// 定义实体类
public class UserForm {private String username;private Integer age;private String gender;// getter/setter
}
// 控制器接收
@PostMapping("/form/entity")
public String handleEntityForm(UserForm user) {return "接收表单实体:" + user.getUsername() + ", " + user.getAge();
}

3. 接收文件(multipart/form-data 格式)
用于文件上传,需使用 @RequestParam(“file”) MultipartFile 接收:

@PostMapping("/form/upload")
public String handleFileUpload(@RequestParam String description, // 普通字段@RequestParam("file") MultipartFile file // 文件字段
) throws IOException {// 保存文件到本地String filename = file.getOriginalFilename();file.transferTo(new File("upload/" + filename));return "文件上传成功:" + description + ",文件名:" + filename;
}

注意:默认情况下,Spring Boot 对文件大小有限制(默认单文件 1MB,总文件 10MB),可在 application.properties 中修改:
properties

单文件大小限制

spring.servlet.multipart.max-file-size=10MB

总文件大小限制

spring.servlet.multipart.max-request-size=100MB
二、接收请求体提交数据(如 application/json)
请求体提交的 JSON 数据需要绑定到实体类,核心是使用 @RequestBody 注解:

  1. 基本用法(绑定到实体类)
// 定义接收 JSON 的实体类
public class UserJson {private String name;private Integer age;private List<String> hobbies; // 支持数组/集合类型// getter/setter
}
// 控制器接收 JSON 数据
@PostMapping("/body/json")
public String handleJsonBody(@RequestBody UserJson user) {return "接收 JSON 数据:name=" + user.getName() + ", hobbies=" + user.getHobbies();
}
  1. 复杂 JSON 结构(嵌套对象)
    如果 JSON 包含嵌套对象,实体类也需对应嵌套结构:
json
// 客户端发送的 JSON
{"name": "张三","address": {"province": "广东","city": "深圳"}
}

对应的实体类定义:

public class UserJson {private String name;private Address address; // 嵌套对象// getter/setter// 内部类或独立类均可public static class Address {private String province;private String city;// getter/setter}
}

// 控制器接收方式不变

@PostMapping("/body/nested")
public String handleNestedJson(@RequestBody UserJson user) {return "省份:" + user.getAddress().getProvince();
}
  1. 接收纯文本或其他格式
    如果请求体是纯文本(text/plain),可直接绑定到 String:
@PostMapping(value = "/body/text", consumes = "text/plain")
public String handleTextBody(@RequestBody String text) {return "接收文本:" + text;
}

三、核心区别与原理
维度 表单提交(x-www-form-urlencoded) 请求体提交(application/json)
注解 无需特殊注解(或 @RequestParam) 必须使用 @RequestBody
数据来源 请求体中的键值对(或 URL query 参数) 请求体中的原始 JSON 字符串
解析方式 Spring 自动按名称映射到参数 / 实体属性 Spring 通过 HttpMessageConverter 解析 JSON 为实体(默认使用 Jackson)
支持的数据结构 仅支持扁平键值对(不支持嵌套对象) 支持任意复杂结构(嵌套对象、数组等)
四、常见问题与解决方案
参数名不匹配
表单提交:使用 @RequestParam(“表单字段名”) 映射,例如 @RequestParam(“user_name”) String username。
JSON 提交:在实体类属性上用 @JsonProperty(“json字段名”) 映射,例如:

public class UserJson {@JsonProperty("user_name") // 对应 JSON 中的 "user_name"private String username;
}

日期格式转换
表单提交:通过 @DateTimeFormat(pattern = “yyyy-MM-dd”) 注解转换,例如:

public class UserForm {@DateTimeFormat(pattern = "yyyy-MM-dd")private LocalDate birthday;
}

JSON 提交:通过 @JsonFormat 注解指定格式,例如:

public class UserJson {@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")private LocalDateTime createTime;
}

400 错误(参数解析失败)
检查参数类型是否匹配(如表单提交的字符串无法转为数字)。
检查 JSON 格式是否正确(如缺少引号、逗号)。
检查实体类是否有默认构造函数(JSON 解析需要)。
通过上述方式,Spring Boot 能灵活处理两种主流的 HTTP 数据提交格式,开发者只需根据前端提交的 Content-Type 选择对应的接收方式即可。

http://www.dtcms.com/a/502336.html

相关文章:

  • 推广网站软文建设一个棋牌网站都得准备什么用
  • 网站后台问题南京做网站设计
  • 分享设计作品网站建筑信息查询平台
  • 网站建设哪里可以学网站开发职责与要求
  • 君山区建设局网站哈尔滨公司网站建设多少钱
  • 广西公司做网站鹤壁做网站多少钱
  • 网站建设方案步骤上海网站开发招聘
  • 上海公司网站设计北京朝阳网站设计
  • 网站零基础学电脑培训班沈阳关键词优化价格
  • 网站开发框架拓扑电子商务网站推广策略
  • 关于企业的网站iis搭建网站
  • 建网站的设备我是做装修的怎么样投资网站
  • 广州手机网站定制咨询wordpress产品列表页
  • 深圳网站seo建设wap网站asp源码
  • 网站主页面设计模板郴州网签查询
  • dede可以做商城网站吗网站建设报价单格式
  • 系部网站建设中期检查表代理怎么做
  • wordpress企业网站DIY电子商务 网站系统
  • 电商电商网站建设网站建设关键字优化
  • 智能响应式网站欧美网站建设教程
  • 佛山新网站建设市场上海十大黑心装修公司
  • 买个网站域名要多少钱一年专门做商标的网站有哪些
  • 做外贸网站案例兰州市科协网站
  • 手机网站功能分析免费项目网站
  • 做个商城网站多少钱郑州建设企业网站公司
  • 广州网站建设骏域网站制作的合同
  • 海淀公司网站建设方案应用公园收费标准
  • 重庆网站建设维护网站怎样建设才叫人性化
  • 网站建设进展情况汇报公司网页设计报告5000字
  • 聊城手机网站建设WordPress缺省图