TOMCAT5,GET方式传递参数乱码

环境:TOMCAT5+

解决TOMCAT乱码方式很多。目前我认为最好用的还是添加filter

"XMLHttpRequest".equalsIgnoreCase(request.getHeader("x-requested-with")) 为ajax方式,使用UTF-8编码;其他统一为GBK(根据项目情况,可作为filter初始化参数)

方法为request.setCharacterEncoding (就是实现javax.servlet.Filter,并且实现方法doFilter即可,web.xml配置不是本文目的)。


使用post方式一直没有问题。直到…………我使用GET传递参数又一次出现了乱码。

经过网上搜索以及本人亲自开发测试、系统开发测试通过。

Connector解决办法:修改conf/server.xml , 在端口如 <Connector port="7308" 标签内增加 URIEncoding="GBK" (根据项目情况,我的是GBK)。


原因总结:Tomcat中提供的request是被其封装后的request, filter中调用request.setCharacterEncoding即是tomcat实现的代码。从TOMCAT5 以后,对post中,request.setCharacterEncoding有效,参数进行转码; 对于GET,request.setCharacterEncoding方法,tomcat只是提前使用conf/server.xml URIEncoding(上文已提到)进行处理(这个如果没有这个filter,之后tomcat也是会有默认的filter去使用conf/server.xml URIEncoding设置get中的参数的,这个只是把tomcat处理时机提前了)。

    server.xml中URIEncoding只对get有效,生效时机为:有程序手动执行request.setCharacterEncoding方法

用例:get、post传递参数全部为中文

 测试1,server.xml不配置,无filter, get中的参数、post中的参数全部是乱码

 测试2,server.xml配置,无filter,get无乱码,post全部乱码。(conf/server.xml URIEncoding有配置,tomcat默认的filter会进行转码的。 servlet中获取get参数就不是乱码。conf/server.xml URIEncoding对post参数不起作用,post参数全部乱码)

 测试3,server.xm不l配置,有filter,get乱码,post无乱码。  (filter虽然调用request.setCharacterEncoding,对get中参数只是提前使用conf/server.xml URIEncoding作为编码,因为未配置,所以get是乱码)

 测试4,server.xm不l配置,有filter,get无乱码,post无乱码。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值