⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 formdatamanager.java

📁 java 写的一个新闻发布系统
💻 JAVA
字号:
////                                   ____.//                       __/\ ______|    |__/\.     _______//            __   .____|    |       \   |    +----+       \//    _______|  /--|    |    |    -   \  _    |    :    -   \_________//   \\______: :---|    :    :           |    :    |         \________>//           |__\---\_____________:______:    :____|____:_____\//                                      /_____|////                 . . . i n   j a h i a   w e   t r u s t . . .////  FormDataManager//  EV    18.11.2000//  POL   08.02.2001////  encode              // encodes data from http form     (' -> &#39;)//  formDecode          // encodes special chars for forms (" -> &quot; and '<' -> &lt;)//  decode              // decodes everything//  checkIntegrity//  isTagClosed         // check if a tag is closed//  removeTag//  removeTags//  removeTagWithContent//package org.jahia.data;import org.jahia.utils.*;           // JahiaConsole,  JahiaToolsimport java.util.*;                     // Vectorpublic class FormDataManager {    private static  FormDataManager theObject = null;    private static  Vector          htmlEntities;    /***        * constructor        * EV    18.11.2000        *        */    private FormDataManager()    {        JahiaConsole.println( "FormDataManager", "***** Starting up Form Data Manager *****" );    } // end constructor    /***        * getInstance        * EV    18.11.2000        *        */    public static synchronized FormDataManager getInstance()    {        if (theObject == null) {            theObject = new FormDataManager();        }        return theObject;    } // end getInstance    /***        * encode        * From the form to the file        * Replace single quote to &#39;        * EV    18.11.2000        * POL   09.02.2001        *        */    public String encode( String str )    {        if (str == null) {            return null;        }        str  = JahiaTools.replacePattern(str,"&","X-AND-X"); // internal pseudo tag        str  = JahiaTools.replacePattern(str,"'","&#39;"); // internal pseudo tag        return str;    } // end encode    /***        * formDecode        * from the file to the form        * substitutions: < to &lt;        *                " to &quot;        * EV    19.11.2000        * POL   09.02.2001        */    public String formDecode( String str )    {        if (str == null) {            return null;        }        str  = JahiaTools.replacePattern(str,"X-AND-X","&amp;"); // internal pseudo tag        str  = JahiaTools.replacePattern(str,"<","&lt;");        str  = JahiaTools.replacePattern(str,"&#39;","\'");        str  = JahiaTools.replacePattern(str,"&amp;#39;","\'");        str  = JahiaTools.replacePattern(str,"&amp;#124;","|");        str  = JahiaTools.replacePattern(str,"\"","&quot;");        str  = JahiaTools.text2html(str);        return str;    } // end formDecode    /***        * decode        * From the file to a web page        * 1. if we are not in a <html> session -> replace \n with <br/> tag        * 2. replace special char with html code        * POL   08.02.2001        *        */    public String decode( String str )    {        if (str == null) {            return null;        }        StringBuffer result = new StringBuffer(str.length() + 500);        String strLower = str.toLowerCase();        int startOfIndex = 0;        int i = strLower.indexOf("<html>");        while (i != -1) {            result.append(JahiaTools.replacePattern(str.substring(startOfIndex, i),"\n","\n<br/>"));            startOfIndex = i + 6; // 6 -> <html>            i = strLower.indexOf("</html>",startOfIndex);            if (i != -1){                result.append(str.substring(startOfIndex, i));                startOfIndex = i + 7;  // 7 -> </html>            }            i = strLower.indexOf("<html>",startOfIndex);        }        str = result.append(JahiaTools.replacePattern(str.substring(startOfIndex,str.length()),"\n","\n<br/>")).toString();        str = removeTags(str,"body");        // str = removeTag(str,"meta");        // str = removeTag(str,"!doctype");        str = removeTagWithContent(str,"head");        str = removeTagWithContent(str,"title");        str = removeTagWithContent(str,"frame");        str = removeTagWithContent(str,"frameset");        //str  = JahiaTools.replacePattern(str,"\\<","&lt;");        str = JahiaTools.replacePattern(str,"X-AND-X","&"); // internal pseudo tag        str = JahiaTools.text2html(str);        str = JahiaTools.replacePattern(str,"&#39;","'");        str = JahiaTools.replacePattern(str,"&quot;","\"");        return str;    } // end decode     /*      * Remove a start & end tag in a string      * For example removeTags(str,"title") will remove <title> and </title>      * @author POL      * @version 1.0   POL 23/01/2002      * @param  str    Input String      * @param  tag    Tag to remove      * @return str      **/    private String removeTags (String str, String tag)    {        str = removeTag(str,tag);        str = removeTag(str,"/" + tag);        return str;    }     /*      * Remove a tag from a string      * Exemple: removeTag(str,"body") will remove <body bgcolor="#ffffff">      * @author POL      * @version 1.0   POL 23/01/2002      * @param  str    Input String      * @param  tag    Tag to remove      * @return str      **/    private String removeTag (String str, String tag)    {        if (str == null) {            return null;        }        StringBuffer result = new StringBuffer(str.length());        String strLower = str.toLowerCase();        tag = tag.toLowerCase();        int startOfIndex = 0;        int i = strLower.indexOf("<" + tag);        while (i != -1){            result.append(str.substring(startOfIndex,i));            i = strLower.indexOf(">",i);            if (i != -1){                startOfIndex = i + 1;            }            i = strLower.indexOf("<" + tag, startOfIndex);        }        str = result.append(str.substring(startOfIndex,str.length())).toString();        return str;    }     /*      * Remove a start and end tag with content from a string      * Exemple: removeTag(str,"title") will remove <title>thist is a title</title>      * @author POL      * @version 1.0   POL 23/01/2002      * @param  str    Input String      * @param  tag    Tag to remove      * @return str      **/    private String removeTagWithContent (String str, String tag)    {        if (str == null) {            return null;        }        StringBuffer result = new StringBuffer(str.length());        String strLower = str.toLowerCase();        tag = tag.toLowerCase();        int startOfIndex = 0;        int i = strLower.indexOf("<" + tag);        while (i != -1){            result.append(str.substring(startOfIndex,i));            startOfIndex = i + tag.length() + 1;            i = strLower.indexOf(tag + ">", startOfIndex );            if (i != -1){                startOfIndex = i + tag.length() + 1;            }            i = strLower.indexOf("<" + tag, startOfIndex);        }        str = result.append(str.substring(startOfIndex,str.length())).toString();        return str;    }    /***        * checkIntegrity        * EV    19.11.2000        * called by encode        *        */    public boolean checkIntegrity( String str )    {        if (str == null) {            return false;        }        String  testStr = str;        int     pos     = 0;        int     pos2    = 0;        int     qtCount = 0;        testStr = JahiaTools.replacePattern(str,"\\<","");        // checks "<" and ">"        int searchIndex = 0;        pos = testStr.indexOf( "<", searchIndex );        while (pos != -1) {            pos2 = testStr.indexOf( ">", searchIndex );            pos  = testStr.indexOf( "<", pos2 );            if ((pos2 != -1) && ((pos > pos2) || (pos == -1))) {                // testStr = testStr.substring( pos2 + 1, testStr.length() );                searchIndex = pos2 + 1;            } else {                return false;            }        }        // check some tags who should be closed        if (! (                // isTagClosed("a",str) &&  // problem with above & array                isTagClosed("b>",str) &&                isTagClosed("font",str) &&                isTagClosed("em>",str) &&                isTagClosed("i>",str) &&                isTagClosed("h1",str) &&                isTagClosed("h2",str) &&                isTagClosed("h3",str) &&                isTagClosed("table",str) &&                isTagClosed("script",str) &&                isTagClosed("span",str) &&                isTagClosed("div",str) &&                isTagClosed("layer",str) &&                isTagClosed("blockquote",str) &&                isTagClosed("ul",str) &&                isTagClosed("ol",str) &&                isTagClosed("form",str) &&                isTagClosed("comment",str) &&                isTagClosed("center",str) &&                isTagClosed("textarea",str) &&                isTagClosed("select",str) &&                isTagClosed("xmp",str) &&                isTagClosed("style",str) &&                isTagClosed("pre",str) &&                isTagClosed("u>",str) &&                isTagClosed("small",str) &&                isTagClosed("sub",str) &&                isTagClosed("sup",str) &&                isTagClosed("s>",str) &&                isTagClosed("strike",str) &&                isTagClosed("strong",str) &&                isTagClosed("tbody",str) &&                isTagClosed("caption",str) &&                isTagClosed("colgroup",str) &&                isTagClosed("col",str) &&                isTagClosed("tfoot",str) &&                isTagClosed("th",str) &&                isTagClosed("thread",str) &&                isTagClosed("del",str) &&                isTagClosed("dt",str) &&                isTagClosed("dd",str) &&                isTagClosed("dl",str) &&                isTagClosed("dir",str) &&                isTagClosed("cite",str) &&                isTagClosed("code",str) &&                isTagClosed("fieldset",str) &&                isTagClosed("label",str) &&                isTagClosed("object",str) &&                isTagClosed("map",str) &&                isTagClosed("dfn",str) &&                isTagClosed("listing",str) &&                isTagClosed("marquee",str) &&                isTagClosed("menu",str) &&                isTagClosed("multicol",str) &&                isTagClosed("nobr",str) &&                isTagClosed("note",str) &&                isTagClosed("optgroup",str) &&                isTagClosed("samp",str) &&                isTagClosed("tt",str) &&                isTagClosed("kbd",str) &&                isTagClosed("var",str) &&                isTagClosed("noembed",str) &&                isTagClosed("html",str)               )             ) {                return false;         }        // checks for '"' in tags        searchIndex = 0; // we re-use the above variable, why not ? :)        int endTagIndex = 0;        int startTagIndex = str.indexOf("<", searchIndex);        while (startTagIndex != -1){            endTagIndex = str.indexOf(">",startTagIndex);            if (endTagIndex != -1){                String tag = str.substring(startTagIndex,endTagIndex);                testStr = str;                pos = testStr.indexOf( "\"", searchIndex );                while (pos != -1) {                    qtCount++;                    searchIndex = pos + 1;                    pos = testStr.indexOf( "\"", searchIndex );                }                if ((qtCount % 2) != 0) {                     JahiaConsole.println("FormDataManagerager","Illegal html tag : <" + tag + ">");                    return false;                }             } else {                JahiaConsole.println("FormDataManagerager","Tag not closed");                return false;            }            startTagIndex = str.indexOf("<",endTagIndex);        }        // all checks passed ! -> return true        return true;    } // end checkIntegrity   /***      * Return true if tag is closed in a string.<br>      * For example, <code>&lt;table&gt;</code> should be closed by <code>&lt;/table&gt;</code><br>      * <code>isTagClosed("table","&lt;table&gt;&lt;tr&gt;&lt;td&gt;hello&lt;/td&gt;&lt;/tr&gt;")</code> will return false.<br>      * @author POL      * @version 1.0   POL 03/05/2001      * @param  tag    Tag to check without the <code>&lt; &gt;</code>      * @param  str    Input String      * @return Return true if tag is closed      */     public boolean isTagClosed( String tag, String inputStr )    {        tag = tag.toLowerCase();        String testStr = inputStr.toLowerCase();        String openTag = "<" + tag;        String closeTag = "</" + tag;        int pos1 = 0;        int pos2 = 0;        int searchIndex = 0;        pos1 = testStr.indexOf( openTag, searchIndex );        while (pos1 != -1) {            pos2 = testStr.indexOf( closeTag, searchIndex );            pos1 = testStr.indexOf( openTag , pos2 );            if ((pos2 != -1) && ((pos1 > pos2) || (pos1 == -1))) {                searchIndex = pos2 + tag.length() + 2;            } else {                JahiaConsole.println("FormDataManagerager","ERROR: the HTML tag '" + tag + "' should be closed.");                return false;            }        }        return true;    } // isTagClosed} // end FormDataManager

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -