前提:springmvc可以自动将json数据转化为Java对象,而将对象转化为json数据,必须在配置文件中配置!,需要注解@responseBody,需要json包
在Java中,前端传递数据的方式是<from>标签<input>标签中的name属性,还有就是ajax
1、直接用map接收,键值对的形式,
这样子在方法的参数里面用一个map来接收,可以把前端所有数据以【key(name),value(value)】的方式封装进去,然后在后台取出来的时候,直接调用Map的get()
方法就可以把值取出来,例如:map.get("name");不过这种方法比较麻烦,取出来之后又要转类型,而且取值的过程中又需要遍历一次map,不大建议使用,虽然可以说接收任何参数
2.用一个user类来接收(from表单提交)
这种方法适合于前端页面的属性(name)属性和entity(user类)的属性一致的情况下才可以进行,否则会报错
3、如果前端的数据跟后台的entitiy的属性类型和数目不同的话,需要在前端自己 封装json数据,然后以Ajax的方式传到后台
在传输到后台的时候,前端的json数据要是json字符串才行,这样子springMvc才能接收呢,后台执行方法的接收参数里面可以用一个自己写的vo来接收,即value object,而且在接收参数的前面
@RequestBody应用
当时并不太了解@RequestBody,也并没有使用js提供的JSON.stringify()方法
所有都是自己写的,比如js将json转为字符串的方法,后台接收json转成实体的方法。
最近接触到了@RequestBody,于是想将之前的代码改写一下。
首先@RequestBody需要接的参数是一个string化的json,这里直接使用JSON.stringify(json)这个方法来转化
其次@RequestBody,从名称上来看也就是说要读取的数据在请求体里,所以要发post请求
第三,要设置contentType,contentType:"application/json,明确的告诉服务器发送的内容是json,而默认的contentType是application/x-www-form-urlencoded; charset=UTF-8
需要写一个@RequestBody注解:
4,当接收参数的时候,用@RequestParam,并且
当不用@ RequestParam时候,必须保证和前端传递name名字相同,否则必须按照严格的格式写@RequestParam(value="path") String path1!!