有没有高手了解如何过滤request中的html.
我现在可以用 Map m = httpRequest.getParameterMap();
Iterator iter = m.entrySet().iterator();
             while(iter.hasNext()){
              Map.Entry entry = (Map.Entry)iter.next();
              Object obj = entry.getValue();
              String val = "";
              if(obj instanceof String[]){
              String[] strs = (String[])obj;
              for(int i=0;i<strs.length;i++){
              val+=strs[i];
              }
              }else{
              val = obj.toString();
              }
             }取得所有的参数的值,然后也有方法去掉所有的htmltag。但是有一个问题,
我现在如何将修改后的request转发出去呢?
因为我看httpRequest没有setParameter的方法。如果不能把修改后的
request转发出去,后面的action得到的还是含有htmltag的参数。

解决方案 »

  1.   

    我是准备用structs的filter来做这个事情的。
    现在我拿到request,但是无法把修改后的request保存。
      

  2.   

    你不能在后续的Action中过滤这些参数么?
      

  3.   

    过滤是可以啊。但是我有很多action
    如果每个都写,可能工作量太大了
      

  4.   

    楼主是想请求转发吗?  这样行不:
     //目标路径
    String toUrl="*.do?a=1&f=2&.....";
    //请求转发器
    RequestDispatcher dispatcher = request.getRequestDispatcher(toUrl);
    //跳转
    dispatcher.forward(request,response);
     
      

  5.   

    不光光是转发,比如我要过滤htmltag,
    就是画面上面输入
    <s>abc</s>
    然后到了下面的画面还是<s>abc</s>
    不会被解释成abc
    这种效果如果做到整个网站,用structs框架的
    是不是加filter比较容易实现。
      

  6.   

    使用HttpServletRequestWrapper类来试试看
      

  7.   

    这儿有一个例子关于如何使用HttpServletRequestWrapper来实现自定义的setParameterhttp://blog.csdn.net/roamoner/archive/2007/05/25/1625160.aspx
      

  8.   

     //目标路径
    String toUrl="*.do?a=1&f=2&.....";
    //请求转发器
    RequestDispatcher dispatcher = request.getRequestDispatcher(toUrl);
    //跳转
    dispatcher.forward(request,response);
      

  9.   

    你这样可以过滤html吗?
    比如我输入<s>a</s>输出还是<s>a</s>吗?
      

  10.   

    可以使用正则表达式过滤html代码代码例子如下:
    <%
    Option ExplicitFunction stripHTML(strHTML)
    'Strips the HTML tags from strHTMLDim objRegExp, strOutput
    Set objRegExp = New RegexpobjRegExp.IgnoreCase = True
    objRegExp.Global = True
    objRegExp.Pattern = "<.+?>"'Replace all HTML tag matches with the empty string
    strOutput = objRegExp.Replace(strHTML, "")
    'Replace all < and > with < and >
    strOutput = Replace(strOutput, "<", "<")
    strOutput = Replace(strOutput, ">", ">")
    stripHTML = strOutput 'Return the value of strOutputSet objRegExp = Nothing
    End Function
    %><form method="post" id=form1 name=form1>
    <b>Enter an HTML String:</b><br>
    <textarea name="txtHTML" cols="50" rows="8" wrap="virtual"><%=Request("txtHTML")%></textarea>
    <p>
    <input type="submit" value="Strip HTML Tags!" id=submit1 name=submit1>
    </form><% if Len(Request("txtHTML")) > 0 then %>
    <p><hr><p>
    <b><u>View of string <i>with no</i> HTML stripping:</u></b><br>
    <xmp>
    <%=Request("txtHTML")%>
    </xmp><p>
    <b><u>View of string <i>with</i> HTML stripping:</u></b><br>
    <pre>
    <%=StripHTML(Request("txtHTML"))%>
    </pre>
    <% End If %> 
      

  11.   

    或者写个类public class RemoveHtmlInString {
    /**  
         * 删除input字符串中的html格式  
         *   
         * @param input  
         * @param length  
         * @return  
         */  
        public static String splitAndFilterString(String input, int length) {   
            if (input == null || input.trim().equals("")) {   
                return "";   
            }   
            // 去掉所有html元素,   
            String str = input.replaceAll("\\&[a-zA-Z]{1,10};", "").replaceAll(   
                    "<[^>]*>", "");   
            str = str.replaceAll("[(/>)<]", "");   
            int len = str.length();   
            if (len <= length) {   
                return str;   
            } else {   
                str = str.substring(0, length);   
                str += "......";   
            }   
            return str;   
        }  
        
        
    /**  
         * 删除input字符串中的html格式  
         *   
         * @param input  
         * @param length  
         * @return  
         */  
        public static String splitAndFilterString(String input) {   
            if (input == null || input.trim().equals("")) {   
                return "";   
            }   
            // 去掉所有html元素,   
            String str = input.replaceAll("\\&[a-zA-Z]{1,10};", "").replaceAll(   
                    "<[^>]*>", "");   
            str = str.replaceAll("[(/>)<]", "");   
            int len = str.length();   
            
                return str;       }  
    }