get()和post()方法编码的区别
2013-07-31 19:30
225 查看
在做ssh搭建的框架中,在后台条件查询的时候,组合查询传到后台的值一直是乱码,其中在form表单中必须要加上method,这一点是肯定的,但是加上了提交的方式之后,会出现如下问题: 如果使用get方法提交,在后台获取值的时候必须使用new String(className.getBytes("ISO8859-1"),"UTF-8")来进行转码才可以不乱码 如果使用post方式提交,在后台不乱码,前提是在web.xml已经配置了编码过滤器,并且在页面中也配置了相应的编码格式 出现上述的原因是因为Tomcat对get和post两种提交方式的处理方法不一样造成的。自从Tomcat5.x开始,GET和POST方法提交的信息,Tomcat采用了不同的方式来处理编码,对于POST请求,Tomcat会仍然使用request.setCharacterEncoding方法所设置的编码来处理,如果未设置,则使用默认的iso-8859-1编码。而GET请求则不同,Tomcat对于GET请求并不会考虑使用request.setCharacterEncoding方法设置的编码,而会永远使用iso-8859-1编码 所以解决的办法有: 如果是get和post方法中的参数在后台都要使用,并且用到的是一个地方,那么转码的方式肯定是不行的,那么需要在tomcat下的server.xml中加上URIEncoding="UTF-8",即加在 <Connector URIEncoding="UTF-8" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 如果不是第一种情况 那么用转码的方式就可以 new String(className.getBytes("ISO8859-1"),"UTF-8") 需要说明的是,需要设置过滤器和jsp中的编码,其中 <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> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> 相当于是 request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); 在页面中也需要设置 <%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
相关文章推荐
- get()和post()方法编码的区别
- get()和post()方法编码的区别
- HTTP 方法(GET和POST的区别)
- HTTP 协议请求方法GET 与POST 的区别?
- HTTP中GET,POST方法之区别
- 几种表单提交方法的总结及get与post的区别
- GET与POST方法的区别
- get与post方法之间区别
- post和get方法的区别
- HTTP中GET和POST方法的区别
- HTTP请求:GET与POST方法的区别
- HTTP协议六种请求方法,get,head,put,delete,post有什么区别
- HTTP请求:GET与POST方法的区别
- JQUERY中 GET与POST方法的区别 Request.QueryString Request.Form区别
- get和post方法区别
- GET方法和POST方法的区别
- Http方法:Get请求与Post请求的区别
- http协议中get与post方法header的区别
- get,post数据长度的限制 2 GET与POST方法的区别
- HTTP请求:GET与POST方法的区别