Httpservletrequest也可以用来接收http请求的参数,比如ajax的请求
在JAVA项目开发中,接口的接收参数有的是以json
字符串 形式接收的,后台写法如下:
public ObjectMapper jsonTranster = new ObjectMapper(); @CrossOrigin @RequestMapping(value="/add" ,method=RequestMethod.POST) public Object addZjLy(@RequestBody String po){ FpzjLyb sq; try { sq = jsonTranster.readValue(po, FpzjLyb.class); } catch (IOException e) { return getResultMap(3); } //此处省略 }
对于这种的接收,前端ajax的写法如下:
var zzData = { id:1 }; zzData = JSON.stringify(zzData); //必写 $.ajax({ url: interUrl + "/fpzjZzsq/add", type: "POST", //必写(GET请求就写GET) dataType: "json", //必写 contentType: "application/json", //必写 data: zzData, success: function (data) { //此处省略 }, error: function (data) { console.log("") } })
有的是以HttpServletRequest
形式接收的,后台写法如下:
@RequestMapping(value="/login",method=RequestMethod.POST) @ResponseBody public Object loginForm(HttpServletRequest request) { String username = request.getParameter("username"); String password = request.getParameter("password"); //以下省略 }
对于这种的接收,前端ajax的写法如下:
var qData = { username:lingdada, password:121212 }; $.ajax({ type: "POST", url:"/fpzj/facade", contentType: "application/x-www-form-urlencoded", data: qData, success: function (data) { //此处省略 }, error: function (data) { console.log("") } });
对于上边的注意地方是,contentType这个绝对不能写成那个application/json,因为这个是对json 才是用的,要用注解@RequestBody来接json格式的,为什么用requestbody可见url:https://www.cnblogs.com/qiankun-site/p/5774300.html对于application/x-www-form-urlencoded ,则可以用httpservletrequest来接收。亲测是有效,但是如果你前端项目里没有加上对于ajax的发送接口设置了一些初始的配置,我觉得,这个contentType可以不定义,但是你加上我这样的配置,绝对可以的。
原文:https://www.cnblogs.com/cherishforchen/p/10794756.html