Eclipse设置server的编码
2016-03-22 17:27
441 查看
Eclipse设置server的编码
最近在开发一些HTML5的界面,H5中界面的数据都是从服务器接口获取,而且我们从服务器获取数据时就涉及到跨域的问题,这样我们就不得不使用了JQuery中的jsonp get请求。http请求如果包含有中文参数,一般我们是通过post请求替代get请求来解决编码问题,但是很抱歉,jsonp 由于其原理的原因只能是get请求。所以对于包含有中文参数的get请求,就得对参数进行url编码,以解决中文编码的问题。如下:var fullUrl = 'http://127.0.0.1:8080/getUserInfo' var reqData ='{"userName":"中国"}';//有中文的参数 reqData = encodeURIComponent(reqData);//url encode utf-8 //封装完整的请求的url地址,str参数放请求的json数据 fullUrl = fullUrl + '?str=' + reqData + '&r=' + new Date().getTime(); console.log('jsonp get请求fullUrl:' + fullUrl); //以下发出js请求 $.ajax({ type: "get", url: 'http://xxxx:8080/getUserI', timeout: 10000, dataType: "jsonp", jsonp: "jsoncallback", //jsonpCallback: "success_jsonpCallback", success: function(data) { console.log("result: " + APP.json2Str(data)); if (data && data.result) { if (data.result == '0') { //获取数据成功 callback_success(data); } else { var errerTips = '网络请求发生错误,请稍后再试'; //token异常 if (data.result == "002" || data.result == "003") { APP.refreshAppToken(); //刷新token errerTips = data.reason; } // APP.showHttpErrer(errerTips); } } }, complete: function(XMLHttpRequest, status) { //请求完成后最终执行参数 if (showLoadingDialog) { APP.dismissLoadingDialog(); } if (status == 'timeout') { //超时,status还有success,error等值的情况 APP.showHttpErrer('网络请求超时,请稍后再试'); } else if (status == 'error') { APP.showHttpErrer('网络请求发生错误,请稍后再试'); } else if (status == 'success') {} } });
很明显,上述get请求,我们已经使用encodeURIComponent对参数进行了编码,这样我们服务端servlet接收请求并解析参数时,无需额外的工作就能自动将参数解码。如下:
String reqStr = req.getParameter("str");//可能str是中文,但是无需额外工作既会自己解码
以下说的就是我踩到的坑。我们的项目打包到阿里云的服务器或者我把项目打包放到本地的tomcat容器发布之后,从H5发出的get请求,就算有中文参数,服务端解析都不会乱码;但是我在eclipse中配置使用的tomcat运行项目,却总是乱码,这让我陷入了沉思,多次检查本地的tomcat已确认编码设置为UTF-8编码。按道理说,eclipse中运行的server依赖了本地tomcat,本地tomcat的编码已经已经在server.xml设置,为何不生效。经过多番折腾,原来才明白eclipse的server虽然依赖了本地tomcat环境,但是只是当做了一个运行的容器,而运行的server却引用了eclipse中server中配置的server.xml文件,并不是本地tomcat中的server.xml文件。
所以,我们找到eclipse中servers下面的server,修改里面的server.xml文件,最终编码问题得以解决:
记录一下这个坑,以免以后会重踩!
相关文章推荐
- java中成员访问修饰符,接口与抽象类相关知识
- Java中如何遍历Map对象的4种方法
- 20个非常有用的Java程序片段
- 第二章 eclipse中m2e插件问题
- java的多线程
- 傻瓜方法求集合的所有子集问题(java版)
- Spring Data Jpa基础入门(删改查)
- eclipse统计项目的代码行数
- 《深入理解Java虚拟机》读书笔记
- eclipse(Mars版)配置svn和maven插件
- SSH学习之Struts1入门的简单登陆案例。
- JAVA的Random类(转)
- 回归基础 分析多线程的三种实现方式
- eclipse 3字节的UTF-8序列的字节2无效
- java第十五节-泛型
- Eclipse warn: Implementation of project facet maven could not be found. Functionality will be limit
- java域名解析
- 谈谈对Spring IOC的理解
- Spring Security(12)——Remember-Me功能
- Java IO/NIO学习总结