到 Google 资讯主页   
EasyJF首页   资料   源码   软件    论坛   网站    
   使用帮助    
    该信息为本站MyRSS系统缓存内容,部分图片及附件有可能无法正常使用.easyjf.comBlogJava无关,不对该信息负责.通过http://kb.csdn.net/keyword/java//../../java/Articles/200603/00b9f0a8-8211-4d78-9e8c-d101350247c5.html访问该信息的原始内容.
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   
格式化JSP页面
作者: 来源:BlogJava  发布时间:2006-03-15 00:00:00.0

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中多一个"<%=%>"符号.

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



Jkallen 2006-03-15 12:50

 
相关文章
 
页面功能  【加入收藏】 【推荐给朋友】 【字体:  】 【关闭】   


EasyJF.com 2006 隐私政策 使用EasyJF前必读