本文探讨了基于注解方式的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.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);
}
}