SpringMVC中ajax传值的几种接收方式
来源:互联网 发布:淘宝代码怎么写 编辑:程序博客网 时间:2024/05/18 03:03
本文以springmvc为背景,模拟ajax发送get/post请求时,展示Controller层方法接收参数的几种方式。
- 传递的是普通的字段
<script type="text/javascript"> function test() { $.get("ajax/test", { "name" : "123", "age" : 23 }, function(data, status) { alert(data); }) }</script></head><body> <button id="btn" onclick='test()'>测试ajax</button></body>
无关乎是get方法还是post方法,使用ajax传递参数主要的是拼接json,拼接参数json。
方式一:一个萝卜一个坑,比对着传递的参数,在方法体中声明形参,如下:
@Controller@RequestMapping("/ajax")public class AjaxController { @RequestMapping(value = "/test", method = RequestMethod.POST) public String doSomethins(String name, int age) { return "index"; }}
这种方式,若是GET请求,还可以直接将参数拼在URL后面,如ajax/test?name=123&age=23 获取方式不变
方式二:由于ajax是借助于http协议来发送请求,接收响应的。而且是web项目嘛,所以可以使用HttpServletRequest这个类来获取参数,如下:
@Controller@RequestMapping("/ajax")public class AjaxController { @RequestMapping(value = "/test", method = RequestMethod.POST) public String doSomethins(HttpServletRequest request) { String name = request.getParameter("name"); //这里未进行类型转换 String age = request.getParameter("age"); return "index"; }}
- 若传递的是普通对象
public class User implements Serializable { private static final long serialVersionUID = -5824634576564462723L; private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}
POST请求的话,传递到后台的必须是JSON字符串,而不应该是JSON对象。而且还要显示的设置contentType : ‘application/json;charset=UTF-8’,不然会报出415错误。
还要注意的是 json字符串中的字段要与对象中是完全一致的。 如配置皆正确,还是出现415错误,那可能缺少解析json的jar包,如jackson-mapper-asl,jackson-core-asl;亲测有用JSON.stringify(obj)==>可以将json对象转化为json字符串
JSON.parse(obj)==>可以将json字符串转化为json对象
json对象,如var user={name:”123”,age:23};
json字符串,如var user={“name”:”123”,”age”:23}
//这里贴出js代码function test() { var user = { name : "123", age : 23 }; var userData = JSON.stringify(user); $.ajax({ url : 'ajax/test', dataType : 'json', contentType : 'application/json;charset=UTF-8', type : 'POST', data : userData, async : true, success : function(data, status) { } });
//贴出代码,这里的user对象是有数据的,即ajax传递过来的@RequestMapping(value = "/test", method = RequestMethod.POST)//@RequestBody 接收的参数格式必须是json public String doSomethins(@RequestBody User user) { return "index"; }
- 若传递的是集合数组
若依然使用POST方式传递参数,则跟上述POST传递方式类似,只是对象变成了集合,而后台接收的形参变成了集合,代码如下:
function test() { var lists = JSON.stringify([ { name : "123", age : 23 }, { name : "124", age : 24 } ]); var user = { name : "123", age : 23 }; $.ajax({ url : 'ajax/test', dataType : 'json', contentType : 'application/json;charset=UTF-8', type : 'POST', data : lists, async : true, success : function(data, status) { } }); }
@RequestMapping(value = "/test", method = RequestMethod.POST) public String doSomethins(@RequestBody List<User> user) { return "index"; }
GET方式传递对象
依照上述思想使用GET方式传递对象时,一直400。还请熟悉的大神指点。另外,若非得使用GET传递对象,可以以单个字段的形式传递到后台,再拼成对象,不过较为麻烦。
以上,若有错误,请指出,谢谢!
- SpringMVC中ajax传值的几种接收方式
- C#中POST数据和接收的几种方式
- springMVC接收参数的几种形式
- SpringMVC返回值的几种方式
- springmvc前台给后台传值的几种方式
- springmvc前台给后台传值的几种方式
- springmvc前台给后台传值的几种方式
- 【springmvc】传值的几种方式&&postman接口测试
- springmvc前台给后台传值的几种方式
- 在SpringMVC中获取request对象的几种方式
- 在SpringMVC中获取request对象的几种方式
- 在SpringMVC中获取request对象的几种方式
- 在SpringMVC中获取request对象的几种方式
- 在SpringMVC中获取request对象的几种方式
- 在SpringMVC中获取request对象的几种方式
- 在SpringMVC中获取request对象的几种方式
- 在SpringMVC中获取request对象的几种方式
- 在SpringMVC中获取request对象的几种方式
- django报错解决,no attribute 'lru_cache'
- C++实现顺序栈
- 手机不能访问局域网服务器的解决办法
- 数据通信与网络
- Linux的一些重要命令
- SpringMVC中ajax传值的几种接收方式
- JS判断输入框值是否为空
- Ubuntu完整卸载postgresql
- SpringAOP实现mysql读写分离
- 单元测试中使用spring注入
- QT中文乱码问题(字符串变量)
- vue过滤器的使用(filter)
- 数百种编程语言,而我为什么要学 Python?
- echarts3 map