JAVA

人生若只如初见,何事秋风悲画扇。

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  50 随笔 :: 25 文章 :: 157 评论 :: 0 Trackbacks

JSP页面里面的内容往往是动态显示,当然也一般是从DB中按需取出来的了!
在显示过程也许会碰到这样的问题:

我们通过后台操作将一些文字(通知什么的)传到DB中,其中难免会分段,分行什么的.可是我们从DB中取出来直接在JSP页面显示时出来的却是从头到尾的一片文字!!!

解决方法:
首先应将在DB中的相关显示文字取出来的时候进行一个转换,比如说把里面的回车,换行,空格什么的转换成HTML能识别的标记.也许以下代码正是我们需要的:


public class CheckData extends Object {


    
/** *//** *//** *//**
     * CheckData 构造器
     *
     * 
@param
     * 
@return

     
*/


    
public CheckData() {}


    
/** *//** *//** *//**
     * 字符串替换,将 source 中的 oldString 全部换成 newString
     *
     * 
@param source 源字符串
     * 
@param oldString 老的字符串
     * 
@param newString 新的字符串
     * 
@return 替换后的字符串
     
*/

    
public static String Replace(String source, String oldString, String newString) {
        StringBuffer output 
= new StringBuffer();

        
int lengthOfSource = source.length();   // 源字符串长度
        int lengthOfOld = oldString.length();   // 老字符串长度

        
int posStart = 0;   // 开始搜索位置
        int pos;            // 搜索到老字符串的位置

        
while ((pos = source.indexOf(oldString, posStart)) >= 0{
            output.append(source.substring(posStart, pos));

            output.append(newString);
            posStart 
= pos + lengthOfOld;
        }


        
if (posStart < lengthOfSource) {
            output.append(source.substring(posStart));
        }


        
return output.toString();
    }


    
/** *//**//*
    public static String ReplaceIgnoreCase(String source, String oldString, String newString) {
    }
    
*/


    
/** *//** *//** *//**
     * 将字符串格式化成 HTML 代码输出
     * 只转换特殊字符,适合于 HTML 中的表单区域
     *
     * 
@param str 要格式化的字符串
     * 
@return 格式化后的字符串
     
*/

    
public static String toHtmlInput(String str) {
        
if (str == null)    return null;

        String html 
= new String(str);

        html 
= Replace(html, "&""&amp;");
        html 
= Replace(html, "<""&lt;");
        html 
= Replace(html, ">""&gt;");

        
return html;
    }


    
/** *//** *//** *//**
     * 将字符串格式化成 HTML 代码输出
     * 除普通特殊字符外,还对空格、制表符和换行进行转换,
     * 以将内容格式化输出,
     * 适合于 HTML 中的显示输出
     *
     * 
@param str 要格式化的字符串
     * 
@return 格式化后的字符串
     
*/

    
public static String toHtml(String str) {
        
if (str == null)    return null;

        String html 
= new String(str);

        html 
= toHtmlInput(html);
        html 
= Replace(html, "\r\n""\n");
        html 
= Replace(html, "\n""<br>\n");
        html 
= Replace(html, "\t""    ");
        html 
= Replace(html, "  "" &nbsp;");

        
return html;
    }


}



好啦,现在你可以直接通过类调用相应的方法(比如说toHtml)后,就成了HTML能识别的格式了.如你在DB中的内容可能如下:

"lilin and you do it "
也许转换后成了
"lilin and you do it<br> "

接下来也许我们会很自然地想到用JS(innerTHML,document.write()等等来处理)来将其输出到JSP中.然而结果却往往不是我们想要的,原因是你在DB中的数据不符合JS的语法,因为在JS中要求所有的输出语句均在同一行中,否则就会出现"未结束的字符串常量"的错误.而我们转换后的仅仅是把DB中数据用HTML标识符来替代,比如说若有一行空白,那么很可能对应的就是一个"<BR>"符号,但是这个符号依然会占一行...(大概是这个意思)

我在JSP页面中,直接将它们out出来的(想一下servlet是怎么直接显示布面内容的^_^,虽然我一向对servlet这样的行为比较反感)!不管我们转换后的字符串中有多少行,全部把它放到out中就可以了!惟一的缺陷是又要在JSP中多一个"<%=%>"符号.

不知道各位有什么别的好方法没有?

posted on 2006-03-15 12:50 Jkallen 阅读(7952) 评论(7)  编辑  收藏 所属分类: JEE学习AJAX

评论

# re: 格式化JSP页面 2006-03-15 16:11 zgli
推荐 FCKEditor  回复  更多评论
  

# re: 格式化JSP页面 2006-03-15 17:44 lizongbo
你的toHtml的效率低的简直不是一般的低,

建议你去看看tomcat的例子:

apache-tomcat-5.5.15\webapps\servlets-examples\WEB-INF\classes\util\HTMLFilter.java

  回复  更多评论
  

# re: 格式化JSP页面 2006-03-16 08:30 Jkallen
apache的那个程序确实要好不少!

倒是没注意到tomcat里有这样的东西...
谢谢lizongbo  回复  更多评论
  

# re: 格式化JSP页面 2006-03-17 22:19 holyfield
写得不错,谢谢。  回复  更多评论
  

# re: 格式化JSP页面 2006-06-02 17:17 pc
http://www.kpwang.com/jsp_java/200647174812.htm jsp+tomcat+mysqlsevletjavabean配置全过程

http://www.kpwang.com/jsp_java/20064692816.htm jsp中使用xmlhttp进行数据交互

http://www.kpwang.com/jsp_java/20064691542.htm jsp文件操作大全  回复  更多评论
  

# re: 格式化JSP页面[未登录] 2007-09-04 18:35 RatKing
我在JSP中使用JSTL的<c:out>标签向页面输出内容,已经自动转码处理了,根本无需自己编程动手。  回复  更多评论
  

# re: 格式化JSP页面 2009-03-30 22:47 niname
谢谢您,真好用!  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: