在SpringMVC中,要使用ajax从前端发json字符串给后端,需要在请求头里面设置
contentType: “application/json;charset=UTF-8”,
然后后端的方法上有标记上@RequestBody注解,这样SpringMVC会帮我们自动解析json字符串,封装到对应的JavaBean里,前提是JavaBean里要有对应的属性,即和传过来json字符串的key相同的名称
下面是演示
从前端发送json字符串给后台查询用户是否存在
contentType是请求的数据格式
data是发送的数据
type是发送请求的类型
dataType是返回数据的格式
$("#btn-sumbit").on("click",function () {
var username = $("#exampleInputEmail1").val();
var password = $("#exampleInputPassword1").val();
var str= {"username":username,"password":password};
$.ajax({
url :"/user/login",
contentType: "application/json;charset=UTF-8",
dataType:"text",
data: JSON.stringify(str),
type:"post",
error:function () {
alert("服务器出错啦");
},
success:function (data) {
if(data.toString().trim()=="success"){
window.location = "/pages/main.jsp";
}else {
alert("账号或密码错误");
}
}
});
后台代码
这里之前是想直接尝试在后台如果查询到对应的用户就直接转发到另一个页面的,但是@ResponseBody有限制
所以不能直接跳转页面,只能交给前端处理
@ResponseBody
@RequestMapping(value = "/login",produces = "text/html;charset=utf-8")
public String login(@RequestBody(required = false) User user, HttpServletRequest request, HttpServletResponse response) throws IOException {
System.out.println(user);
User user1 = service.userExist(user);
if(user1 == null){
//response.getWriter().write("请先注册");
return "false";
//return "redirect:login.html";
}
return "success";
}