Apache tomcat乱码问题排查

在开发环境调试WAP版本官网,发现系统有问题,调用接口查询最新优惠信息时数组越界。经过与开发的外包厂商沟通,他们确定是因为栏目太久没有更新文章引起的,再询问具体细节,表示不清楚,因为外包开发人员调用的接口是另外一家外包厂商做的,且合同到期,开发人员流动,无法联系上。
没有源码,没有交接文档,只能自己排查摸索原因。

1.查看日志发现有之所以页面显示不出来文章是因为查询出来的dataset大小不对
DEBUG AbstractBatcher:426 - about to open ResultSet (open ResultSets: 0, globally: 0)

2.在app机器登录mysql :mysql -h[ip address]-u[user] -p[password];

可以登录,show databases ,use database正常。

select user,host,password from mysql.user;一切正常。

排除数据库问题。

3. 继续看日志,发现一个地方很可疑:
select article_id,title,display_release_time from tbl_node_article where node_id in (select node_id from tbl_node where node_name like '%??????????°????????????%') order by display_release_time desc limit 0,3;
将此语句放到工具中查询,结果正常,可以查询出来最新发表的三篇文章。怀疑是node_name 编码处理不对。

更改JSP页面,将查询的栏目名称从中文更改为英文栏目。

4.重启tomcat,发现结果正常。

5.由此推断是JSP传递参数由于是中文,到了Apache再传递给tomcat在传递给mysql,在此过程中引起的编码处理不当。
6.修改apache配置httpd.conf 发现其中有AddCharset UTF-8       .utf8
7.修改tomcat配置server.xml 找到port 8080,8009 添加 URIEncoding="UTF-8"
<Connector port="8080" protocol="HTTP/1.1"  URIEncoding="UTF-8"     maxThreads="2000"  minSpareThreads="25"  enableLookups="false" acceptCount="100" connectionTimeout="30000"   redirectPort="8443" disableUploadTimeout="true"  />
8.问题解决。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值