1.页面传递json数据,ajax传递
jsp
<script type="text/javascript">$(document).ready(function(){$("#add").click(function(){var userName = $("#userName").attr("value");var age =$("#age").attr("value");var user = {userName:userName,age:age}; $.ajax({url:"/springMVC1/test/json/addUser",type:"post",data:user,success:function(a){alert("userName:" + a.userName + " age:" + a.age );}}); }); });
</script>
</head>
<body>姓名:<input type="text" id="userName" name="userName"><br>年龄:<input type="text" id="age" name="age"><br><input type="button" id="add" value="添加"></body>
controller
@Controller
@RequestMapping("/test/json")
public class TestJson {@RequestMapping("/addUser")// /test/json/addUserpublic void addUserJson(User user,HttpServletRequest request,HttpServletResponse response){//{"username":"userName","age","age"}也可以用对象转化json类来实现String result = "{\"userName\":\" "+ user.getUserName() +" \",\"age\":\" "+ user.getAge()+" \"}";PrintWriter out = null;response.setContentType("application/json");try {out = response.getWriter();out.write(result);} catch (IOException e) {e.printStackTrace();}}
2.使用@RequestBody,@ResponseBody来传递json
1)需要引入2个包
jackson-core-asl-1.9.11.jar
jackson-mapper-asl-1.9.11.jar
2.springMVC 配置只要引入注解就OK< mvc:annotation-driven />
3页面配置
<script type="text/javascript">
//请求json响应json
function requestjson(){$.ajax({type:'post',url:'${pageContext.request.contextPath }/jsonToJson',contentType:'application/json;charset=utf-8',data:'{"name":"李四","age":22}',//json串success:function(data){alert(data.name);//有打印李四}});}//请求key/value响应json
function responsejson(){$.ajax({type:'post',url:'${pageContext.request.contextPath }/KVToJson',data:'name=李四&age=23',//key/valuesuccess:function(data){alert(data.name);//有打印李四}});}
</script>
<title>json测试 </title>
</head>
<body><input type="button" value="请求json 返回json" onclick="requestjson()"/>
<input type="button" value="请求key/value 返回json" onclick="responsejson()"/>
</body>
controller
//请求json响应json@RequestMapping("/jsonToJson")public @ResponseBody User jsonToJson(@RequestBody User user)throws Exception{//ResponseBody 将user转为json格式//RequestBody 将json格式转为userreturn user;}//请求key/value响应json@RequestMapping("/KVToJson")public @ResponseBody User KVToJson(User user)throws Exception{//ResponseBody 将user转为json格式return user;}
3 对象转为json,返回给页面
JSONObject jo=new JSONObject();jo.put("bulidTree", bulidTree);// StringUtil.StringToJson(jo.toString());return StringUtil.StringToJson(jo.toString());public class ResponseUtils {//发送内容 public static void render(HttpServletResponse response,String contentType,String text){response.setContentType(contentType);try {response.getWriter().write(text);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//发送的是JSONpublic static void renderJson(HttpServletResponse response,String text){render(response, "application/json;charset=UTF-8", text);}//发送xmlpublic static void renderXml(HttpServletResponse response,String text){render(response, "text/xml;charset=UTF-8", text);}//发送textpublic static void renderText(HttpServletResponse response,String text){render(response, "text/plain;charset=UTF-8", text);}}