最简单的方法:在提交的时候判断textarea里面是否包含"<"或">",没有"<"或">"就不可能有html的文本。

解决方案 »

  1.   

    我的意思是即使用户输入带有html的文本, 也是把他的文本原封不动的显示,避免他的文本被浏览器解释破坏整个页面的布局!
      

  2.   

    这下面有段代码,可以转换hmtl标记,可以将用户输入的带html的文本原封不动的显示。不过没有经过严格的测试,不能保证100%的正确性
    source变量是类的属性,也就是系统保存的用户输入的文本
        /**
         * 将动态内容中的HTML标记转换成实体,并根据需要转换换行、空格
         * @param form 是否是表单控件的缺省值,如果是,则不可以转换换行和空格,如果
         * 不是,则需要转换换行和空格
         * @return 转化后的字符串
         */
        public String escapeHTMLTags(boolean form)
        {
            StringBuffer buf = new StringBuffer();
            char ch ;
            for (int i = 0; i < source.length(); i++)
            {
                ch = source.charAt(i);
                switch (ch)
                {
                    case '"':
                        buf.append("&#34;");
                        break;
                    case '\'':
                        buf.append("&#39;");
                        break;
                    case '<':
                        buf.append("&#60;");
                        break;
                    case '>':
                        buf.append("&#62;");
                        break;
                    case '&':
                        buf.append("&#38;");
                        break;
                    case '\n':
                        if (form) buf.append("<br>");
                        else buf.append(ch);
                        break;
                    case ' ':
                        if (form) buf.append("&nbsp;");
                        else buf.append(ch);
                        break;
                    default:
                        buf.append(ch);
                        break;
                }
            }
            return buf.toString();
        }