[Characterencodinghttpservletrequestwrapper. Java 〕
Package creator. Common. filter;
Import javax. servlet. http .*;
Public class characterencodinghttpservletrequestwrapper extends httpservletrequestwrapper {
Private string ecoding = NULL;
Private string oldencoding = NULL;
Public characterencodinghttpservletrequestwrapper (httpservletrequest request, string encoding ){
Super (request );
This. ecoding = encoding;
This. oldencoding = request. getcharacterencoding ();
}
Public String getparameter (string value ){
Try {
If (oldencoding = NULL | isios88591 (oldencoding) & Super. getparameter (value )! = NULL ){
Return new string (Super. getparameter (value). getbytes ('iso-8859-1 '), ecoding );
}
Else {
Return super. getparameter (value );
}
}
Catch (exception e ){
E. printstacktrace ();
Return NULL;
}
}
Private Boolean isios88591 (string endcoding ){
Endcoding = endcoding. tolowercase ();
Return endcoding. startswith ('iso ') & (endcoding. indexof ('20140901 ')! =-1) & endcoding. endswith ('1 ');
}
}
[Characterencodinghttpservletresponsewrapper. Java 〕
Package creator. Common. filter;
Import javax. servlet. http .*;
Public class characterencodinghttpservletresponsewrapper extends httpservletresponsewrapper {
Private string ecoding = NULL;
Public characterencodinghttpservletresponsewrapper (httpservletresponse response, string encoding ){
Super (response );
This. ecoding = encoding;
}
/* (Non-javadoc)
* @ See javax. servlet. servletresponse # setcontenttype (Java. Lang. String)
*/
Public void setcontenttype (string value ){
Super. setcontenttype ('text/html; charset = '+ ecoding );
}
}
[Charsetencodingfilter. Java 〕
Package creator. Common. filter;
Import java. Io. ioexception;
Import javax. servlet .*;
Import javax. servlet. http .*;
Public class charsetencodingfilter implements filter {
Private filterconfig Config = NULL;
Private string requestencoding = NULL;
Private string responseencoding = NULL;
Public void Init (filterconfig arg0) throws servletexception {
This. Config = arg0;
This. requestencoding = config. getinitparameter ('requestencoding ');
This. responseencoding = config. getinitparameter ('responseencoding ');
}
/* (Non-javadoc)
* @ See javax. servlet. Filter # dofilter (javax. servlet. servletrequest, javax. servlet. servletresponse, javax. servlet. filterchain)
*/
Public void dofilter (servletrequest req, servletresponse res, filterchain FC)
Throws ioexception, servletexception {
If (this. Config = NULL ){
Return;
}
Httpservletrequest request = (httpservletrequest) req;
Httpservletresponse response = (httpservletresponse) RES;
Characterencodinghttpservletrequestwrapper mrequestw = new characterencodinghttpservletrequestwrapper (request, responseencoding );
Characterencodinghttpservletresponsewrapper wresponsew = new characterencodinghttpservletresponsewrapper (response, responseencoding );
FC. dofilter (mrequestw, wresponsew );
}
Public void destroy (){
}
}
[Web. xml 〕
<Filter>
<Filter-Name> charsetencoding </filter-Name>
<Filter-class> javabean.com. charsetencodingfilter </filter-class>
<Init-param>
<Param-Name> requestencoding </param-Name>
<Param-value> iso-8859-1 </param-value>
</Init-param>
<Init-param>
<Param-Name> responseencoding </param-Name>
<Param-value> gb2312 </param-value>
</Init-param>
</Filter>
<Filter-mapping>
<Filter-Name> charsetencoding </filter-Name>
<URL-pattern>/* </url-pattern>
</Filter-mapping>