博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Controller返回json的编码处理
阅读量:6006 次
发布时间:2019-06-20

本文共 3206 字,大约阅读时间需要 10 分钟。

不久前在Spring mvc的框架体系下,js端发送ajax请求时,获取的结果为json时会出现中文乱码。

经排查是由于我的spring3.2.0 配置问题。

在Controller端返回的json结果需要进行Jackson的处理。

涉及到的jar包:

  jackson-core、jackson-databind、jackson-annotation

spring-servlet.xml配置添加:

text/plain;charset=UTF-8
text/html;charset=UTF-8
application/json; charset=UTF-8
application/x-www-form-urlencoded; charset=UTF-8

<mvc:annotation-driven>自动注册:

  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping

  org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter

所以这两个bean不用追加到drven里了。

StringHttpMessageConverter:

  不仅可以解决中文乱码,还可以将json里的换行|r|n去掉;

MappingJackson2HttpMessageConverter:

  控制@ResponseBody注解返回的json格式。

Controller里处理代码如下:  

@RequestMapping(value="myprofile/base.json",method = RequestMethod.GET)        @ResponseBody        public String loadSession(Model model,                @RequestParam("appid")String appid,                @RequestParam("appkey")String appkey,                @RequestParam("openid")String openid,                @RequestParam("pf")String pf,                @RequestParam("openkey")String openkey,                HttpServletRequest request,                HttpServletResponse response){            response.setHeader("Charset", "UTF-8");            response.setContentType("application/x-www-form-urlencoded; charset=utf-8");                        String serverName =Constant.serverName;                        OpenApiV3 apiV3 =new OpenApiV3(appid, appkey);                        apiV3.setServerName(serverName);            String protocol ="http";            String scriptName="/v3/user/get_info";                        String result =getUserInfo(apiV3, scriptName, openid, openkey, protocol,pf);                        return result;        }

Js端请求代码如下:

 

$j.ajax(            {                type: "get",                async: false,                url: getUserInfo,                contentType: "application/x-www-form-urlencoded; charset=utf-8",                data: {                        'appid':appid,                        'appkey':appkey,                        'openid':openid,                        'openkey':openkey,                        'pf':pf                    },                dataType: "json",                cache: false,                success: function (data) {                    if(data.ret=='1002'){                        //登陆失效,需重新登陆                        fusion2.dialog.relogin();                    }else{                        $j("#userinfo").html("用户信息:
"+data); } }, error: function (err) { alert(err); } } );

 

效果:

 

 

转载于:https://www.cnblogs.com/bloodthirsty/p/4110312.html

你可能感兴趣的文章
curl指令的使用
查看>>
LNAMP第二版(nginx 1.2.0+apache 2.4.2+php 5.4)
查看>>
MongoDB repl set权限认证配置步骤
查看>>
java学习笔记(1)
查看>>
禁止Mysql默认端口访问Internet - MySQL - IT技术网
查看>>
基于用户投票的排名算法(二):Reddit
查看>>
css3中变形与动画(一)
查看>>
[XMove-自主设计的体感解决方案] 系统综述
查看>>
【LINUX学习】磁盘分割之建立primary和logical 分区
查看>>
变更 Linux、Ubuntu 时区、时间
查看>>
[共通]手机端网页开发问题及解决方法整理
查看>>
思科分发列表过滤路由(RIP)动态路由协议篇
查看>>
可登录的用户数量是1.6万个,软件的性能得到充分的考验
查看>>
[实战]MVC5+EF6+MySql企业网盘实战(23)——文档列表
查看>>
[译] ES2018(ES9)的新特性
查看>>
C# Selenium 破解腾讯滑动验证
查看>>
bom与dom的区别
查看>>
Matlab2012a下配置LibSVM—3.18
查看>>
Java生成-zipf分布的数据集(自定义倾斜度,用作spark data skew测试)
查看>>
修复CefSharp浏览器组件中文输入Bug
查看>>