隨筆 - 100  文章 - 50  trackbacks - 0
          <2025年5月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          我收藏的一些文章!

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          首先,列出我用到的參考資料吧:

          資料一來自:http://magicgod.javaeye.com/blog/146537

          資料二來自:http://blog.sina.com.cn/s/blog_56000153010005iq.html

          我就是根據上面的兩個資料,寫了一個FILTER和一個JAVA 類,具體如下:

          FILTER: SpecialCharacterFilter

          view plaincopy to clipboardprint?
           
          import java.io.IOException;  
           
          import java.util.Enumeration;  
           
          import java.util.HashMap;  
           
           
           
          import javax.servlet.Filter;  
           
          import javax.servlet.FilterChain;  
           
          import javax.servlet.FilterConfig;  
           
          import javax.servlet.ServletException;  
           
          import javax.servlet.ServletRequest;  
           
          import javax.servlet.ServletResponse;  
           
          import javax.servlet.http.HttpServlet;  
           
          import javax.servlet.http.HttpServletRequest;  
           
           
           
           
           
          public class SpecialCharacterFilter extends HttpServlet implements Filter {  
           
           
           
              protected FilterConfig config;  
           
           
           
              public void destroy() {  
           
              }  
           
           
           
              public void doFilter(ServletRequest req, ServletResponse res,  
           
                      FilterChain chain) throws IOException, ServletException {  
           
                  System.out.println("[SpecialCharacterFilter] : doFilter *************");  
           
                  HttpServletRequest request = (HttpServletRequest)req;  
           
                  HashMap<String, String[]> m = new HashMap(request.getParameterMap());  
           
                  HashMap<String, String[]> mm = new HashMap<String, String[]>();  
           
                  Enumeration<String> enu = request.getParameterNames();  
           
                  if(m.size() > 0 && processParameters(m, enu, mm)) {  
           
                      ParameterRequestWrapper wrapRequest = new ParameterRequestWrapper(request, mm);  
           
                      chain.doFilter(wrapRequest, res);  
           
                  } else {  
           
                      chain.doFilter(req, res);  
           
                  }  
           
              }  
           
           
           
              public void init(FilterConfig arg0) throws ServletException {  
           
                  this.config = arg0;  
           
              }  
           
           
           
              public boolean processParameters(HashMap<String, String[]> m, Enumeration enu, HashMap<String, String[]> mm) {  
           
                  System.out.println("[SpecialCharacterFilter] : processParameters *************");  
           
                  if (m != null && enu != null) {  
           
                      while (enu.hasMoreElements()) {  
           
                          String key = (String)enu.nextElement();  
           
                          String [] values = (String [])m.get(key);   
           
                          for(int i = 0; i < values.length; i ++) {  
           
                              if (values[i] != null) {  
           
                                  values[i] = values[i].trim();  
           
                                  values[i] = values[i].replaceAll("&", "&");  
           
                                  values[i] = values[i].replaceAll("<", "<");  
           
                                  values[i] = values[i].replaceAll(">", ">");  
           
                                  values[i] = values[i].replaceAll("\t", "    ");  
           
                                  values[i] = values[i].replaceAll("\r\n", "\n");  
           
                                  values[i] = values[i].replaceAll("\n", "<br>");  
           
                                  values[i] = values[i].replaceAll("  ", "  ");  
           
                                  values[i] = values[i].replaceAll("'", "'");  
           
                                  values[i] = values[i].replaceAll("\\\\", "\");  
           
                              }  
           
                          }  
           
                          mm.put(key, values);  
           
                      }  
           
                  }  
           
                  return true;  
           
              }  
           
           
           


          import java.io.IOException;

          import java.util.Enumeration;

          import java.util.HashMap;

           

          import javax.servlet.Filter;

          import javax.servlet.FilterChain;

          import javax.servlet.FilterConfig;

          import javax.servlet.ServletException;

          import javax.servlet.ServletRequest;

          import javax.servlet.ServletResponse;

          import javax.servlet.http.HttpServlet;

          import javax.servlet.http.HttpServletRequest;

           

           

          public class SpecialCharacterFilter extends HttpServlet implements Filter {

           

           protected FilterConfig config;

           

           public void destroy() {

           }

           

           public void doFilter(ServletRequest req, ServletResponse res,

             FilterChain chain) throws IOException, ServletException {

            System.out.println("[SpecialCharacterFilter] : doFilter *************");

            HttpServletRequest request = (HttpServletRequest)req;

            HashMap<String, String[]> m = new HashMap(request.getParameterMap());

            HashMap<String, String[]> mm = new HashMap<String, String[]>();

            Enumeration<String> enu = request.getParameterNames();

            if(m.size() > 0 && processParameters(m, enu, mm)) {

             ParameterRequestWrapper wrapRequest = new ParameterRequestWrapper(request, mm);

             chain.doFilter(wrapRequest, res);

            } else {

             chain.doFilter(req, res);

            }

           }

           

           public void init(FilterConfig arg0) throws ServletException {

            this.config = arg0;

           }

           

           public boolean processParameters(HashMap<String, String[]> m, Enumeration enu, HashMap<String, String[]> mm) {

            System.out.println("[SpecialCharacterFilter] : processParameters *************");

            if (m != null && enu != null) {

             while (enu.hasMoreElements()) {

              String key = (String)enu.nextElement();

              String [] values = (String [])m.get(key);

              for(int i = 0; i < values.length; i ++) {

               if (values[i] != null) {

                values[i] = values[i].trim();

                values[i] = values[i].replaceAll("&", "&");

                values[i] = values[i].replaceAll("<", "<");

                values[i] = values[i].replaceAll(">", ">");

                values[i] = values[i].replaceAll("\t", "    ");

                values[i] = values[i].replaceAll("\r\n", "\n");

                values[i] = values[i].replaceAll("\n", "<br>");

                values[i] = values[i].replaceAll("  ", "  ");

                values[i] = values[i].replaceAll("'", "'");

                values[i] = values[i].replaceAll("\\\\", "\");

               }

              }

              mm.put(key, values);

             }

            }

            return true;

           }

           

          }
          view plaincopy to clipboardprint?
          JAVA 類:ParameterRequestWrapper  

          JAVA 類:ParameterRequestWrapper view plaincopy to clipboardprint?
          <PRE class=java name="code">import java.util.Enumeration;  
           
          import java.util.Map;  
           
          import java.util.Vector;  
           
           
           
          import javax.servlet.http.HttpServletRequest;  
           
          import javax.servlet.http.HttpServletRequestWrapper;  
           
           
           
          public class ParameterRequestWrapper extends HttpServletRequestWrapper {  
           
           
           
              private Map params;  
           
           
           
              public ParameterRequestWrapper(HttpServletRequest request, Map newParams) {  
           
                  super(request);  
           
                  this.params = newParams;  
           
              }  
           
           
           
              public Map getParameterMap() {  
           
                  return params;  
           
              }  
           
           
           
              public Enumeration getParameterNames() {  
           
                  Vector l = new Vector(params.keySet());  
           
                  return l.elements();  
           
              }  
           
           
           
              public String[] getParameterValues(String name) {  
           
                  Object v = params.get(name);  
           
                  if (v == null) {  
           
                      return null;  
           
                  } else if (v instanceof String[]) {  
           
                      return (String[]) v;  
           
                  } else if (v instanceof String) {  
           
                      return new String[] { (String) v };  
           
                  } else {  
           
                      return new String[] { v.toString() };  
           
                  }  
           
              }  
           
           
           
              public String getParameter(String name) {  
           
                  Object v = params.get(name);  
           
                  if (v == null) {  
           
                      return null;  
           
                  } else if (v instanceof String[]) {  
           
                      String[] strArr = (String[]) v;  
           
                      if (strArr.length > 0) {  
           
                          return strArr[0];  
           
                      } else {  
           
                          return null;  
           
                      }  
           
                  } else if (v instanceof String) {  
           
                      return (String) v;  
           
                  } else {  
           
                      return v.toString();  
           
                  }  
           
              }  
           
          }  
          </PRE>  
          <PRE class=java name="code">最后,還是寫一下WEB.XML的配置吧:</PRE>  
          <PRE class=java name="code"><PRE class=xml name="code"> <filter>  
           
                  <filter-name>specialCharacterFilter</filter-name>  
           
                  <filter-class>  
           
                      com.fhn.vismp.common.SpecialCharacterFilter  
           
                  </filter-class>  
           
              </filter>  
           
           
           
              <filter-mapping>  
           
                  <filter-name>specialCharacterFilter</filter-name>  
           
                  <url-pattern>*.do</url-pattern>  
           
              </filter-mapping>  
           
              <filter-mapping>  
           
                  <filter-name>specialCharacterFilter</filter-name>  
           
                  <url-pattern>*.jsp</url-pattern>  
           
              </filter-mapping></PRE>  
           
          </PRE> 


          本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/wanchengpeng/archive/2008/07/09/2628926.aspx

          posted on 2010-01-31 13:37 fly 閱讀(4320) 評論(0)  編輯  收藏 所屬分類: jsp學習
          主站蜘蛛池模板: 安平县| 阿克苏市| 易门县| 莎车县| 高邮市| 谢通门县| 灵武市| 开平市| 卫辉市| 华蓥市| 永安市| 怀来县| 景宁| 兴仁县| 沂水县| 靖州| 梧州市| 凉城县| 钦州市| 清水河县| 堆龙德庆县| 昭通市| 黑河市| 阳山县| 卓资县| 虞城县| 江门市| 江北区| 玛沁县| 大名县| 秦皇岛市| 锦州市| 东阳市| 太仆寺旗| 哈尔滨市| 辛集市| 卓尼县| 连南| 攀枝花市| 甘德县| 桂平市|