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) 評(píng)論(0)  編輯  收藏

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


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

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

          常用鏈接

          留言簿(4)

          隨筆分類(lèi)

          隨筆檔案

          文章分類(lèi)

          文章檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 乌拉特后旗| 巴塘县| 舟山市| 上犹县| 桑日县| 石泉县| 鱼台县| 大新县| 麻城市| 瑞安市| 海宁市| 秦皇岛市| 广德县| 蛟河市| 五寨县| 赞皇县| 乐昌市| 通榆县| 大宁县| 玉林市| 瓦房店市| 罗平县| 龙口市| 个旧市| 宁波市| 赫章县| 五寨县| 淮安市| 高陵县| 区。| 东台市| 横峰县| 始兴县| 阳山县| 南江县| 贡觉县| 罗田县| 义乌市| 鲜城| 大埔区| 甘谷县|