亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pageparser.java

?? 非常棒的java數據庫
?? JAVA
字號:
/*
 * Copyright 2004-2008 H2 Group. Licensed under the H2 License, Version 1.0
 * (http://h2database.com/html/license.html).
 * Initial Developer: H2 Group
 */
package org.h2.server.web;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * A page parser can parse an HTML page and replace the tags there.
 * This class is used by the H2 Console.
 */
public class PageParser {
    private WebServer server;
    private String page;
    private int pos;
    private Map settings;
    private int len;
    private StringBuffer result;

    public static String parse(WebServer server, String page, Map settings) {
        PageParser block = new PageParser(server, page, settings, 0);
        return block.parse();
    }

    private PageParser(WebServer server, String page, Map settings, int pos) {
        this.server = server;
        this.page = page;
        this.pos = pos;
        this.len = page.length();
        this.settings = settings;
        result = new StringBuffer(len);
    }

    private void setError(int i) {
        String s = page.substring(0, i) + "####BUG####" + page.substring(i);
        s = PageParser.escapeHtml(s);
        result = new StringBuffer(s);
    }

    private String parseBlockUntil(String end) throws Exception {
        PageParser block = new PageParser(server, page, settings, pos);
        block.parseAll();
        if (!block.readIf(end)) {
            throw new Exception();
        }
        pos = block.pos;
        return block.result.toString();
    }

    public String parse() {
        try {
            parseAll();
            if (pos != len) {
                setError(pos);
            }
        } catch (Exception e) {
            // TODO log error
            setError(pos);
        }
        return result.toString();
    }

    private void parseAll() throws Exception {
        StringBuffer buff = result;
        String p = page;
        int i = pos;
        for (; i < len; i++) {
            char c = p.charAt(i);
            switch (c) {
            case '<': {
//                if (p.charAt(i + 1) == '%') {
//                    // TODO <%@include %>: never used
//                    if (p.charAt(i + 2) == '@') {
//                        i += 3;
//                        pos = i;
//                        read("include");
//                        String file = readParam("file");
//                        read("%>");
//                        String s = server.getTextFile(file);
//                        append(s);
//                        i = pos;
//                    } else {
//                        buff.append(c);
//                    }
//                    break;
//                } else 
                if (p.charAt(i + 3) == ':' && p.charAt(i + 1) == '/') {
                    // end tag
                    pos = i;
                    return;
                } else if (p.charAt(i + 2) == ':') {
                    pos = i;
                    if (readIf("<c:forEach")) {
                        String var = readParam("var");
                        String items = readParam("items");
                        read(">");
                        int start = pos;
                        ArrayList list = (ArrayList) get(items);
                        if (list == null) {
                            result.append("?items?");
                            list = new ArrayList();
                        }
                        if (list.size() == 0) {
                            parseBlockUntil("</c:forEach>");
                        }
                        for (int j = 0; j < list.size(); j++) {
                            settings.put(var, list.get(j));
                            pos = start;
                            String block = parseBlockUntil("</c:forEach>");
                            result.append(block);
                        }
                    } else if (readIf("<c:if")) {
                        String test = readParam("test");
                        int eq = test.indexOf("=='");
                        if (eq < 0) {
                            setError(i);
                            return;
                        }
                        String val = test.substring(eq + 3, test.length() - 1);
                        test = test.substring(0, eq);
                        String value = (String) get(test);
                        read(">");
                        String block = parseBlockUntil("</c:if>");
                        pos--;
                        if (value.equals(val)) {
                            result.append(block);
                        }
                    } else {
                        setError(i);
                        return;
                    }
                    i = pos;
                } else {
                    buff.append(c);
                }
                break;
            }
            case '$':
                if (p.charAt(i + 1) == '{') {
                    i += 2;
                    int j = p.indexOf('}', i);
                    if (j < 0) {
                        setError(i);
                        return;
                    }
                    String item = p.substring(i, j).trim();
                    i = j;
                    String s = (String) get(item);
                    append(s);
                } else {
                    buff.append(c);
                }
                break;
            default:
                buff.append(c);
            }
        }
        pos = i;
    }

    private Object get(String item) {
        int dot = item.indexOf('.');
        if (dot >= 0) {
            String sub = item.substring(dot + 1);
            item = item.substring(0, dot);
            HashMap map = (HashMap) settings.get(item);
            if (map == null) {
                return "?" + item + "?";
            }
            return map.get(sub);
        } else {
            return settings.get(item);
        }
    }

    private void append(String s) {
        if (s != null) {
            result.append(PageParser.parse(server, s, settings));
        }
    }

    private String readParam(String name) throws Exception {
        read(name);
        read("=");
        read("\"");
        int start = pos;
        while (page.charAt(pos) != '"') {
            pos++;
        }
        int end = pos;
        read("\"");
        String s = page.substring(start, end);
        return PageParser.parse(server, s, settings);
    }

