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

本文介绍了三种在SpringMVC中输出JSON数据的方法:直接写入OutputStream、返回字节数组及直接返回对象,并详细说明了如何配置依赖及转换器以实现这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>
这样三种方法可以同时使用了

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值