Spring MVC jsonp跨域调用 中文乱码问题处理
来源:互联网 发布:有4g流量 2g网络扣费 编辑:程序博客网 时间:2024/05/14 01:48
一、问题描述
最近项目中使用了Spring MVC开发了一个api接口服务器,接口调用要求需支持jsonp跨域形式调用。在自己开发和测试过程中未发现有中文乱码问题,因为是在浏览器中直接输入url方式进行调用,应答回来的都是正常的中文;但当前端调用接口使用时,就出现中文乱码问题了。
二、问题分析
经过查阅资料后,大致明白了问题所在,jsonp跨域接口的写法和json完全不一样,jsonp返回的是一个JSONPObject对象,而非json格式字符串。
三、处理说明
1.由于需要兼容两种调用方式,所以决定统一应答json格式的字符串
/** * 测试接口 * @param request * @return */ @RequestMapping(value = "/fault/test", method = RequestMethod.GET,produces = MediaType.APPLICATION_JSON_VALUE + CHARSET) @ResponseBody private String testPort(HttpServletRequest request){ CommonRes res=new CommonRes(); String callback=null; try { //参数获取 callback=request.getParameter("callback"); //业务逻辑处理 } catch (Exception e) { logger.warn("接口处理异常", e); res.setAcktype(CommonRes.RC_EXECUTE_FAIL); } return jsonp(callback,res); }
2.jsonp兼容处理,如果有传callback参数,则先以callback和应答结果对象为参数创建JSONPObject对象,再转成json字符串;否则直接将应答结果对象装成json字符串。
/** * 回调应答 * @param callback * @param o * @return */ protected String jsonp(String callback,Object o){ String res; if(callback!=null && !"".equals(callback)){ res= jsonSerializerUtil.seriazileAsString(new JSONPObject(callback,o)); }else{ res= jsonSerializerUtil.seriazileAsString(o); } return res; }3.完成上面步骤后,可以实现两种调用方式兼容,但jsonp还是会乱码,需在@RequestMapping处添加produces = MediaType.APPLICATION_JSON_VALUE + CHARSET,CHARSET值为
protected final static String CHARSET = ";charset=UTF-8";
4.这样就可以实现两种方式调用都正常。
0 0
- Spring MVC jsonp跨域调用 中文乱码问题处理
- Spring MVC 中文乱码问题
- Spring MVC @ResponseBody 返回中文乱码问题
- SPRING MVC上传的中文乱码问题
- Spring mvc GET请求中文乱码问题
- 彻底解决Spring MVC 中文乱码 问题
- 彻底解决Spring MVC 中文乱码 问题
- 彻底解决Spring MVC 中文乱码 问题
- spring mvc @ResponseBody返回中文乱码问题
- 彻底解决Spring MVC 中文乱码 问题
- 彻底解决Spring MVC 中文乱码 问题
- 彻底解决Spring MVC 中文乱码 问题
- Spring MVC @ResponseBody 返回中文乱码问题
- 彻底解决Spring MVC 中文乱码 问题
- 彻底解决Spring MVC 中文乱码 问题
- 彻底解决Spring MVC 中文乱码 问题
- 彻底解决Spring MVC 中文乱码 问题
- 彻底解决Spring MVC 中文乱码 问题
- Llinux常用命令2
- 办公室助手教你整理电脑桌面 5步让它不再凌乱不堪
- Flex 布局教程:语法篇
- 邻接表拓扑排序,保证从小到大输出(未测试)
- Tableau自定义分类调色板
- Spring MVC jsonp跨域调用 中文乱码问题处理
- 我的第一份HTML简历
- mapreduce
- linux 命令pidof - 找出正在运行程序的进程PID
- JHTP小结_第六章_深入理解Methods(方法)
- C++编程:ASCII,UTF-8,Unicode字符串相互转换
- android插入耳机状态使用扬声器外放音乐
- 读书笔记
- swust OJ 1619 中位数