Spring MVC返回JSON数据

24 篇文章 0 订阅
23 篇文章 0 订阅

Spring MVC对JSON数据的返回提供了良好的支持,现在介绍三种方式:

  • 使用@ResponseBody标注
  • 使用ResponseEntity
  • 使用HttpServletResponse对象返回JSON数据

注意:方式一和方式二,都依赖jackson-databind-版本号.jar、jackson-annotations-版本号.jar、jackson-core-版本号.jar 这几个jar包,也就是项目要导入这三个jar包,并且要定义Json视图解析器!!


例子:

pom.xml文件中添加以下内容,让项目添加所需要的相关的jackson包:

 

<!-- JACKSON包,让Spring MVC支持JSON视图的解析以及返回JSON数据进行呈现 -->
<!-- jackson-databind-版本号.jar 依赖以下两个包,也会自动添加进来 
     jackson-annotations-版本号.jar 
	 jackson-core-版本号.jar 
	  例如:jackson-databind-2.5.4.jar,就依赖jackson-annotations-2.5.0.jar和jackson-core-2.5.4.jar这两个包
-->
<dependency>
	<groupId>com.fasterxml.jackson.core</groupId>
	<artifactId>jackson-databind</artifactId>
	<version>2.5.4</version>
</dependency>
<!-- end -->

Json视图解析器:

 

 

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
		<property name="order" value="1" />
		<property name="defaultViews">
			<list>
				<!-- Json视图 -->
				<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"/>
			</list>
		</property>
	</bean>

ReturnJsonController.java:

 

 

package edu.mvcdemo.controller;

import javax.servlet.http.HttpServletResponse;
import org.springframework.context.annotation.Scope;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import edu.mvcdemo.model.User;

/**
 * @编写人: yh.zeng
 * @编写时间:2017-8-7 下午10:12:26
 * @文件描述: Controller返回JSON数据的demo
 */
@Controller
@Scope(value="singleton") //只实例化一个bean对象(即每次请求都使用同一个bean对象),默认是singleton
public class ReturnJsonController {
	
	/**
	 * 方式一:使用@ResponseBody标注
	 * @param userId
	 * @return
	 */
	@ResponseBody
	@RequestMapping(value="/jsontype/view1/users/{userId}", method=RequestMethod.GET)
	public User getUserInJson(@PathVariable("userId") Integer userId){
		User user = new User();
   	    user.setNo(userId);
   	    user.setUserName("user"+userId);
		return user;
	}
	
	/**
	 * 方式二:使用ResponseEntity
	 * @param userId
	 * @return
	 */
	@RequestMapping(value="/jsontype/view2/users/{userId}", method=RequestMethod.GET)
	public ResponseEntity<User> getUserInJson2(@PathVariable("userId") Integer userId){
		User user = new User();
   	    user.setNo(userId);
   	    user.setUserName("user"+userId);
		return new ResponseEntity<User>(user, HttpStatus.OK);
	}
	
	/**
	 * 方式三:使用HttpServletResponse对象返回JSON数据
	 * @param userId
	 * @param response
	 * @throws Exception
	 */
	@RequestMapping(value="/jsontype/view3/users/{userId}", method=RequestMethod.GET)
	public void getUserInJson3(@PathVariable("userId") Integer userId, HttpServletResponse response) throws Exception{
		response.setContentType("application/json");
		response.getWriter().println("{\"no\":"+userId+",\"userName\":\"user"+userId+"\",\"age\":null}");
	}

}

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值