后端用Json传值给前端及前端接收的案例

后端代码:

StringBuffer stringBuffer = new StringBuffer("test123");

JSONObject jo = new JSONObject();
jo.put("content", stringBuffer.toString());
try {
	response.setContentType("text/json");
	response.setCharacterEncoding("utf-8");
	response.getWriter().print(jo);
} catch (IOException e) {
	e.printStackTrace();
}

前端ajax接收:

$.ajax({
		type:"post", 
   		async:false,
   		url:"DelJITASNTxt.do?id="+str,
   		dataType:"json",  
   		success: function (data) {
   			var content = data.content;
      		}
	}); 
### 请求参数绑定机制 在Spring MVC框架中,`@RequestParam` 和 `@RequestBody` 是用于处理HTTP请求的不同类型的注解。两者的主要区别在于如何解析和映射来自客户端的数据。 #### 使用@RequestParam 注解 当使用 `@RequestParam` 时,通常是从URL查询字符串或表单数据中获取参数。这意味着这些参数应该作为GET请求的一部分出现在URL后面,或者是POST/PUT等方法中的form-data部分。例如: ```java @RequestMapping("/example") public ResponseEntity<String> example( @RequestParam(value="paramName", required=false) String paramName){ // 处理逻辑... } ``` 这种方式适用于简单的键对形式的输入[^2]。 #### 使用@RequestBody 注解 而 `@RequestBody` 则是用来读取整个请求体的内容,并将其反序列化成Java对象。这特别适合于RESTful API的设计模式下发送JSON或其他结构化的消息体给服务器端。比如下面的例子展示了怎样接收一个复杂的DTO(Data Transfer Object)实例: ```java @PostMapping("/createUser") public User createUser(@RequestBody User user){ // 创建用户的业务逻辑... return userService.save(user); } ``` 此时前端可以构建如下格式的POST请求来递复杂的数据结构: ```json { "username": "john_doe", "email": "john@example.com" } ``` 需要注意的是,在实际应用中如果后端接口定义为只接受特定Content-Type如application/json,则必须确保前端设置相应的头信息并按照指定的方式编码数据;否则可能会遇到无法正确接收到参数的情况[^1]。 #### 实际案例对比 为了更直观地理解两者的不同之处,考虑这样一个场景——假设有一个API用来更新用户资料。一种实现可能是通过路径变量加上几个简单字段作为查询参数的形式提交修改后的个人信息;另一种则是直接把完整的用户实体作为一个整体放入请求体内输。 - **方案A (基于@RequestParam)**: `/updateProfile?userId=1&newEmail=jane.doe%40gmail.com` - **方案B (基于@RequestBody)**: ```http POST /updateProfile HTTP/1.1 Content-Type: application/json { "id": 1, "email": "jane.doe@gmail.com" } ``` 显然第二种做法更加灵活且易于扩展维护,尤其是在面对较为庞大的数据集或是频繁变动的需求时优势明显。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值