一个前端学习者对“前后端发送接收数据”的总结

总结

当客户端向服务端发送http的请求包含发送数据时,客户端要注意根据服务端处理发送数据的特定方式来选择http中Content-type属性的值(Content-type默认是application/x-www-form-urlencoded),虽然浏览器会根据你选择的Content-type值将发送数据处理成对应的数据格式,但最好私下将要发送的数据预处理成符合Content-type值的格式

分析

重点在于先认识HTTP的Content-Type属性 ,它用于标识传输数据的类型。在客户端发送的请求包含发送数据时,Content-Type告诉服务端实际发送数据的类型
Content-Type类型有很多,我最熟悉是这两种:
1、application/x-www-form-urlencoded
编码形式:键值对 name1=value1&name2=value2
2、application/json
编码形式:json格式 {key1:value1,key2:value2}

如果Content-type的值没有对应服务端接收数据格式服务端是无法接收客户端发送的数据的

例如:
服务端PHP使用$_POST接收请求发送的数据。当前端 使用post请求,明确Content-type值为application/json,那么PHP将无法接收这个请求发送的数据。
因为$_POST不接收application/json格式的数据

### 后端接收前端数据的方式及实现方法 在前后端分离的架构中,后端通常通过 HTTP 协议与前端交互。对于 Java 技术栈而言,常见的框架如 Spring Boot 或 Servlet 可用于处理来自前端的数据请求。以下是关于后端如何接收前端发送数据的具体方式及其实现方法。 #### 1. 接收 JSON 数据 当前端以 JSON 格式传递数据后端可以通过 `HttpServletRequest` 的输入流读取并解析 JSON 数据。具体实现如下: ```java BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream(), "utf-8")); String body = IOUtils.toString(reader); // 使用第三方库(如 Jackson 或 Gson)将 JSON 字符串转换为对象 ObjectMapper objectMapper = new ObjectMapper(); MyDataClass data = objectMapper.readValue(body, MyDataClass.class); ``` 这种方式适用于 POST 请求中的 JSON 数据传输[^1]。 #### 2. 使用注解自动绑定参数 Spring MVC 提供了强大的注解机制来简化数据接收过程。例如,使用 `@RequestBody` 注解可以直接将 JSON 数据映射到 Java 对象中。 ```java @RestController public class MyController { @PostMapping("/submit") public ResponseEntity<String> submit(@RequestBody MyDataClass data) { // 处理接收到的对象 return ResponseEntity.ok("Success"); } } ``` 此方法依赖于框架内部的序列化/反序列化工具(如 Jackson),能够显著减少手动解析的工作量[^4]。 #### 3. 文件上传支持 如果涉及文件上传操作,则需要额外配置 multipart 表单的支持。以下是一个基于 Spring Boot 的示例: ```java @PostMapping("/upload") public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) throws IOException { if (!file.isEmpty()) { byte[] bytes = file.getBytes(); Path path = Paths.get(UPLOAD_DIR + file.getOriginalFilename()); Files.write(path, bytes); return ResponseEntity.ok("Upload successful!"); } else { return ResponseEntity.badRequest().body("Failed to upload empty file."); } } ``` 在此场景下,前端可能采用 Vue.js 结合工具库(如 Plupload 或 Axios)发起文件上传请求[^2]。 #### 4. Token 和 Session 验证 为了保障通信安全,在实际项目中往往还需要引入身份验证机制。虽然初学者可暂忽略这部分细节,但在生产环境中建议实施 JWT(JSON Web Token)或其他类似的认证方案[^3]。 --- ### 总结 综上所述,Java 后端可通过多种途径接收前端发来的各类数据,包括但不限于直接读取 InputStream、利用框架特性完成自动化绑定以及针对特殊需求设计专属解决方案。随着经验积累和技术水平提升,开发者应逐步深入学习诸如安全性加固等方面的知识点。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值