java web中文乱码_java web中文乱码问题 | 学步园

而当HTTP请求以GET方式发出时,请求参数位于请求头的URI中。

同时需要知道spring的CharacterEncodingFilter的过滤机制。附该过滤器的源码:

protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)

throws ServletException, IOException {

if (this.encoding != null && (this.forceEncoding || request.getCharacterEncoding() == null)) {

request.setCharacterEncoding(this.encoding);//===================================这行代码决定了过滤器的过滤机制。

//这行代码只会对请求正文进行编码,这对于POST方式的请求有效;

//当请求方式为GET时,需要的参数位于请求头的URI中,不会受到该行代码影响。

//所以,spring的CharacterEncodingFilter对于GET方式的HTTP请求,无能为力。

if (this.forceEncoding && responseSetCharacterEncodingAvailable) {

response.setCharacterEncoding(this.encoding);

}

}

filterChain.doFilter(request, response);

}

那么既然spring的CharacterEncodingFilter对GET方式的HTTP请求无能为力,我们必须找到能够过滤GET方式请求的办法啊。问一下谷歌老师吧:

搜索了一大堆,综合一下,大概有两种解决办法:

第一种:修改tomcat的配置文件:conf/server.xml 找到connector节点,修改如下:

connectionTimeout="20000"

redirectPort="8443" URIEncoding="GBK"/>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值