直接保存,然后当从数据库中取出来时用过滤方法过滤一遍再送回页面即可,给一段代码,看了就明白了,你可以自己扩充
public static String filter(String value) {        if (value == null)
            return (null);        StringBuffer result = new StringBuffer();
        for (int i = 0; i < value.length(); i++) {
            char ch = value.charAt(i);
            if (ch == '<')
                result.append("&lt;");
            else if (ch == '>')
                result.append("&gt;");
            else if (ch == '&')
                result.append("&amp;");
            else if (ch == '"')
                result.append("&quot;");
            else if (ch == '\r')
                result.append("<BR>");
            else if (ch == '\n') {
                if (i > 0 && value.charAt(i - 1) == '\r') {                } else {
                    result.append("<BR>");
                }
            } else if (ch == '\t')
                result.append("&nbsp;&nbsp;&nbsp;&nbsp");
            else if (ch == ' ')
                result.append("&nbsp;");
            else
                result.append(ch);
        }
        return (result.toString());
    }

解决方案 »

  1.   

    replaceAll()
    把空格回车替换出来就可以了
      

  2.   

    数据库的数据取出来以后,把"\r\n"替换成"<br>"就可以了
      

  3.   

    楼上的各位,我在保存时没有做任何处理,读取的时候在action里用replaceAll("\n","<br>")替换,可是
    a
    b
    c
    d
    就变成a<br>b<br>c<br>d了
    怎么办?
      

  4.   

    取出内容的时候照楼上说的,把特殊字符如:\r\n 空格之类的,转换成相应的html标签。
    如果你是用Struts的bean:write来显示的话,别忘了加上,filter="false"
    <bean:write name="info" property="content" filter="false"/>
      

  5.   

    空格我替换成功了,可是<br>在action里替换出来是&lt;br&gt;
    结果显示出来就变成了a<br>b了
      

  6.   

    谢谢loverface(双面人),搞定了,我没加上filter="false",加上之后就好了,谢谢大家,马上结账