您的位置:首页 > 编程语言 > Java开发

springMVC_json格式数据的接收和发送(未解决中文乱码问题)

2013-02-28 15:08 1206 查看
http://blog.csdn.net/asarja/article/details/8572115

本文是基于springMVC+jsp+jquery+json,做本次实践之前需要准备一下文件:

1.josn需要依赖的两个jar包:

网址:http://mvnrepository.com/artifact/org.codehaus.jackson



2.json需要依赖的两个js文件(本次实践基于jquery):

网址:http://code.google.com/p/jquery-json/

网址:http://jquery.com/download/





3.配置xxx-servlet.xml文件(springMVC配置文件):

配置如下:

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean>
<bean id="mappingJacksonHttpMessageConverter"
class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"
/>
4.设计jsp页面(简单说明):

<body>
<form action="#" method="post">
<input type="text" name="name">
<input type="button" value="ajax">
</form>
</body>


5.引用相应的js文件,ajax代码如下:

$(function(){
$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || "");
} else {
o[this.name] = this.value || "";
}
});
return o;
};

$("form input:button").bind("click",function(){
var name = $.toJSON($("form input:text:eq(0)").serializeObject());
alert(name);
jQuery.ajax({
type:"POST",
contentType:"application/json",
url:"/hello/testjson",
data:name,
dataType:"json",
success:function(data){
alert(data.success);
},
error:function(XMLHttpRequest , textStatus, errorThrown){
alert("textStatus:"+textStatus);
alert("Error:"+errorThrown);
},
async:true
});
});
});


6.设计后台ajax接受方法(这里使用一个变量接受):

@RequestMapping(
value="/testjson",
method={RequestMethod.GET,RequestMethod.POST}
)
@ResponseBody
public Map<String,String> testJson(
HttpServletResponse response,
HttpServletRequest request,
@RequestBody String name
){
System.out.println("name:"+name);
Map<String,String> map = new HashMap<String,String>();
try {
if(!validateString(name)){
map.put("success", "no");
return map;
}
map.put("success", "yes");
return map;
} catch (Exception e) {
map.put("error", e.getMessage());
return map;
}
}


执行如下操作:



结果: name:{"name":"zs"}

修改 第6步操作,代码如下(这里使用一个Vo接受json数据,Vo中包含一个name属性):

@ResponseBody
public Map<String,String> testJson(
HttpServletResponse response,
HttpServletRequest request,
@RequestBody JsonVo jsonVo
){
System.out.println("name:"+jsonVo.getName());
Map<String,String> map = new HashMap<String,String>();
try {
if(!validateString(jsonVo.getName())){
map.put("success", "no");
return map;
}
map.put("success", "yes");
return map;
} catch (Exception e) {
map.put("error", e.getMessage());
return map;
}
}


执行如下操作:



结果: name:zs
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: