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

📄 linkimpl.java

📁 欢迎使用 FastJsp 开发框架! 编译说明: * 若要生成Api Javadoc文档
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
        return appendx(param, value, Link.NORMAL);
    }

    public Link append(String param, long value, int paramPerfered) {
        return appendx(param, value, paramPerfered);
    }

    private Link appendx(String param, long value, int paramPerfered) {
        ensureBuffers();
        if (value >= 0) {
            if (Link.STATIC==paramPerfered) {
                ensuedAppend();
                buf.append(param).append(sp).append(value);
                len = -1;
                return this;
            } else if (Link.NORMAL==paramPerfered&&!staticParamAppend) {
                staticParamAppend = true;
                ensuedAppend();
                buf.append(param).append(sp).append(value);
                len = -1;
                return this;
            }
        }

        if (qbuf.length() > 0) {
            qbuf.append(qa);
        }
        qbuf.append(param).append('=').append(value);
        return this;
    }

    private Link appendx(String param, int value, int paramPerfered) {
        ensureBuffers();
        if (value >= 0 && param != LinkImpl.UCI) {    //“组件识别”强制只能以动态参数构造
            if (Link.STATIC==paramPerfered) {
                ensuedAppend();
                buf.append(param).append(sp).append(value);
                len = -1;
                return this;
            } else if (Link.NORMAL==paramPerfered&&!staticParamAppend) {
                staticParamAppend = true;
                ensuedAppend();
                buf.append(param).append(sp).append(value);
                len = -1;
                return this;
            }
        }

        if (qbuf.length() > 0) {
            qbuf.append(qa);
        }
        qbuf.append(param).append('=').append(value);
        return this;
    }

    private Link appendx(String param, double value, int paramPerfered) {
        ensureBuffers();
        if (value >= 0) {
              if (Link.STATIC==paramPerfered) {
                ensuedAppend();
                buf.append(param).append(sp).append(value);
                len = -1;
                return this;
          } else if (Link.NORMAL==paramPerfered&&!staticParamAppend) {
                staticParamAppend = true;
                ensuedAppend();
                buf.append(param).append(sp).append(value);
                len = -1;
                return this;
            }
        }

        if (qbuf.length() > 0) {
            qbuf.append(qa);
        }
        qbuf.append(param).append('=').append(value);
        return this;
    }

    private Link appendx(String param, boolean value,int paramPerfered) {
        ensureBuffers();
        if (Link.STATIC==paramPerfered) {
            ensuedAppend();
            buf.append(param).append(sp).append(value);
            len = -1;
            return this;
        } else if (Link.NORMAL==paramPerfered&&!staticParamAppend) {
            staticParamAppend = true;
            ensuedAppend();
            buf.append(param).append(sp).append(value);
            len = -1;
            return this;
        }

        if (qbuf.length() > 0) {
            qbuf.append(qa);
        }
        qbuf.append(param).append('=').append(value);
        return this;
    }


    public Link append(String param, int value) {
        return appendx(param, value, Link.NORMAL);
    }

    public Link append(String param, int value, int paramPerfered) {
        return appendx(param, value, paramPerfered);
    }

    public Link append(String param, double value) {
        return appendx(param, value, Link.NORMAL);
    }

    public Link append(String param, double value, int paramPerfered) {
         return appendx(param, value, paramPerfered);
    }

    public Link append(String param, boolean value) {
        return appendx(param, value, Link.NORMAL);
    }

    public Link append(String param, boolean value, int paramPerfered) {
        return appendx(param, value, paramPerfered);
    }

    public Link append(Map params) {
        if (this.params == null)
            this.params = new TreeMap(params);    //TreeMap 可保持原始参数顺序
        else
            this.params.putAll(params);
        return this;
    }

    public Link appendAnchor(String anchorName) {
        this.anchor = anchorName;
        return this;
    }

    public Link appendAction(String action) {
        return appendq(co.service.servicer.module.actionName, action, true, true);
    }

    public String toString() {
        return getURL();
    }

    public String getURL() {
        if (len == -1)
            len = buf.length();

        if (buf.length() > len)
            buf.delete(len, buf.length());

        if (qBufLen == -1)
            qBufLen = qbuf.length();

        if (qbuf.length() > qBufLen)
            qbuf.delete(qBufLen, qbuf.length());

        if (params != null) {
            Map.Entry e;
            for (Iterator iter = params.entrySet().iterator(); iter.hasNext();) {
                e = (Map.Entry) iter.next();
                appendq(e.getKey().toString(), e.getValue() != null ? e.getValue().toString() : null, true, false);
            }
        }

        if (append) {
            buf.append(co.service.servicer.module.urlExt);
        } else
        if (qbuf.length() > 0 || !(pageName.length() == 0 || pageName.equals(co.service.servicer.module.welcomeFileName))) {
            buf.append(pageName);
            buf.append(co.service.servicer.module.urlExt);
        }

        if (qbuf.length() > 0) {
            buf.append('?').append(qbuf);
        }

        if (anchor != null && anchor.length() > 0)
            buf.append('#').append(anchor);
        return co.service.servicer.stateURL.encodeAfterUrlBuild(buf.toString());
    }

    /*
    * 编码URL参数
    * */
    private void encodeURLParam(StringBuffer buf, String s, Charset charset, boolean encodingStaticParam) {

        for (int i = 0; i < s.length();) {
            int c = (int) s.charAt(i);
            if (dontNeedEncoding.get(c)) {
                if (c == sp && encodingStaticParam) {   //静态url特别处理
                    buf.append(spx);
                } else {
                    if (c == ' ') {
                        c = '+';
                    }
                    buf.append((char) c);
                }
                i++;
            } else {
                do {
                    charArrayWriter.write(c);

                    if (c >= 0xD800 && c <= 0xDBFF) {

                        if ((i + 1) < s.length()) {
                            int d = (int) s.charAt(i + 1);

                            if (d >= 0xDC00 && d <= 0xDFFF) {
                                charArrayWriter.write(d);
                                i++;
                            }
                        }
                    }
                    i++;
                } while (i < s.length() && !dontNeedEncoding.get((c = (int) s.charAt(i))));

                charArrayWriter.flush();
                String str = new String(charArrayWriter.toCharArray());
                byte[] ba = null;
                try {
                    ba = str.getBytes(charset.name());
                } catch (UnsupportedEncodingException e) {
                    throw new ApplicationRuntimeException(e);
                }
                for (int j = 0; j < ba.length; j++) {
                    buf.append('%');
                    char ch = Character.forDigit((ba[j] >> 4) & 0xF, 16);
                                        if (Character.isLetter(ch)) {
                        ch -= caseDiff;
                    }
                    buf.append(ch);
                    ch = Character.forDigit(ba[j] & 0xF, 16);
                    if (Character.isLetter(ch)) {
                        ch -= caseDiff;
                    }
                    buf.append(ch);
                }
                charArrayWriter.reset();
            }
        }
    }

}

⌨️ 快捷键说明

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