还有一种方式是以json格式传输,接收时若直接用bean接收则接收不到,此时应该用@RequestBody方式,需要注意的是接收的需要是json串,而不是json对象,可以在发送前使用JSON.stringify函数进行处理。
例子如下
客户端:
var url=path+'testConverter.html'
$.ajax( {
url : url,
type : "POST",
dataType:"json",
contentType:'application/jsoncharset=UTF-8',
data:JSON.stringify({userId:'1',userName:'hello',password:'test',credits:'2',lastIp:'',lastVisit:'1986-05-27'}),
success : function(data) {
alert(data.userName)
},
error:function(e){
alert("err")
}
服务端:
@RequestMapping(value="/testConverter.html")
@ResponseBody
public User testConverter(@RequestBody User user)
{
System.out.println(user.getUserName())
user.setUserName("testname")
return user
}
上面例子中服务端返回的是个对象,@ResponseBody函数会自动将其转换为客户端要求的‘ dataType:"json",’格式。
最后需要注意的是
1,在xxx-serverlet配置文件中应该写上,以便可以使用 @ResponseBody和@RequestBody
2,发送时要写上 contentType:'application/json'
3,数组内容要用[]而不是list,用list会接收到一个map对象,而不是bean。
<?phpclass Json{ public static function encode($str){ $code = json_encode($str)return preg_replace("#\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\1'))", $code)} public static function decode($str){ return json_decode($str)}}?>用上面的代码可以解决在存储JSON生成的字串为乱码的问题友情提示:参数为UTF-8编码过的字串或在用UTF-8保存的程序中直接引用上面的两个静态方法附:php pack()函数说明pack压缩资料到位字符串之中。语法: string pack(string format, mixed [args]...)返回值: 字符串(二进制)函数种类: 资料处理内容说明本函数用来将资料压缩打包到位的字符串之中。本函数和 Perl 的同名函数功能用法完全相同。参数 format 为压缩的格式,见下表a 将字符串空白以 NULL 字符填满A 将字符串空白以 SPACE 字符 (空格) 填满h 十六进位字符串,低位在前H 十六进位字符串,高位在前c 有号字符C 无号字符s 有号短整数 (十六位,依计算机的位顺序)S 无号短整数 (十六位,依计算机的位顺序)n 无号短整数 (十六位, 高位在后的顺序)v 无号短整数 (十六位, 低位在后的顺序)i 有号整数 (依计算机的顺序及范围)I 无号整数 (依计算机的顺序及范围)l 有号长整数 (卅二位,依计算机的位顺序)L 无号长整数 (卅二位,依计算机的位顺序)N 无号短整数 (卅二位, 高位在后的顺序)V 无号短整数 (卅二位, 低位在后的顺序)f 单精确浮点数 (依计算机的范围)d 倍精确浮点数 (依计算机的范围)x 空位X 倒回一位@ 填入 NULL 字符到绝对位置使用范例<?>android如果是通过http post发送数据的话,可以采用以下方式接收数据:
通过request.getParameter(paraName)获取参数。
request对象就是表示请求对象,getParameter就是获取参数,传递的参数就是参数名。
例如请求 localhost:8080/web?data=abcd 则服务器取值, request.getParameter("data")。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)