您的位置:首页 > 其它

AJAX三种返回查询结果的三种方式

2017-11-22 09:41 281 查看
1、第一种

/**
* 原始的输出json方式
* OutputStream os;
* os.write(通过第三方json-lib转换的json字符串.getByte())
*/
@RequestMapping(value="/popo",method=RequestMethod.GET)
public String queryFood(String foodname, OutputStream os) throws UnsupportedEncodingException, IOException{
List<Map<String, Object>> queryAllFood = mdi.queryAllFood(foodname);
JSONArray arry=JSONArray.fromObject(queryAllFood);
String j=arry.toString();
os.write(j.getBytes("UTF-8"));
return null;
}

2、第二种

/**
* 直接返回 字節數組   記得加@ResponseBody註解
*/
@ResponseBody
@RequestMapping(value="/queryFoodReturn",method=RequestMethod.GET)
public byte[] queryFoodReturn(String foodname) throws UnsupportedEncodingException, IOException{
List<Map<String, Object>> queryAllFood = mdi.queryAllFood(foodname);
JSONArray arry=JSONArray.fromObject(queryAllFood);
String j=arry.toString();
return j.getBytes("UTF-8");
}
3、第三种

/**
* 直接返回一个对象
*/
@ResponseBody
@RequestMapping(value="/queryFoodList",method=RequestMethod.POST)
public List<Map<String, Object>> queryFoodList(String foodname) throws UnsupportedEncodingException, IOException{
List<Map<String, Object>> queryAllFood = mdi.queryAllFood(foodname);
return queryAllFood;
}
注:但是直接返回一个对象浏览器是识别不了的  需要借助外部的jar包来帮浏览器解析

1、使用第三种方法需要在pom.xml配置文件中添加以下依赖的jar包

<!-- 添加jackson的json解析庫 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.12</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.12</version>
</dependency>
2、在springmvc.xml配置转换器

<!-- 启用注解驱动 -->
<mvc:annotation-driven validator="localValidatorFactoryBean">
<mvc:message-converters>
<!-- 用于對象消息轉換器 -->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html</value>
<value>application/x-www-form-urlencoded</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>


当配置完成后你会发现第二种方法用不了,这时有需要配置第二种方法的转换器

<!-- 启用注解驱动 -->
<mvc:annotation-driven validator="localValidatorFactoryBean">
<mvc:message-converters>
<!-- 用于字節數組的消息轉換器 -->
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html</value>
<value>application/x-www-form-urlencoded</value>
</list>
</property>
</bean>
<!-- 用于對象消息轉換器 -->
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html</value>
<value>application/x-www-form-urlencoded</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
这样三种方法可以同时使用了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