前端传入数据,后端接收数据,并封装为指定的JavaBean对象,主要有两种方式
方式一
前端以参数–值的方式传递数据,后端使用BeanUtils进行装配
JavaBean
package com.qianfeng.business.vo;
import lombok.Data;
import java.io.Serializable;
@Data
public class RoleVo implements Serializable {
private String roleName;
private String roleDescription;
private Integer perId;
}
前端
$("#submit").click(function () {
var data1 = {
roleName: $("#roleName").val(), roleDescription: $("#roleDes").val(),
perIdList: getPerIdList()
}
$.post(
@"/roles/addRole",
data1,
function (data) {
if (data.code == 100) {
alert(data.msg)
location.href = data.view
} else {
alert(data.msg)
}
},
"json"
)
})
})
后端
Map<String, String[]> parameterMap = req.getParameterMap();
RoleVo roleVo=new RoleVo();
BeanUtils.populate(roleVo, parameterMap);
方式二
前端以json字符串的方式传递数据,后端使用json解析并进行装配,因为使用BeanUtils无法解析有复杂属性的对象的,比如对象有个属性是list的,这个时候就必须使用json解析并进行装配了
JavaBean
package com.qianfeng.business.vo;
import lombok.Data;
import java.io.Serializable;
import java.util.List;
@Data
public class RoleVo implements Serializable {
private String roleName;
private String roleDescription;
private List<Integer> perIdList;//beanUtils无法处理集合属性
}
前端
// 添加数据
$("#submit").click(function () {
var data1 = {
"roleName": $("#roleName").val(), "roleDescription": $("#roleDes").val(),
"perIdList": getPerIdList()
}
$.post(
"/roles/addRole",
JSON.stringify(data1),//转化为json字符串
function (data) {
if (data.code == 100) {
alert(data.msg)
location.href = data.view
} else {
alert(data.msg)
}
},
"json"
)
})
})
后端
private String getJsonStr(HttpServletRequest req) throws IOException {
ServletInputStream reqInputStream = req.getInputStream();//获取传递过来的数据
byte[] bytes = new byte[1024];
reqInputStream.read(bytes);//读取数据
String jsonStr = new String(bytes, "UTF-8");//转化为字符串
return jsonStr;
}
String jsonStr = getJsonStr(req);
ObjectMapper objectMapper = new ObjectMapper();
Object obj = objectMapper.readValue(jsonStr, paramType);//转化为对象