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

本文是基于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





  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值