您的位置:首页 > 编程语言 > Java开发

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文件,最终编码问题得以解决:



记录一下这个坑,以免以后会重踩!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: