posts - 73,  comments - 55,  trackbacks - 0

          〔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>

          posted on 2006-07-26 09:15 保爾任 閱讀(244) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 华安县| 红桥区| 芮城县| 宽城| 江北区| 巴林右旗| 和平县| 江津市| 安化县| 景洪市| 湘乡市| 封丘县| 涡阳县| 湖口县| 深水埗区| 白银市| 济阳县| 榆中县| 重庆市| 隆化县| 文安县| 新丰县| 澜沧| 崇明县| 玛纳斯县| 庆元县| 张北县| 南丹县| 尼玛县| 龙胜| 乌什县| 青海省| 疏附县| 康乐县| 抚顺市| 汤原县| 临猗县| 贡嘎县| 随州市| 苏尼特左旗| 东方市|