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/addUser
    public 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/value
        success: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格式转为user
        return 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 block
            e.printStackTrace();
        }
    }
    //发送的是JSON
    public static void renderJson(HttpServletResponse response,String text){
        render(response, "application/json;charset=UTF-8", text);
    }
    //发送xml
    public static void renderXml(HttpServletResponse response,String text){
        render(response, "text/xml;charset=UTF-8", text);
    }
    //发送text
    public static void renderText(HttpServletResponse response,String text){
        render(response, "text/plain;charset=UTF-8", text);
    }


}
posted on 2017-04-13 00:51  2637282556  阅读(143)  评论(0编辑  收藏  举报