`
阅读更多

spring MVC如何返回json呢?

有两种方式:

方式一:使用ModelAndView

@ResponseBody
	@RequestMapping("/save")
	public ModelAndView save(SimpleMessage simpleMessage){
		//查询时可以使用 isNotNull
		if(!ValueWidget.isNullOrEmpty(simpleMessage)){
			try {
				//把对象中空字符串改为null
				ReflectHWUtils.convertEmpty2Null(simpleMessage);
			} catch (SecurityException e) {
				e.printStackTrace();
			} catch (NoSuchFieldException e) {
				e.printStackTrace();
			} catch (IllegalArgumentException e) {
				e.printStackTrace();
			} catch (IllegalAccessException e) {
				e.printStackTrace();
			}
		}
		simpleMessage.setCreateTime(TimeHWUtil.getCurrentTimestamp());
		simpleMessage.setHasReply(Constant2.SIMPLE_MESSAGE_HAS_REPLY_NOT_YET);
		this.simpleMessageDao.add(simpleMessage);
		Map map=new HashMap();
		map.put("result", "success");
		return new ModelAndView(new MappingJacksonJsonView(),map);
	}

 

 

方式二:返回String

/***
	 * {"fileName":"20141002125209_571slide4.jpg","path":"D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\upload\\image\\20141002125209_571slide4.jpg"}
	 * @param file
	 * @param request
	 * @param response
	 * @return
	 * @throws IOException
	 */
	@ResponseBody
	@RequestMapping(value = "/upload",produces="application/json;charset=UTF-8")
	public String upload(
			@RequestParam(value = "image223", required = false) MultipartFile file,
			HttpServletRequest request, HttpServletResponse response)
			throws IOException {
		String content = null;
		Map map = new HashMap();
		if (ValueWidget.isNullOrEmpty(file)) {
			map.put("error", "not specify file!!!");
		} else {
			System.out.println("request:" + request);// org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest@7063d827
			System.out.println("request:" + request.getClass().getSuperclass());
			
			// // System.out.println("a:"+element+":$$");
			// break;
			// }
			String fileName = file.getOriginalFilename();// 上传的文件名
			fileName=fileName.replaceAll("[\\s]",	"");//IE中识别不了有空格的json
			// 保存到哪儿
			String finalFileName = TimeHWUtil.formatDateByPattern(TimeHWUtil
					.getCurrentTimestamp(),"yyyyMMddHHmmss")+ "_"
							+ new Random().nextInt(1000) + fileName;
			File savedFile = getUploadedFilePath(request,
					Constant2.UPLOAD_FOLDER_NAME + "/image", finalFileName,
					Constant2.SRC_MAIN_WEBAPP);// "D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\ upload\\pic\\ys4-1.jpg"
			System.out.println("[upload]savedFile:"
					+ savedFile.getAbsolutePath());
			// 保存
			try {
				file.transferTo(savedFile);
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			ObjectMapper mapper = new ObjectMapper();
			
			

			map.put("fileName", finalFileName);
			map.put("path", savedFile.getAbsolutePath());
			try {
				content = mapper.writeValueAsString(map);
				System.out.println(content);
			} catch (JsonGenerationException e) {
				e.printStackTrace();
			} catch (JsonMappingException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
//			System.out.println("map:"+map);
		}

/*
 * {"fileName":"20141002125209_571slide4.jpg","path":"D:\\software\\eclipse\\workspace2\\demo_channel_terminal\\upload\\image\\20141002125209_571slide4.jpg"}
 * */
		return content;

	}

 

两种方式有什么区别呢?

方式一:使用ModelAndView的contentType是"application/json"

方式二:返回String的            contentType是"text/html"

那么如何设置response的content type呢?

使用注解@RequestMapping 中的produces:

@ResponseBody
	@RequestMapping(value = "/upload",produces="application/json;charset=UTF-8")
	public String upload(HttpServletRequest request, HttpServletResponse response,String contentType2)
			throws IOException {
		String content = null;
		Map map = new HashMap();
		ObjectMapper mapper = new ObjectMapper();

		map.put("fileName", "a.txt");
		try {
			content = mapper.writeValueAsString(map);
			System.out.println(content);
		} catch (JsonGenerationException e) {
			e.printStackTrace();
		} catch (JsonMappingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		if("json".equals(contentType2)){
			response.setContentType(SystemHWUtil.RESPONSE_CONTENTTYPE_JSON_UTF);
		}
		return content;

	}

 

@RequestMapping(value = "/upload",produces="application/json;charset=UTF-8")

@RequestMapping(value = "/upload",produces="application/json")

spring 官方文档说明:

Producible Media Types

You can narrow the primary mapping by specifying a list of producible media types. The request will be matched only if the Accept request header matches one of these values. Furthermore, use of the produces condition ensures the actual content type used to generate the response respects the media types specified in the producescondition. For example:

@Controller
@RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")
@ResponseBody
public Pet getPet(@PathVariable String petId, Model model) {
    // implementation omitted
}

Just like with consumes, producible media type expressions can be negated as in !text/plain to match to all requests other than those with an Accept header value oftext/plain.

Tip
[Tip]

The produces condition is supported on the type and on the method level. Unlike most other conditions, when used at the type level, method-level producible types override rather than extend type-level producible types.

 

参考:http://hw1287789687.iteye.com/blog/2128296

http://hw1287789687.iteye.com/blog/2124313

1
1
分享到:
评论
4 楼 hw1287789687 2016-08-26  
枫子皓 写道
实测有效。第二种中间的代码不用太在意,只要用上@ResponseBody注解就行

 
3 楼 枫子皓 2016-08-24  
实测有效。第二种中间的代码不用太在意,只要用上@ResponseBody注解就行
2 楼 hw1287789687 2016-08-11  
小老头12 写道
你确定第二种有用吗?亲测!!!!!!!

我们工作中都是用的方式二,你自己亲测就知道了
1 楼 小老头12 2016-08-10  
你确定第二种有用吗?亲测!!!!!!!

相关推荐

    三个必备json包并附上spring mvc 返回json的配置

    最近在整spring mvc 返回json的配置,网上搜集整理了一下,觉得蛮有用的就共享出来,三个必备json包并附spring mvc 返回json的配置,此包有两个版本json包,一个2.6一个2.2

    spring mvc返回json几个包 jackson1.9.13

    总有4个包 jackson-core-asl-1.9.13.jar jackson-core-lgpl-1.9.13 jackson-mapper-asl-1.9.13 jackson-mapper-lgpl-1.9.13

    Spring MVC返回JSON数据 用到的jar包

    在Spring MVC中,为了将Java对象转换成JSON格式并返回给客户端,我们需要依赖于JSON库。在提供的信息中,提到了`jackson-all-1.9.x.jar`系列的包,这是Jackson库的一个早期版本。Jackson是一个非常流行的JSON处理库...

    spring mvc json&&jackson jquery js

    1. **创建Controller**:定义Spring MVC的控制器类,使用`@RequestMapping`注解映射URL,并使用`@ResponseBody`返回JSON数据。 2. **配置Jackson**:在Spring配置文件中启用Jackson并配置其属性,如日期格式化。 3. ...

    spring mvc(整合了json)

    4. **控制器方法的编写**:在 Spring MVC 的控制器类中,我们可以定义处理 HTTP 请求的方法,并使用 `@RequestBody` 和 `@ResponseBody` 注解来接收和返回 JSON 数据。例如: ```java @RequestMapping(value = "/...

    spring MVC 对 ResponseBody返回json数据进行脱敏处理

    在Spring MVC框架中,开发Web应用时经常需要将对象转换为JSON格式的数据并返回给客户端。然而,在处理敏感数据时,我们可能希望对这些数据进行脱敏,即隐藏或替换某些字段,以保护用户隐私或者确保数据安全性。本文...

    Spring MVC 学习笔记 九 json格式的输入和输出

    对于响应,我们可以返回一个对象或集合,Spring MVC会自动将其转换为JSON并设置合适的HTTP响应头。例如,我们可以在控制器方法中返回一个`List<User>`,客户端将收到一个包含用户列表的JSON数组。 5. **自定义JSON...

    解决spring mvc 返回json数据到ajax报错parseerror问题

    最近使用ajax接收spring mvc传过来的json数据时总是出现parseerror的错误,下面通过本文给大家分享spring mvc 返回json数据到ajax报错parseerror问题的解决方法,需要的朋友参考下吧

    用Spring MVC 搭建JSON 数据服务器(二)

    在本教程中,我们将深入探讨如何使用Spring MVC框架构建一个返回JSON格式数据的服务器。首先,这个项目涉及的技术栈包括Spring MVC、JDBC、JSON以及Gson。Spring MVC是Spring框架的一部分,它允许我们构建RESTful ...

    用Spring MVC 搭建JSON 数据服务器

    在这个过程中,我们将学习如何使用 Spring MVC 来创建一个返回 JSON 格式数据的服务器,以及如何在 Android 应用中消费这些数据。 ### 第一部分:环境准备 1. **Eclipse Neon**:这是一个集成开发环境,用于编写 ...

    spring-mvc-jsonview源代码

    当返回类型为@RequestBody或@ResponseBody时,Spring MVC会自动将返回的对象转换为JSON,发送到客户端。 三、源代码分析 1. pom.xml:项目依赖管理文件,包含了Spring MVC、Jackson库和其他相关依赖。例如,添加...

    SpringMVC返回JSON数据相关Jar包

    4. `spring-webmvc.jar`: Spring MVC的Web模块,包含了处理HTTP请求和响应,以及视图解析等功能。`HandlerAdapter`和`HandlerMethodReturnValueHandler`接口在此过程中起着关键作用,它们识别`@ResponseBody`注解并...

    Spring mvc Json处理实现流程代码实例

    本文将深入探讨Spring MVC中JSON处理的实现流程,包括接收JSON参数和返回JSON响应。 1. **接收JSON参数** 当前端(如浏览器)向服务器发送JSON数据时,Spring MVC 提供了多种接收方式。一种是通过`...

    spring4 mvc json配置jar包

    在开发基于Spring4 MVC的Web应用时,JSON(JavaScript Object Notation)是一种常见的数据交换格式,用于前后端之间的通信。为了使Spring MVC能够处理JSON序列化和反序列化,我们需要引入一系列的Jackson库。这些库...

    springmvc返回json用到的jar包

    在Spring MVC框架中,开发人员经常需要将服务器端的数据以JSON(JavaScript Object Notation)格式返回给客户端,例如Web前端或API调用者。JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和...

    spring—mvc -json

    本示例提供了一个完整的返回JSON数据的接口的Spring MVC Demo,帮助开发者理解如何在Spring MVC应用中实现JSON序列化和反序列化。 首先,我们需要了解JSON的基本结构。JSON是一种轻量级的数据交换格式,它基于...

    SpringMVCDemo:Spring MVC 框架知识案例

    1.创建第一个 Spring MVC 程序案例 2.Spring MVC @RequestMapping 注解案例 ...12.Spring MVC 实现 JSON 数据返回案例 13.Spring MVC 文件的上传与下载案例 14.Spring MVC 拦截器案例 15.Spring MVC 异常处理案例

    spring mvc json学习

    在本文中,我们将深入探讨“Spring MVC JSON学习”这一主题,重点关注如何在Spring MVC应用中处理JSON数据。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁性和易读性而被广泛应用。 ...

    spring mvc 接口

    ### Spring MVC 接口返回 JSON 数据详解 #### 一、Spring MVC 概念与作用 Spring MVC 是 Spring Framework 的一个重要模块,它实现了 MVC(模型-视图-控制器)设计模式,帮助开发者构建易于维护和扩展的 Web 应用...

    最全最经典spring-mvc教程

    除此之外,教程可能还会涵盖Spring MVC的RESTful API设计,如何创建JSON响应,以及使用Spring Boot快速构建Spring MVC应用。Spring Boot简化了配置,提供了预配置的依赖,使得开发者能更快地启动项目。 错误处理和...

Global site tag (gtag.js) - Google Analytics