服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java:filter编码器


  〔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("8859") != -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>

扫描关注微信公众号