SpringMVC返回json数据格式(返回值作为响应体)

来源:互联网 发布:医学影像工作站软件 编辑:程序博客网 时间:2024/05/26 08:42

       本文探讨了基于注解方式的SpringMVC(3.1版本以上)返回值(响应体)的类型的探讨,由于xml格式解析的复杂化和js平台支持状况,下面主要探讨了基于返回json格式数据的返回值类型的问题,可以返回三种类型的数据会被转换为json格式,第一种:Map类型;第二种:List<pojo>类型;第三种:pojo类(类里面只有属性和set、get方法,属性也可以是map和List,如果是map和list则返回的json为复杂格式的json)

第一步:配置SpingMVC注解模式和json格式数据支持(springmvc-servlet.xml)

   

<!--  启动Spring MVC的注解功能,完成请求和注解POJO的映射  -->

 <mvc:annotation-driven />
 <!-- 自动搜索@Controller标注的类 -->
<context:component-scan  base-package ="com.**.controller"/>
<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> 
            <!-- JSON格式支持 -->
             <bean class = "org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">   
              <property name = "supportedMediaTypes">
                    <list>
                        <value>text/html;charset=UTF-8</value>   
                   </list>   
              </property>   
            </bean> 
       </list>   
</property>
</bean>


第二步:编写controller

@Controller
@RequestMapping("/testController")
public class ContractQueryController {

@RequestMapping(value = "/test1")
// 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter(以在上面定义完毕)转换为指定格式后,写入到Response对象的body数据区。

@ResponseBody      

public  List<String>  test (){

          List  list = new ArrayList();

           list.add("1");

           list.add(,"2");

           list.add("3");

return  list;

}

@RequestMapping(value = "/test2")

@ResponseBody      

public  Map<String, String>  test1 (){

      Map<String, String> map = new HashMap<String, String>();

   map.put("1", "value1");
   map.put("2", "value2");
   map.put("3", "value3");

     return  map;

}

@RequestMapping(value = "/test3")

@ResponseBody      

public  DataGird  test3(){

      DataGird dataGird=new DataGird();

        List  list = new ArrayList();

        list.add("1");

        list.add("2");

        list.add("3");

   Map<String, String> map = new HashMap<String, String>();

   map.put("1", "value1");
   map.put("2", "value2");
   map.put("3", "value3");

     dataGird.setRows1(list);

     dataGird.setRows2(map);

     dataGird.setA("mmmmm");

     return  dataGird;

}

第三步编写DataGird类(pojo)

public  class DataGird{

    private List<String>  rows1;

     private  Map<String, String> rows2;

    private String a;
    

    public List<String> getRows1() {
        return rows1;
    }

    public void setRows1(List<String> rows1) {
        this.rows1 = rows1;
    }

    public Map<String, String> getRows2() {
        return rows2;
    }

    public void setRows2(Map<String, String> rows2) {
        this.rows2 = rows2;
    }

    public String getA() {
        return A;
    }

    public void setA(String a) {
        A = a;
    }

}

第四步,编写js来测试是否能获取数据

function test(){

$.ajax({
type: "get",
url: "/上下文路径/testController/test1",
datatype: "json",
async: false,
data: ,
success: function(data){

                             $.each(data, function(key,val){

                                                 alert("k"+"是:"+val);                                                 

}

}


  


1 0
原创粉丝点击