get()和post()方法编码的区别

 

在作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"%>
相关文章
相关标签/搜索