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 保爾任 閱讀(247) 評論(0)  編輯  收藏

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


          網站導航:
           

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 库尔勒市| 鸡东县| 剑阁县| 博客| 银川市| 孝感市| 苏尼特左旗| 金华市| 宜昌市| 儋州市| 开鲁县| 宜宾市| 岑巩县| 金沙县| 安龙县| 聂拉木县| 开远市| 陕西省| 汕尾市| 遂溪县| 渑池县| 英山县| 郑州市| 太谷县| 固原市| 海阳市| 视频| 平昌县| 长宁区| 双桥区| 东宁县| 米易县| 虹口区| 遂平县| 蒲城县| 普洱| 同江市| 望奎县| 平塘县| 宾川县| 红河县|