关于SpringMvc的responsebody正确返回的问题
最近碰到一个问题,就是返回体中,一定要加个双引号才能成功返回,不加就直接执行了ajax的error函数。例如:
上面这点代码是能正常弹出结果的,假如把return的信息中双引号去掉就不能弹出了。

下面的结果是不管加不加双引号都有返回的,但是不加双引号则弹出来的却不是respond的信息,而是ajax的返回的错误函数

return "\"" + result + "\"";注意这里的result是已经声明为String类型的,下面贴出源码。
@RequestMapping(value = "/upload", method = RequestMethod.POST)
@ResponseBody
public String fileUpload(HttpServletRequest request) {
String result = "";
/*
* response.setCharacterEncoding("UTF-8");
* response.setContentType("application/json;charset=utf-8");
*/
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
String path = request.getSession().getServletContext().getRealPath("");
try {
List items = upload.parseRequest(request);
Iterator it = items.iterator();
while (it.hasNext()) {
FileItem item = (FileItem) it.next();
if (item.isFormField()) {
System.out.println("表单的参数名称:" + item.getFieldName()
+ ",对应的参数值:" + item.getString("UTF-8"));
} else {
if (item.getName() != null && !item.getName().equals("")) {
System.out.println("上传文件的大小:" + item.getSize());
System.out.println("上传文件的类型:" + item.getContentType());
System.out.println("上传文件的名称:" + item.getName());
File tempFile = new File(item.getName());
String savePath = path
+ File.separator
+ "backend"
+ File.separator
+ "doc"
+ File.separator
+ new SimpleDateFormat("yyyyMMdd-HHmmss")
.format(new Date())
+ tempFile.getName();
item.write(new File(savePath));
// 获取表数据
List<Map<String, String>> list = ExcelUtil
.readExcelOfTeachers(savePath);
// 对表数据进行迭代筛查
Iterator<Map<String, String>> iterator = list
.iterator();
// 备份遍历的前一个数据元
Map<String, String> oldObj = null;
// 利用HashSet过滤表数据,查重。
HashSet<String> checkRepeat = new HashSet<>();
while (iterator.hasNext()) {
Map<String, String> next = iterator.next();
// 教师名称、工号、手机号码、账号和密码为空则导入失败
if (next.get(ExcelUtil.TCODE).equals("")
|| next.get(ExcelUtil.TNAME).equals("")
|| next.get(ExcelUtil.TMOBILE).equals("")
|| next.get(ExcelUtil.TACCOUNT).equals("")) {
if (next.get(ExcelUtil.TPASSWORD).equals("")) {
iterator.remove();
} else if (oldObj != null) {
return "\"" + "导入失败,工号为:"
+ oldObj.get(ExcelUtil.TCODE)
+ " 的教师之后存在空数据,请修改后重新提交。" + "\"";
} else {
return "\"" + "导入失败,表中第二行存在空数据,请修改后重新提交。"
+ "\"";
}
} else if (next.get(ExcelUtil.TPASSWORD).equals("")) {
// 若密码为空,则默认将教师工号设置成密码
next.put(ExcelUtil.TPASSWORD,
next.get(ExcelUtil.TCODE));
} else {
// 表中存在重复账号则导入失败
if (checkRepeat.contains(next
.get(ExcelUtil.TACCOUNT))) {
return "\"" + "导入失败,账号 : "
+ next.get(ExcelUtil.TACCOUNT)
+ " 在表中已重复,请修改后重新提交。" + "\"";
}
// 记录非重复账号信息
checkRepeat.add(next.get(ExcelUtil.TACCOUNT));
}
// 备份本次迭代数据
oldObj = next;
}
result = tTeacherService.addTeacherList(list);
} else {
result = "没有选择上传文件!";
}
}
}
} catch (Exception e) {
e.printStackTrace();
result = "上传文件不成功!";
}
System.out.println(result);
return "\"" + result + "\"";
}
上面这点代码是能正常弹出结果的,假如把return的信息中双引号去掉就不能弹出了。

下面的结果是不管加不加双引号都有返回的,但是不加双引号则弹出来的却不是respond的信息,而是ajax的返回的错误函数

...全文
相关推荐
springMVC接口化实践
springMVC在企业中接口化的实践,这些代码有经过自己在本地测试过的,只要把本地的maven环境搭建好,把war包放到tomcat中就可以运行了。
SpringMVCJSONDemo170222
SpringMVC JSONP 170222Demo http://www.jianshu.com/p/e235c3b91020
spring 问题总结实用知识库分享知识分享
资源spring 问题总结实用知识库分享知识分享
SSM框架搭建
本资源是我自己搭建SSM框架的过程及遇到问题的解决方法,内附源码
SpringMVC中解决@ResponseBody注解返回中文乱码问题
主要介绍了SpringMVC中解决@ResponseBody注解返回中文乱码问题, 小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧


Web 开发
