欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Servlet中讀取參數中文亂碼的一種解決方法

最近作一個(gè)項目,基于Tomcat和LDAP技術(shù)的一個(gè)應用,實(shí)在厭煩了以前在每次調用request.getParameter(...)或request.getParameterValues(..)方法是做字符集轉換的操作。

利用ServletFilter可以很好的實(shí)現一個(gè)對應用層透明的字符集轉換過(guò)濾器,不需要應用中的Servlet對字符集進(jìn)行轉換,只需要我們在Web Deployment Description文件中安裝一個(gè)用于完成字符集轉換的ServletFilter就可以了。

這個(gè)ServletFilter的內容如下:

// **** I18nServletFilter.java源程序 *******************************************************

package com.npower.im.servlet;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

/**
 * <p>Company: NPower Technology Ltd.</p>
 * @author Zhao DongLu
 * @version 1.0
 */


public class I18nServletFilter extends HttpServlet implements Filter {
  private FilterConfig filterConfig;

  private String charset = "UTF-8";

  //Handle the passed-in FilterConfig
  public void init(FilterConfig filterConfig) throws ServletException {
    this.filterConfig = filterConfig;
    this.charset = filterConfig.getInitParameter("charset");
    if (this.charset == null || this.charset.trim().length() == 0) {
       this.charset = null;
    }
  }

  //Process the request/response pair
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) {
    try {
        if (this.charset != null) {
           I18nHttpServletRequestWrapper requestWrapper = new I18nHttpServletRequestWrapper( (HttpServletRequest) request,                                            charset);
           filterChain.doFilter(requestWrapper, response);
        } else {
          filterChain.doFilter(request, response);
        }
    } catch(ServletException sx) {
      filterConfig.getServletContext().log(sx.getMessage());
    } catch(IOException iox) {
      filterConfig.getServletContext().log(iox.getMessage());
    }
  }

  //Clean up resources
  public void destroy() {
    super.destroy();
  }
}

// **** I18nHttpServletRequestWrapper.java源程序 *******************************************************

package com.npower.im.servlet;

import java.util.*;

import javax.servlet.http.HttpServletRequestWrapper;
import javax.servlet.http.HttpServletRequest;
import java.io.*;

import com.npower.im.config.Global;
/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2004</p>
 * <p>Company: </p>
 * @author not attributable
 * @version 1.0
 */


public class I18nHttpServletRequestWrapper extends HttpServletRequestWrapper {

  private Map hashMap = new HashMap();

  private String charset = "iso-8859-1";

  public I18nHttpServletRequestWrapper(HttpServletRequest request, String charset) {
    super(request);
    this.charset = charset;
    initParameterMap(request);
  }

  private void initParameterMap(HttpServletRequest request) {
    if (request == null) {
       return;
    }
    Map map = request.getParameterMap();
    Set names = map.keySet();
    for (Iterator i = names.iterator(); i.hasNext(); ) {
        String name = (String)i.next();
        this.hashMap.put(name, map.get(name));
    }
  }

  public String getParameter(String name) {
    String[] values = this.getParameterValues(name);
    if (values != null && values.length > 0) {
       return values[0];
    } else {
       return null;
    }
  }


  public String[] getParameterValues(String name) {
    String[] values = (String[])this.hashMap.get(name);
    if (values == null) {
       return null;
    }
    String[] result = new String[values.length];
    for (int i = 0; values != null && i < values.length; i++) {
        result[i] = convertCharset(values[i]);
    }
    return result;
  }

  private String convertCharset(String str) {
    if (str == null) {
       return null;
    }
    try {
      byte[] bs = str.getBytes("iso-8859-1");
      String result = new String(bs, this.charset);
      return result;
    } catch (UnsupportedEncodingException ex) {
      Global.getLogger().fatal("I18nHttpServletRequestWrapper:" + this.charset, ex);
    }
    return null;
  }

}

// *** 在web.xml文件中增加如下內容:

  <filter>
    <filter-name>i18nservletfilter</filter-name>
    <filter-class>com.npower.im.servlet.I18nServletFilter</filter-class>
    <init-param>
      <param-name>charset</param-name>
      <param-value>GBK</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>i18nservletfilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

注意:其中的參數charset有你應用的HTML的字符集來(lái)決定,一般為GBK

采用上述方式,通過(guò)一個(gè)ServletFilter自動(dòng)對每一次提交的參數進(jìn)行字符集裝換,而不需要應用中每一次調用都作一次轉換。同時(shí)也給大家一個(gè)參考,我們應該在一些場(chǎng)合使用ServletFilter。

趙冬路,IEI科技公司

http://www.4ucode.com/Study/Topic/68638

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
jsp與servlet中的中文問(wèn)題解決
Struts2 權限驗證
servlet filter初探
文件上傳自寫(xiě)代碼實(shí)現servlet3.0,part
Java平臺國際編碼問(wèn)題分析_SUN-JAVA技術(shù)
亂碼問(wèn)題總結
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久