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)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 策勒县| 桦川县| 大同县| 三门峡市| 荣昌县| 松溪县| 左贡县| 兰考县| 吴旗县| 鸡东县| 淮滨县| 临湘市| 百色市| 新宁县| 北碚区| 安顺市| 满城县| 石楼县| 裕民县| 星座| 宜良县| 江北区| 连平县| 仙游县| 山西省| 遵义县| 新巴尔虎右旗| 纳雍县| 固阳县| 紫金县| 乌拉特后旗| 那曲县| 朝阳县| 奉新县| 孝义市| 明水县| 宾阳县| 会理县| 亳州市| 滁州市| 盱眙县|