SpringMVC--JSON数据

来源:互联网 发布:虚拟机下安装linux 编辑:程序博客网 时间:2024/06/01 10:24

1 解析后台传递过来的数据为JOSN
一般而言,Spring MVC 的 CONTROLLER 可以通过两种方式返回 JSON 数据给前端JSP页面
1.1 SpringMVC的配置文件添加解析器:

<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"></bean>    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">        <property name="messageConverters">            <list>                <ref bean="stringConverter" />                <ref bean="jsonConverter" />            </list>        </property>    </bean>

后台:

@RequestMapping("/json")    @ResponseBody    public List<User> json(){        List<User> list=new ArrayList<User>();        list.add(new User(1,"zhangsan","男"));        list.add(new User(2,"nico","女"));        list.add(new User(3,"zhangsa","男"));        return list;    }

前台:

$.post("ajax.do",function(data){                    for(var i=0;i,data.length;i++){                        html+="<tr><td>"+data[i].id+"</td><td>"+data[i].name+"</td><td>"+data[i].sex+"</td></tr>"                                           }                    $("#content").html(html);                });

1.2 将数据转为JSON数组的形式,前台解析
后台控制器,定义一个JSON数组,向数组中添加对象。

@RequestMapping("josntext")    public String text(HttpServletRequest request, HttpServletResponse response) {        JSONArray array = new JSONArray();        JSONObject object = null;        for (int i = 0; i < 5; i++) {            object = new JSONObject();            object.accumulate("a", 1);            object.accumulate("b", 2);            object.accumulate("c", 3);            object.accumulate("d", 4);            array.add(object);        }        request.setAttribute("arr", array);        return "josn";    }

返回的页面:

<script>    $(document).ready(function(){        var arr='<%=request.getAttribute("arr")%>';        alert(arr);        arr=JSON.parse(arr);//解析成了一个类似二维数组的形式        alert(arr[0].a);    });</script>

需要注意的是后台传递过来的数据为字符串的形式,需要转化为JSON数组。
出现的问题及解决方案:

报错:Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError:
commons/lang/exception/NestableRuntimeException] with root cause
抛了两个错误,从后一个中可知,是缺少JOSN相关的架包。
添加commons-lang.jar即可,必须保证有如下几个包:
commons-beanutils.jar commons-collections-3.1.jar commons-lang.jar commons-logging.jar
ezmorph-1.0.6.jar json-lib-2.2.2-jdk15.jar

2 对于某 Controller 而言,只有个别方法返回JSON数据的注解:在方法前增加注解 @ResponceBody即可

3 针对整个 Controller 而言,均返回 JSON 数据的注解:@RestController 代替 @Controller 。无需在方法中注明。

4 使用ObjectMapper将数据转为Json

List<Country> list=new ArrayList<Country>();list=createCountryList();//获取数据return(mapper.writeValueAsString(list));//转换

未完待续。。。

原创粉丝点击