类型一:请求:key/value ,后端返回:text,方式:Get
前端:传输数据类型:key/value ,返回数据类型:text
后端:接收方式:形参名绑定key名获取数据,返回方式:@ResponseBody返回字符串
@RequestMapping(value = "/a",produces="application/json; charset=utf-8")//produces修正@responsebody返回乱码的问题
//前端 发送key/value
$.get({
url:"${pageContext.request.contextPath}/user/nameRepeat",
data:{"name":$("#username").val()},
dataType:"text", //返回的数据类型
success:function (data) {
if(data.toString()=="pass"){
$("#nameError")[0].innerHTML='用户名可用';
$("#nameError").css({"color":"green"});
}else {
$("#nameError")[0].innerHTML = "用户名重复,请重新输入";
$("#nameError").css({"color":"red"});
}
}
})
//后端 形参绑定 + 返回字串
@RequestMapping("/nameRepeat")
@ResponseBody
public String isNameRepeat(String name){
logger.info("检查用户名是否重复");
boolean isRepeat = userService.UsernameIsRepeat(name);
if(isRepeat){
logger.info("用户名已存在");
return "";
} else {
logger.info("用户名可用");
return "pass";
}
}
类型二:请求:JSON,后端返回text,方式:POST
后端用实体类接收,前端必须使用 json字符串传输,否则后端实体类无法绑定
前端:传输数据类型:JSON字符串;使用js对象封装数据,使用JSON.stringify(user)将用户名转为JSON字符串。
附:JSON.parse()可以将 JSON字符串转为一个对象 JSON.stringify() JSON对象转为JSON字符串
后端:接收方式:实体类接收(需使用@RequestBody绑定),返回类型:字串
//前端 发送json
var jsonUser=JSON.stringify(user);//js对象转为json
$.post({
url:"${pageContext.request.contextPath}/user/userLogin",
data:jsonUser,//json格式
contentType: "application/json;charset=UTF-8",//发送json需要定义
dataType:"text",//返回数据类型
success:function(data) {
if(data=='pass'){
location.href="${pageContext.request.contextPath}/book/index";
}else {
alert('请输入正确的用户名或密码');
}
}
})
//后端 实体类接收 返回字符串
@RequestMapping("/userLogin")
@ResponseBody
public String userLogin(@RequestBody user user, HttpServletRequest request){..}
类型三:请求:key/value,后端返回json,方式GET
遇到:ajax发送key/value传递查询范围,controller使用map接收,但是map会自动将integer类型的页码转为String类型导致查询失败,所以需要进行String转integer强转
前端:发送key/value数据
后端:map接收 *map需要使用注解@RequestParam才能绑定。使用@ResponseBody将实体类转换为json字符串传输到前端。但是需要配置jackons依赖包且开启注解驱动 <mvc:annotation-driven/>
jackson-core jackson-databind jackson-annotations
//前端 发送key/value
$.getJSON("/book/allBook",{"startIndex":startIndex,"pageSize":pageSize},function (data) {})
//后端 使用map接收
@RequestMapping("/allBook")
public @ResponseBody List<book> AllBook(@RequestParam Map<String,String> map){}