tomcat解决GET请求中文参数乱码
2017-04-24 12:21
453 查看
通常,在使用Spring MVC框架的应用程序中,为了解决中文参数乱码的问题,都会添加如下过滤器配置:
<filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
但是,在Tomcat下运行时,对于GET请求参数的处理和POST参数不同,会出现POST中文参数正常,但是GET请求中文参数乱码的情形。
通过查看Tomcat相关源码得知,为了处理GET请求中的中文参数乱码问题,必须明确设置Connector的URIEncoding属性为指定编码。
具体配置如下:
<Connector port="8000" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="utf-8"/>
org.apache.catalina.connector.CoyoteAdapter类service()方法源码片段如下:
@Override public void service(org.apache.coyote.Request req, org.apache.coyote.Response res) throws Exception { Request request = (Request) req.getNote(ADAPTER_NOTES); Response response = (Response) res.getNote(ADAPTER_NOTES); if (request == null) { // Create objects request = connector.createRequest(); request.setCoyoteRequest(req); response = connector.createResponse(); response.setCoyoteResponse(res); // Link objects request.setResponse(response); response.setRequest(request); // Set as notes req.setNote(ADAPTER_NOTES, request); res.setNote(ADAPTER_NOTES, response); // Set query string encoding req.getParameters().setQueryStringEncoding(connector.getURIEncoding()); // 显然,在处理GET查询参数编码时是获取Connector的URIEncoding属性 } ... }
相关文章推荐
- 使用SpringMVC参数传递时,解决get请求时中文乱码的问题
- 动态加载iframe时get请求传递中文参数乱码解决方法
- Spring Tomcat Post Get 请求参数有中文时出现乱码或+号变空格等关于编码的问题
- 在Servlet中使用getParameter()方法获取get请求中的中文参数乱码解决方法
- tomcat编码格式的设置/如何解决get()方式提交中文参数乱码的问题
- web项目使用Tomcat作为服务器,GET请求参数中文乱码
- 详解get请求和post请求参数中文乱码的解决办法
- 页面get请求 中文参数方法乱码问题的快速解决方法
- get请求中文参数乱码的解决之道
- tomcat8.0环境下解决get方法中文参数乱码问题
- [JavaEE]Get请求URI中带的中文参数在服务端乱码问题的解决方法
- Tomcat服务器下Get提交中文参数乱码解决
- 解决Spring MVC中get请求参数乱码的一种不改tomcat配置解决方法
- 解决tomcat的虚拟目录的子目录里有中文目录,或中文参数,以及GET方式中文请求参数
- web项目使用Tomcat作为服务器,GET请求参数中文乱码
- get请求时候参数中含有“中文”字段出现乱码问题的原因和解决方法
- get请求,中文乱码解决 之 百度如何正确获取中文请求参数(我猜测)
- Spring MVC的请求参数含中文, GET正常POST乱码解决
- java 接受和发送http,post,get请求,参数中文乱码解决。
- 解决get方法传递URL参数中文乱码和解决tomcat下中文乱码问题