    private void skipSpaces() {
        while (page.charAt(pos) == ' ') {
            pos++;
        }
    }

    private void read(String s) throws Exception {
        if (!readIf(s)) {
            throw new Exception();
        }
    }

    private boolean readIf(String s) {
        skipSpaces();
        if (page.regionMatches(pos, s, 0, s.length())) {
            pos += s.length();
            skipSpaces();
            return true;
        }
        return false;
    }

    /**
     * Convert data to HTML, but don't convert newlines and multiple spaces.
     *
     * @param s the data
     * @return the escaped html text
     */
    public static String escapeHtmlData(String s) {
        return escapeHtml(s, false);
    }

    /**
     * Convert data to HTML, including newlines and multiple spaces.
     *
     * @param s the data
     * @return the escaped html text
     */
    public static String escapeHtml(String s) {
        return escapeHtml(s, true);
    }

    private static String escapeHtml(String s, boolean convertBreakAndSpace) {
        if (s == null) {
            return null;
        }
        if (convertBreakAndSpace) {
            if (s.length() == 0) {
                return "&nbsp;";
            }
        }
        StringBuffer buff = new StringBuffer(s.length());
        boolean convertSpace = true;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == ' ') {
                if (convertSpace && convertBreakAndSpace) {
                    buff.append("&nbsp;");
                } else {
                    buff.append(' ');
                    convertSpace = true;
                }
                continue;
            } else {
                convertSpace = false;
            }
            switch (c) {
            case '$':
                // so that ${ } in the text is interpreted correctly
                buff.append("&#36;");
                break;
            case '<':
                buff.append("&lt;");
                break;
            case '>':
                buff.append("&gt;");
                break;
            case '&':
                buff.append("&amp;");
                break;
            case '"':
                buff.append("&quot;");
                break;
            case '\'':
                buff.append("&#39;");
                break;
            case '\n':
                if (convertBreakAndSpace) {
                    buff.append("<br />");
                    convertSpace = true;
                } else {
                    buff.append(c);
                }
                break;
            default:
                if (c >= 128) {
                    buff.append("&#");
                    buff.append((int) c);
                    buff.append(';');
                } else {
                    buff.append(c);
                }
            }
        }
        return buff.toString();
    }

    public static String escapeJavaScript(String s) {
        if (s == null) {
            return null;
        }
        if (s.length() == 0) {
            return "";
        }
        StringBuffer buff = new StringBuffer(s.length());
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            switch (c) {
            case '"':
                buff.append("\\\"");
                break;
            case '\'':
                buff.append("\\'");
                break;
            case '\\':
                buff.append("\\\\");
                break;
            case '\n':
                buff.append("\\n");
                break;
            case '\r':
                buff.append("\\r");
                break;
            case '\t':
                buff.append("\\t");
                break;
            default:
                buff.append(c);
            }
        }
        return buff.toString();
        // return escapeHtml(buff.toString());
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品视频网| 亚洲欧美一区二区三区国产精品 | 香蕉成人伊视频在线观看| 久久黄色级2电影| 91麻豆自制传媒国产之光| 日韩欧美一二三| 亚洲一区二区三区四区的| 国产一区二区三区免费播放| 欧美日韩国产综合久久| 国产精品视频yy9299一区| 青草国产精品久久久久久| 99久久久精品免费观看国产蜜| 欧美成人精精品一区二区频| 亚洲国产精品久久艾草纯爱| 大尺度一区二区| 2021中文字幕一区亚洲| 欧美aⅴ一区二区三区视频| 在线精品视频一区二区三四| 中文字幕日韩av资源站| 国产精品18久久久久久久久| 日韩欧美你懂的| 免费在线视频一区| 欧美日本一区二区三区四区| 一区二区三区久久| 91香蕉视频污| 国产精品你懂的在线欣赏| 国产精品一区三区| 久久女同性恋中文字幕| 国精产品一区一区三区mba视频 | www.日韩大片| 欧美激情在线看| 成人三级伦理片| 中文av一区二区| 99精品视频在线播放观看| 国产精品盗摄一区二区三区| 粉嫩aⅴ一区二区三区四区五区| 亚洲精品在线网站| 国产精品996| 国产精品另类一区| jiyouzz国产精品久久| 国产精品对白交换视频| 99精品久久久久久| 亚洲激情在线播放| 欧美日韩国产大片| 青青草国产成人av片免费| 日韩一区二区三区视频| 精品一区二区三区在线观看 | 91黄色激情网站| 夜夜精品视频一区二区| 欧美日韩亚洲另类| 免费在线观看成人| 久久精品亚洲一区二区三区浴池| 国产成人亚洲综合a∨猫咪| 中文字幕一区二区三区四区不卡 | 激情小说欧美图片| 亚洲国产精品传媒在线观看| 色琪琪一区二区三区亚洲区| 亚洲国产人成综合网站| 精品久久免费看| 懂色av中文一区二区三区| 亚洲精品国产精华液| 91精品国产一区二区三区| 国产在线日韩欧美| 亚洲女人****多毛耸耸8| 欧美日韩1234| 成人性生交大片免费看视频在线| 亚洲精品你懂的| 欧美不卡一区二区三区四区| 成人黄色小视频在线观看| 亚洲一区二区三区四区五区黄| 精品国精品自拍自在线| youjizz久久| 免费三级欧美电影| 综合欧美亚洲日本| 日韩欧美精品在线视频| 色综合咪咪久久| 久久精品国产免费看久久精品| 国产精品免费久久久久| 欧美一区二区三区播放老司机| 不卡一区中文字幕| 美女网站一区二区| 亚洲一区二区三区美女| 国产欧美一区二区在线观看| 欧美日韩大陆一区二区| 成人动漫精品一区二区| 另类的小说在线视频另类成人小视频在线 | 亚洲免费在线播放| 久久久久亚洲蜜桃| 欧美精品日韩精品| 色综合久久久久网| 东方欧美亚洲色图在线| 天天色图综合网| 亚洲人午夜精品天堂一二香蕉| 欧美大片日本大片免费观看| 欧美日韩国产成人在线91| 不卡一区二区在线| 国产精品系列在线观看| 久久精品99国产精品| 五月婷婷激情综合| 亚洲图片欧美视频| 亚洲免费观看高清完整版在线 | 久久蜜桃香蕉精品一区二区三区| 在线观看91av| 欧美午夜理伦三级在线观看| 99久久免费视频.com| 高清不卡在线观看av| 精品一区二区在线免费观看| 久久精品国产精品亚洲红杏| 日本三级韩国三级欧美三级| 日韩中文字幕亚洲一区二区va在线| 亚洲主播在线播放| 亚洲女性喷水在线观看一区| 亚洲欧洲国产日本综合| 亚洲国产精品成人综合色在线婷婷 | 99久久综合99久久综合网站| 国产99精品国产| 大陆成人av片| bt欧美亚洲午夜电影天堂| 成人av动漫在线| 97精品久久久午夜一区二区三区| 成人涩涩免费视频| 91在线国内视频| 91福利在线导航| 欧美最猛性xxxxx直播| 在线视频一区二区免费| 欧美色视频在线观看| 在线综合视频播放| 欧美一区二区在线视频| 2017欧美狠狠色| 国产精品久久久久久一区二区三区| 国产精品国产a| 亚洲主播在线播放| 另类综合日韩欧美亚洲| 国产剧情av麻豆香蕉精品| www.欧美日韩国产在线| 色欧美日韩亚洲| 制服.丝袜.亚洲.另类.中文| 欧美精品一区二区久久久| 中文字幕+乱码+中文字幕一区| 国产精品欧美久久久久一区二区| 1024成人网| 亚洲图片欧美一区| 国精产品一区一区三区mba桃花 | 久久国产精品免费| 高清久久久久久| 色8久久精品久久久久久蜜| 欧美一区二区三区电影| 国产视频911| 亚洲成人在线免费| 国产一区在线看| 日本韩国一区二区| 欧美α欧美αv大片| 亚洲少妇屁股交4| 日韩电影网1区2区| 不卡影院免费观看| 91精品国产黑色紧身裤美女| 中文字幕欧美国产| 日韩中文字幕麻豆| 99热在这里有精品免费| 91精品国产aⅴ一区二区| 中文字幕在线一区免费| 捆绑调教一区二区三区| 一本到一区二区三区| 久久久久久久久久久99999| 亚洲国产精品人人做人人爽| 成人午夜电影小说| 日韩视频一区在线观看| 亚洲精品视频在线观看网站| 国产精品亚洲专一区二区三区| 欧美少妇bbb| 亚洲欧洲国产日本综合| 国产一区二区91| 日韩一区二区免费在线电影| 亚洲一区在线观看视频| 成人app网站| 国产日产精品一区| 蜜乳av一区二区三区| 欧美日韩一本到| 洋洋av久久久久久久一区| 福利电影一区二区| 精品成a人在线观看| 三级影片在线观看欧美日韩一区二区 | 99久久免费国产| 久久久99久久精品欧美| 免费久久精品视频| 欧美日韩成人综合| 一区二区三区av电影| 99国内精品久久| 日本一区二区成人在线| 国产精品99久久久久久久女警 | 欧美美女喷水视频| 亚洲人吸女人奶水| 色综合中文字幕国产 | 欧美日韩高清一区二区三区| 亚洲男人的天堂在线观看| 暴力调教一区二区三区| 国产精品久久看| av电影在线观看不卡| 国产精品成人午夜| 波多野结衣精品在线|