快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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>






返回类别: 教程
上一教程: JB的调试方式(欢迎补充)
下一教程: jsp开发网站使用cookie的一点经验

您可以阅读与"JAVA:Filter编码器"相关的教程:
· JAVA编码问题的一些理解
· Java语言编码规范 选择自 hk_von 的 Blog
· Java中文问题详解,底层编码解剖
· java编码中的一些经验和教训
· JavaScript escape/unescape编码的Java实现
    微笑服务 优质保证 索取样品