📄 linkimpl.java
字号:
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 + -