`
joknm
  • 浏览: 62475 次
  • 性别: Icon_minigender_1
  • 来自: 南宁
社区版块
存档分类
最新评论

spring mvc 系列3 返回JSON以及文件上传

    博客分类:
  • JAVA
阅读更多
先来看下spring mvc提供返回为json数据的注解
/**
	 * 
	 * @功能模块: add
	 * @方法说明: 添加一个对象
	 * @version: 1.0
	 * @param goodsType
	 *            GoodsTypeModel
	 * @return Object spring 自动转换成 json 数据
	 * @throws
	 */
	@RequestMapping(params = "method=add")
	@ResponseBody
	public Object add(@ModelAttribute("goodsType") GoodsTypeModel goodsType) {
		return this.goodsTypeService.add(goodsType);// 返回的对象为:GoodsTypeModel
	}

返回头部content-type为:application/json


文件上传:
/**
	 * 
	 * @功能模块: add
	 * @方法说明: 处理 method=add 请求, 添加商品信息
	 * @version: 1.0
	 * @param goodsInfo
	 *            商品信息对象,由spring自动获取
	 * @param model
	 * @return ModelMap 由spring自动生成json数据
	 * @throws IOException 
	 * @throws
	 */
	@RequestMapping(params = "method=add")
	//@ResponseBody
	public void add(@ModelAttribute("goodsInfo") GoodsInfoModel goodsInfo,
			HttpServletResponse response) throws IOException {
		if (!goodsInfo.getMpFile().isEmpty()) {
			goodsInfo.setGiImg(FileUploadUtil.saveFileUpload(goodsInfo.getMpFile(),	GoodsInfoModel.DEFAULT_FILE_UPLOAD_DIR));
		}
		this.goodsInfoService.add(goodsInfo);
		//return this.goodsInfoService.add(goodsInfo);
		// EXT 文件上传时,要返回的头部信息类型为 text/html,
		// 而用@ResponseBody返回的头部信息为application/json所以自动转换类型
		// 由于本人能力有限,不知道如果要用@ResponseBody的时候怎么转换,呵呵
		JsonUtil.printJSON(response, new Result());
	}
	/*
	 * 多文件上传时,请使用:DefaultMultipartHttpServletRequest
	public String add(@ModelAttribute("goodsInfo") GoodsInfoModel goodsInfo, DefaultMultipartHttpServletRequest multipartRequest){
		List<MultipartFile> mpFiles = multipartRequest.getFiles("mpFile");
		String fileNames = null;
		for(MultipartFile mpFile : mpFiles){
			if( ! mpFile.isEmpty()){
				if(fileNames!=null){
					fileNames += "," + FileUploadUtil.saveFileUpload(mpFile, GoodsInfoModel.DEFAULT_FILE_UPLOAD_DIR);
				}else{
					fileNames = FileUploadUtil.saveFileUpload(mpFile, GoodsInfoModel.DEFAULT_FILE_UPLOAD_DIR);
				}					
			}
		}
		goodsInfo.setGiImg(fileNames);
		this.goodsInfoService.add(goodsInfo);
		return "redirect:/Product.do?method=list";
	}*/


EXT from 如果提交时添加:fileUpload: true 也就是文件上传时,要求返回的响应头部content-type为:text/html,而@ResponseBody返回的响应头部为:application/html 这时浏览器会要求选择打开XX文件的选项,如要防止此种情况产生,必须修改返回类型为:text/html 用@ResponseBody 本人还没找到解决方法,如有高人,请亮下方法,呵呵。

富文本编辑器本人用的是FCK。配置见 web.xml
根目录:WebRoot/fckeditor,
在EXT中,用的是html方式引入:
var htmleditorstr = '<div>' +
'<input type="hidden" id="giDescription___Config" value="" style="display:none" />' +
'<iframe name="giDescription___Frame" id="giDescription___Frame" ' +
'src="../fckeditor/editor/fckeditor.html?InstanceName=giDescription" ' +
'width="100%" height="400px″ frameborder="0″ scrolling="no"></iframe></div>';
  • 大小: 98.1 KB
  • 大小: 100.1 KB
  • 大小: 76.9 KB
分享到:
评论
13 楼 diwuci 2017-03-14  
用response.setContentType("text/html");是可以解决的
另外一种方式继续使用@ResponseBody 也可以,在@RequestMapping后面加上produces = "text/html;charset=utf-8"解决
@RequestMapping(value="add",method=RequestMethod.POST, produces = "text/html;charset=utf-8") 
@ResponseBody 
public String add()


12 楼 muqingren 2011-03-16  
这个学习了,歇息
11 楼 JetMah 2011-03-07  
Jophy 写道

	@RequestMapping(params = "method=login")
	public ResponseEntity<String> doFirst(@RequestParam("u") String u,@RequestParam("p") String p,HttpSession session,ModelMap model){
		HttpHeaders headers = new HttpHeaders();
		MediaType mt=new MediaType("text","html",Charset.forName("gbk"));
		headers.setContentType(mt);
		ResponseEntity<String> re=null;
		String return = new String("test");
		re=new ResponseEntity<String>(return,headers, HttpStatus.OK);
		return re;
       }
这样可以自定义  返回的响应头部content-type



没必要那么麻烦,直接用
    @RequestMapping(params = "method=add")  
    @ResponseBody  
    public String add(@ModelAttribute("goodsInfo") GoodsInfoModel goodsInfo,  
            HttpServletResponse response) throws IOException {
        // ...
        return "{success:true}";
    }
10 楼 joknm 2010-12-30  
看回复呀,回复里面不是有解决方案吗?
9 楼 jiajiafucs 2010-12-29  
哈哈,解决了,
public void importData(@RequestParam("file") MultipartFile file,HttpServletResponse response,ModelMap modelMap){
int num=0;
try{
if(!file.isEmpty()){
// 获得inputstream
InputStream inputstream = file.getInputStream() ;
num = getXlsData(inputstream);
inputstream.close();
file=null;
}
String msg = "没有数据";
if(num>0){
msg = "导入成功";
}
response.setContentType("text/html;charset=utf-8");
response.getWriter().write("{success:true,msg:'"+msg+"'}");
}catch(Exception e){
e.printStackTrace();
}
}
8 楼 joknm 2010-10-22  
lshoo 写道
楼上怎么解决的,在大家分享一下!我也要弄这个。



那个示例就是解决方法啊。
7 楼 lshoo 2010-10-20  
楼上怎么解决的,在大家分享一下!我也要弄这个。
6 楼 joknm 2010-10-13  
Jophy 写道

	@RequestMapping(params = "method=login")
	public ResponseEntity<String> doFirst(@RequestParam("u") String u,@RequestParam("p") String p,HttpSession session,ModelMap model){
		HttpHeaders headers = new HttpHeaders();
		MediaType mt=new MediaType("text","html",Charset.forName("gbk"));
		headers.setContentType(mt);
		ResponseEntity<String> re=null;
		String returnString = new String("test");
		re=new ResponseEntity<String>(returnString, headers, HttpStatus.OK);
		return re;
       }
这样可以自定义  返回的响应头部content-type



非常感谢 Jophy 童鞋, 问题解决了。
5 楼 Jophy 2010-10-13  

	@RequestMapping(params = "method=login")
	public ResponseEntity<String> doFirst(@RequestParam("u") String u,@RequestParam("p") String p,HttpSession session,ModelMap model){
		HttpHeaders headers = new HttpHeaders();
		MediaType mt=new MediaType("text","html",Charset.forName("gbk"));
		headers.setContentType(mt);
		ResponseEntity<String> re=null;
		String return = new String("test");
		re=new ResponseEntity<String>(return,headers, HttpStatus.OK);
		return re;
       }
这样可以自定义  返回的响应头部content-type
4 楼 niyong 2010-10-13  
中文容易出现乱码
3 楼 eyeieye 2010-10-12  
看 AnnotationMethodHandlerAdapter messageConverters
2 楼 joknm 2010-10-12  
oakeye 写道
这问题我也遇到   不知道怎么解决

他会在生成的json成功信息的前后加上<pre></pre>



据说在 json 转换配置文件里面添加一些接受的返回类型就可以了,具体没有深究,改天有空先,呵呵。
1 楼 oakeye 2010-10-12  
这问题我也遇到   不知道怎么解决

他会在生成的json成功信息的前后加上<pre></pre>

相关推荐

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

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

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

    然后,在Spring的配置文件中,我们可以通过`&lt;mvc:annotation-driven&gt;`标签启用HTTP消息转换器支持,这样Spring MVC会自动处理JSON的序列化和反序列化。 3. **模型绑定和JSON输入** 当前端向后端发送JSON数据时,...

    spring mvc(整合了json)

    2. **配置 Spring MVC**:在 Spring MVC 的配置文件中,我们需要添加 `Jackson` 的转换器,使得 Spring MVC 能够解析和生成 JSON 数据。例如,在使用 XML 配置时,可以添加以下配置: ```xml &lt;bean class="org....

    Spring3 MVC Ajax with JSON

    **Spring3 MVC与Ajax结合使用JSON** 在现代Web开发中,Spring框架的MVC模块与Ajax和JSON的集成是创建动态、响应式用户界面的关键技术。这个"Spring3 MVC Ajax with JSON"项目提供了一个Eclipse工程,包含了实现这一...

    spring mvc拦截器过滤json中的null值

    在Spring MVC框架中,我们经常需要处理JSON数据,这些数据可能包含null值。在某些情况下,为了保持数据的整洁和避免后端处理null值时出现异常,我们需要在数据传输前过滤掉这些null值。本教程将详细介绍如何使用...

    spring mvc生成xml或json

    在Spring MVC框架中,开发人员经常需要处理不同的数据交换格式,如XML和JSON,以便与客户端进行交互。这两种格式在Web应用中广泛用于传输数据,因为它们轻量级且易于解析。下面我们将深入探讨如何在Spring MVC中生成...

    spring mvc json&&jackson jquery js

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

    四. Spring MVC 3 支持json及 常见错误解决

    本篇将深入探讨Spring MVC 3对JSON的支持以及解决常见错误的方法。 首先,让我们了解什么是JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。在...

    spring mvc文件上传实现进度条

    这个场景通常涉及到前端的JavaScript或jQuery库(如jQuery File Upload)与后端的Spring MVC控制器之间的交互,以及可能的多线程处理来跟踪文件上传的进度。接下来,我们将深入探讨如何在Spring MVC中实现这一功能。...

    第三章 Spring MVC Servlet API与Json的支持

    在本章中,我们将深入探讨Spring MVC框架与Servlet API以及JSON支持的相关知识。Spring MVC是Spring框架的一个核心模块,主要用于构建Web应用程序,它提供了一种优雅的方式来处理HTTP请求和响应,实现了模型-视图-...

    SevenDay-Spring MVC(基于Spring MVC实现文件上传与下载)的源代码

    总的来说,这个项目展示了Spring MVC在实际应用中处理文件上传下载的基本流程,以及与IDEA的集成和项目构建过程。通过对源代码的学习和理解,开发者可以进一步掌握Spring MVC的核心特性和实践技巧,提升Web应用的...

    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-jsonview源代码

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

    Spring mvc实现Restful返回json格式数据实例详解

    在本示例中,我们将向您展示如何将对象转换成json格式并通过spring mvc框架返回给用户。 使用技术及环境: Spring 3.2.2.RELEASE Jackson 1.9.10 JDK 1.6 Eclipse 3.6 Maven 3 PS:在spring 3 中,要输出json...

    spring3-miniweb.rar_spring json_spring3_spring3 mvc

    3. **Controller**:创建一个Spring MVC Controller类,定义处理JSON请求的方法。例如,你可以创建一个接受POST请求的方法,该方法使用`@RequestBody`接收JSON数据,并用`@ResponseBody`返回结果。 ```java import ...

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

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

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

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

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

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

    spring—mvc -json

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

Global site tag (gtag.js) - Google Analytics