接口 URIParser
-
public interface URIParserURIParser接口的实现类既用于分析、缓存请求URI(Request-URI),也用于URL重写(URL是URI的子集)。 qhs内置有本接口的实现类,开发人员无需开发本接口的实现类。 qhs内置的实现类可分析以下两种形式URI:1、scheme://[userinfo@]host[:port][path][?query]
2、[path]?query
上述两种形式URI由scheme、userinfo、host、port、path、query等部件构成,“[]”括住的字符、部件是可选的。
上述的schme、userinfo、host、port、path、query等部件的构成字符遵循rfc3986的规定。
-
-
方法概要
所有方法 实例方法 抽象方法 修饰符和类型 方法 说明 voidclearHost()清除URI的host部件。voidclearPath()清除URI的path部件。voidclearPort()清除URI的port部件。voidclearQuery()清除URI的query部件。voidclearScheme()清除URI的scheme部件。voidclearUserinfo()清除URI的userinfo部件。byte[]getHost(boolean escaped)返回URI的host部件。intgetHost(boolean escaped, byte[] buffer, int startIndex)复制URI的host部件到缓存区。intgetHostLength(boolean escaped)返回URI的host部件的长度。java.lang.StringgetParsingResultString()返回URI的分析结果。byte[]getPath(boolean escaped)返回URI的path部件。intgetPath(boolean escaped, byte[] buffer, int startIndex)复制URI的path部件到缓存区。intgetPathLength(boolean escaped)返回URI的path部件的长度。intgetPathMaxLength()返回URI的path部件的允许最大长度。intgetPort()返回URI的port部件。byte[]getQuery(boolean escaped)返回URI的query部件。intgetQuery(boolean escaped, byte[] buffer, int startIndex)复制URI的query部件到缓存区。intgetQueryLength(boolean escaped)返回URI的query部件的长度。intgetQueryMaxLength()返回URI的query部件的允许最大长度。byte[]getScheme()返回URI的scheme部件。intgetScheme(byte[] buffer)复制URI的scheme部件到缓存区。intgetSchemeLength()返回URI的scheme部件的长度。byte[]getURI()返回已转义的URI。intgetURI(byte[] buffer)复制已转义的URI到buffer参数。intgetURILength()返回已转义的URI的长度。byte[]getUserinfo(boolean escaped)返回URI的userinfo部件。intgetUserinfo(boolean escaped, byte[] buffer, int startIndex)复制URI的userinfo部件到缓存区。intgetUserinfoLength(boolean escaped)返回URI的userinfo部件的长度。booleanisIPv4Address()判断URI的host部件是否属于IPv4地址。booleanisIPv6Address()判断URI的host部件是否属于IPv6地址。booleanisRegname()判断URI的host部件是否属于已注册名称。booleanparse(byte[] buffer)分析一个URI。booleanparse(byte[] buffer, int startIndex, int endIndex)分析一个URI。voidparseQuery(UFormDataListener listener, char[] tempCharBuffer)尝试分析属于application/x-www-form-urlencoded媒体类型的表单数据(form data)。booleanpathAppend(byte[] ba, int startIndex, int endIndex)对URI的path部件追加数据。booleanpathEndsWith(byte[] ba)检测URI的path部件的末端。booleanpathEquals(byte[] ba)检测URI的path部件是否相等。intpathIndexOf(int startIndex, byte[] ba)在URI的path部件上查找数据。booleanpathInsert(int startIndex, byte[] ba)在URI的path部件上插入数据。booleanpathRemove(int startIndex, int endIndex)在URI的path部件上删除数据。intpathReplace(int startIndex, byte[] oldBytes, byte[] newBytes)尝试在URI的path部件上替换一次数据。booleanpathStartsWith(byte[] ba)检测URI的path部件的开始。booleansetHost(boolean escaped, byte[] buffer)对URI的host部件设置为IPv4地址、IPv6地址、已注册名称(registered name,例如:www.temp-name.cn)。booleansetHost(byte[] buffer)对URI的host部件设置为IPv4地址、IPv6地址、已注册名称。booleansetPath(boolean escaped, byte[] buffer)设置URI的path部件。booleansetPath(boolean escaped, byte[] buffer, int length)设置URI的path部件。voidsetPort(int port)设置URI的port部件。booleansetQuery(boolean escaped, byte[] buffer)设置URI的query部件。booleansetQuery(boolean escaped, byte[] buffer, int length)设置URI的query部件。booleansetScheme(byte[] buffer)设置URI的scheme部件。booleansetUserinfo(boolean escaped, byte[] buffer)设置URI的userinfo部件。
-
-
-
方法详细资料
-
getSchemeLength
int getSchemeLength()
返回URI的scheme部件的长度。- 返回:
- URI的scheme部件的长度。
-
getScheme
byte[] getScheme()
返回URI的scheme部件。- 返回:
- URI的scheme部件。
-
getScheme
int getScheme(byte[] buffer)
复制URI的scheme部件到缓存区。如果用于调用本方法的参数值设置不足以容纳URI的scheme部件,就抛出异常。
- 参数:
buffer- 用于存放scheme部件的缓存区。- 返回:
- 存放在buffer参数的scheme部件的长度。
-
setScheme
boolean setScheme(byte[] buffer)
设置URI的scheme部件。调用本方法时,本方法检测存放在buffer参数的scheme部件是否遵循rfc3986的规定。 如果遵循了rfc3986规定而且部件长度可接受,就把存放在buffer参数的scheme部件复制成为URI的scheme部件,否则就清除URI的scheme部件。
- 参数:
buffer- 存放有scheme部件的缓存区。- 返回:
- true值表示设置操作成功,false值表示设置操作失败。
-
clearScheme
void clearScheme()
清除URI的scheme部件。
-
getUserinfoLength
int getUserinfoLength(boolean escaped)
返回URI的userinfo部件的长度。- 参数:
escaped-如果escaped值为true,就返回已转义的userinfo部件的长度。
如果escaped值为false,就返回未转义的userinfo部件的长度。
- 返回:
- URI的userinfo部件的长度。
-
getUserinfo
byte[] getUserinfo(boolean escaped)
返回URI的userinfo部件。- 参数:
escaped-如果escaped值为true,就返回已转义的userinfo部件。
如果escaped值为false,就返回未转义的userinfo部件。
- 返回:
- URI的userinfo部件。
-
getUserinfo
int getUserinfo(boolean escaped, byte[] buffer, int startIndex)复制URI的userinfo部件到缓存区。- 参数:
escaped-如果escaped值为true,就复制已转义的userinfo部件。
如果escaped值为false,就复制未转义的userinfo部件。
buffer- 用于存放userinfo部件的缓存区。如果在buffer数组上的可用空间长度小于URI的userinfo部件的长度,就抛出异常。startIndex- 在buffer参数存放userinfo部件的开始位置。- 返回:
- 存放在buffer参数的userinfo部件的长度。
-
setUserinfo
boolean setUserinfo(boolean escaped, byte[] buffer)设置URI的userinfo部件。- 参数:
escaped-如果escaped值为true,就检测存放在buffer参数的userinfo部件是否遵循rfc3986的规定。 如果遵循了rfc3986的规定而且部件的长度可接受,就把存放在buffer参数的userinfo部件复制成为URI的userinfo部件,否则就清除URI的userinfo部件。
如果escaped值为false,就尝试把存放在buffer参数的userinfo部件复制成为URI的userinfo部件, 并在复制的过程中尝试对构成userinfo部件的字符进行转义。在复制的过程中,如果发现buffer参数的userinfo部件太长,就清除URI的userinfo部件。
buffer- 存放有userinfo部件的缓存区。- 返回:
- true值表示设置操作成功,false值表示设置操作失败。
-
clearUserinfo
void clearUserinfo()
清除URI的userinfo部件。
-
setHost
boolean setHost(boolean escaped, byte[] buffer)对URI的host部件设置为IPv4地址、IPv6地址、已注册名称(registered name,例如:www.temp-name.cn)。- 参数:
escaped- escaped参数不适用于IPv4地址、IPv6地址,只适用于已注册名称。如果escaped值为true,就检测存放在buffer参数的已注册名称是否遵循rfc3986的规定。 如果遵循了rfc3986的规定而且部件的长度可接受,就把存放在buffer参数的已注册名称复制成为URI的host部件,否则就清除URI的host部件。
如果escaped值为false,就把存放在buffer参数的已注册名称复制成为URI的host部件, 并在复制的过程中尝试对构成host部件的字符进行转义。在复制的过程中,如果发现存放在buffer参数的host部件太长,就清除URI的host部件。
buffer- 存放有IPv4地址、IPv6地址、已注册名称的缓存区。- 返回:
- true值表示设置操作成功,false值表示设置操作失败。
-
setHost
boolean setHost(byte[] buffer)
对URI的host部件设置为IPv4地址、IPv6地址、已注册名称。 调用本方法等于调用setHost(true, buffer)。- 参数:
buffer- 略。- 返回:
- 略。
-
isIPv4Address
boolean isIPv4Address()
判断URI的host部件是否属于IPv4地址。- 返回:
- true值表示host部件属于IPv4地址,false值表示host部件不属于IPv4地址。
-
isIPv6Address
boolean isIPv6Address()
判断URI的host部件是否属于IPv6地址。- 返回:
- true值表示host部件属于IPv6地址,false值表示host部件不属于IPv6地址。
-
isRegname
boolean isRegname()
判断URI的host部件是否属于已注册名称。- 返回:
- true值表示host部件属于已注册名称,false值表示host部件不属于已注册名称。
-
getHostLength
int getHostLength(boolean escaped)
返回URI的host部件的长度。- 参数:
escaped-如果escaped值为true,就返回已转义的host部件的长度。
如果escaped值为false,就返回未转义的host部件的长度。
- 返回:
- URI的host部件的长度。
-
getHost
byte[] getHost(boolean escaped)
返回URI的host部件。- 参数:
escaped-如果escaped值为true,就返回已转义的host部件。
如果escaped值为false,就返回未转义的host部件。
- 返回:
- URI的host部件。
-
getHost
int getHost(boolean escaped, byte[] buffer, int startIndex)复制URI的host部件到缓存区。- 参数:
escaped-如果escaped为true,就复制已转义的host部件。
如果escaped为false,就复制未转义的host部件。
buffer- 用于存放host部件的缓存区。如果在buffer数组上的可用空间长度小于URI的host部件的长度,就抛出异常。startIndex- 在buffer参数存放host部件的开始位置。- 返回:
- 存放在buffer参数的host部件的长度。
-
clearHost
void clearHost()
清除URI的host部件。
-
getPort
int getPort()
返回URI的port部件。- 返回:
- port部件。
-
setPort
void setPort(int port)
设置URI的port部件。- 参数:
port- 端口号。
-
clearPort
void clearPort()
清除URI的port部件。
-
getPathLength
int getPathLength(boolean escaped)
返回URI的path部件的长度。- 参数:
escaped-如果escaped值为true,就返回已转义的path部件的长度。
如果escaped值为false,就返回未转义的path部件的长度。
- 返回:
- URI的path部件的长度。
-
getPath
int getPath(boolean escaped, byte[] buffer, int startIndex)复制URI的path部件到缓存区。- 参数:
escaped-如果escaped值为true,就复制已转义的path部件。
如果escaped值为false,就复制未转义的path部件。
buffer- 用于存放path部件的缓存区。如果在buffer数组上的可用空间长度小于URI的path部件,就抛出异常。startIndex- 在buffer参数存放path部件的开始位置。- 返回:
- 存放在buffer参数的path部件的长度。
-
getPath
byte[] getPath(boolean escaped)
返回URI的path部件。- 参数:
escaped-如果escaped值为true,就复制已转义的path部件。
如果escaped值为false,就复制未转义的path部件。
- 返回:
- URI的path部件。
-
setPath
boolean setPath(boolean escaped, byte[] buffer, int length)设置URI的path部件。- 参数:
escaped-如果escaped值为true,就检测存放在buffer参数的path部件是否遵循rfc3986的规定。 如果遵循了rfc3986的规定而且部件的长度可接受,就把存放在buffer参数的path部件复制成为URI的path部件,否则就清除URI的path部件。
如果escaped值为false,就把存放在buffer参数的path部件复制成为URI的path部件, 并在复制的过程中尝试对构成path部件的字符进行转义。在复制的过程中,如果发现要复制的path部件太长,就清除URI的path部件。
URI的path部件的允许最大长度由base.xml(在qhs安装目录内部的config子目录)的PathMaxLength元素说明。
buffer- 存放有path部件的缓存区。存放在缓存区的path部件必须是一个绝对路径。length- 存放在buffer参数的path部件的长度。- 返回:
- true值表示设置操作成功,false值表示设置操作失败。
-
setPath
boolean setPath(boolean escaped, byte[] buffer)设置URI的path部件。 调用本方法等于调用setPath(escaped, buffer, buffer.length);- 参数:
escaped- 略。buffer- 略。- 返回:
- 略。
-
clearPath
void clearPath()
清除URI的path部件。
-
getPathMaxLength
int getPathMaxLength()
返回URI的path部件的允许最大长度。- 返回:
- 未转义的(unescaped)path部件的允许最大长度。
-
pathEquals
boolean pathEquals(byte[] ba)
检测URI的path部件是否相等。 例如://以下rewrite()方法定义在URL重写器。 public RewriteResult rewrite(ThreadContext tc, URIParser uriParser) { uriParser.setPath(false, "/a一b二c".getBytes()); boolean res = false; res = uriParser.pathEquals("/a一b二c".getBytes()); //res值等于true。 res = uriParser.pathEquals("/a一b".getBytes()); //res值等于false。 return RewriteResult.RESOURCE_URL; }- 参数:
ba- 存放未转义(unescaped)字符的数组。- 返回:
- true值表示相等,false值表示不相等。
-
pathStartsWith
boolean pathStartsWith(byte[] ba)
检测URI的path部件的开始。 例如://以下rewrite()方法定义在URL重写器。 public RewriteResult rewrite(ThreadContext tc, URIParser uriParser) { uriParser.setPath(false, "/a一b二c".getBytes()); boolean res = false; res = uriParser.pathStartsWith("/a一b二c".getBytes()); //res值等于true。 res = uriParser.pathStartsWith("/a一b".getBytes()); //res值等于true。 res = uriParser.pathStartsWith("/".getBytes()); //res值等于true。 res = uriParser.pathStartsWith("/abc".getBytes()); //res值等于false。 return RewriteResult.RESOURCE_URL; }- 参数:
ba- 存放未转义(unescaped)字符的数组。- 返回:
- true值表示相等,false值表示不相等。
-
pathEndsWith
boolean pathEndsWith(byte[] ba)
检测URI的path部件的末端。 例如://以下rewrite()方法定义在URL重写器。 public RewriteResult rewrite(ThreadContext tc, URIParser uriParser) { uriParser.setPath(false, "/a一b二c".getBytes()); boolean res = false; res = uriParser.pathEndsWith("/a一b二c".getBytes()); //res值等于true。 res = uriParser.pathEndsWith("b二c".getBytes()); //res值等于true。 res = uriParser.pathEndsWith("c".getBytes()); //res值等于true。 res = uriParser.pathEndsWith("abc".getBytes()); //res值等于false。 res = uriParser.pathEndsWith("/a一b二cdef".getBytes()); //res值等于false。 return RewriteResult.RESOURCE_URL; }- 参数:
ba- 存放未转义(unescaped)字符的数组。- 返回:
- true值表示相等,false值表示不相等。
-
pathIndexOf
int pathIndexOf(int startIndex, byte[] ba)在URI的path部件上查找数据。 例如://以下rewrite()方法定义在URL重写器。 public RewriteResult rewrite(ThreadContext tc, URIParser uriParser) { uriParser.setPath(false, "/a一b二c三d四e五".getBytes()); int res = 0; res = uriParser.pathIndexOf(0, "/a一b二c".getBytes()); //res值等于0。 res = uriParser.pathIndexOf(0, "b二c三".getBytes()); //res值等于5。 res = uriParser.pathIndexOf(5, "b二c三".getBytes()); //res值等于5。 res = uriParser.pathIndexOf(6, "b二c三".getBytes()); //res值等于-1。 res = uriParser.pathIndexOf(7, "b二c三".getBytes()); //res值等于-1。 return RewriteResult.RESOURCE_URL; }- 参数:
startIndex- 在未转义的path部件上执行查找操作的开始位置。ba- 存放未转义(unescaped)字符的数组,即被查找的数据。- 返回:
- -1值表示找不到,而其它返回值(返回值等于大于0)等于被查找字符数组所在的位置。
-
pathReplace
int pathReplace(int startIndex, byte[] oldBytes, byte[] newBytes)尝试在URI的path部件上替换一次数据。 例如://以下rewrite()方法定义在URL重写器。 public RewriteResult rewrite(ThreadContext tc, URIParser uriParser) { final byte[] pathBa = "/a一b二c三a一b二c三".getBytes(); int res = 0; String str = null; uriParser.setPath(false, pathBa); res = uriParser.pathReplace(0, "b二c".getBytes(), "e四".getBytes()); str = new String(uriParser.getPath(false)); //res值等于5。 //str值等于"/a一e四三a一b二c三"。 uriParser.setPath(false, pathBa); res = uriParser.pathReplace(8, "b二c".getBytes(), "e四".getBytes()); str = new String(uriParser.getPath(false)); //res值等于17。 //str值等于"/a一b二c三a一e四三"。 uriParser.setPath(false, pathBa); res = uriParser.pathReplace(0, "/a一b二c三a一b二c三".getBytes(), "/".getBytes()); str = new String(uriParser.getPath(false)); //res值等于0。 //str值等于"/"。 uriParser.setPath(false, pathBa); res = uriParser.pathReplace(8, "/a一b".getBytes(), "e四".getBytes()); str = new String(uriParser.getPath(false)); //res值等于-1,如果执行了替换操作,导致path部件不能形成绝对路径。 //str值等于"/a一b二c三a一b二c三"。 return RewriteResult.RESOURCE_URL; }- 参数:
startIndex- 在未转义的path部件上执行查找操作的开始位置。oldBytes- 被替换的旧数据。newBytes- 用于替换旧数据的新数据。- 返回:
- -1值表示替换操作失败,而其它返回值(返回值等于大于0)等于替换了旧数据所在的位置。
-
pathAppend
boolean pathAppend(byte[] ba, int startIndex, int endIndex)对URI的path部件追加数据。 例如://以下rewrite()方法定义在URL重写器。 public RewriteResult rewrite(ThreadContext tc, URIParser uriParser) { boolean res = false; String str = null; byte[] ba = "/a一b二c三d四e五".getBytes();//1个汉字由3个UTF-8字节编码。 uriParser.clearPath(); res = uriParser.pathAppend(ba, 0, 5); str = new String(uriParser.getPath(false)); //res值等于true。 //str值等于"/a一"。 res = uriParser.pathAppend(ba, 13, 21); str = new String(uriParser.getPath(false)); //res值等于true。 //str值等于"/a一d四e五"。 uriParser.clearPath(); res = uriParser.pathAppend(ba, 13, 21); str = new String(uriParser.getPath(false)); //res值等于false,如果执行了追加数据,导致path部件不能形成绝对路径。 //str值等于""。 return RewriteResult.RESOURCE_URL; }- 参数:
ba- 存放未转义(unescaped)字符的数组。startIndex- 在ba数组上的追加数据的开始位置。endIndex- 在ba数组上的追加数据的结束位置。- 返回:
- true值表示追加操作是成功的,false值表示没有执行追加操作。
-
pathRemove
boolean pathRemove(int startIndex, int endIndex)在URI的path部件上删除数据。 例如://以下rewrite()方法定义在URL重写器。 public RewriteResult rewrite(ThreadContext tc, URIParser uriParser) { boolean res = false; String str = null; byte[] ba = "/a一b二c三d四e五".getBytes();//1个汉字由3个UTF-8字节编码。 uriParser.clearPath(); uriParser.setPath(false, ba); res = uriParser.pathRemove(9, ba.length); str = new String(uriParser.getPath(false)); //res值等于true。 //str值等于"/a一b二"。 uriParser.clearPath(); uriParser.setPath(false, ba); res = uriParser.pathRemove(0, 5); str = new String(uriParser.getPath(false)); //res值等于false,如果执行了删除操作,导致path部件不能形成绝对路径。 //str值等于"/a一b二c三d四e五"。 return RewriteResult.RESOURCE_URL; }- 参数:
startIndex- 在未转义的path部件上执行删除操作的开始位置。endIndex- 在未转义的path部件上执行删除操作的结束位置。- 返回:
- true值表示删除操作是成功的,false值表示没有执行删除操作。
-
pathInsert
boolean pathInsert(int startIndex, byte[] ba)在URI的path部件上插入数据。 例如://以下rewrite()方法定义在URL重写器。 public RewriteResult rewrite(ThreadContext tc, URIParser uriParser) { boolean res = false; String str = null; byte[] ba = "/a一b二c".getBytes();//1个汉字由3个UTF-8字节编码。 uriParser.clearPath(); uriParser.setPath(false, ba); res = uriParser.pathInsert(9, "三d四e五".getBytes()); str = new String(uriParser.getPath(false)); //res值等于true。 //str值等于"/a一b二三d四e五c"。 uriParser.clearPath(); uriParser.setPath(false, ba); res = uriParser.pathInsert(0, "三d四e五".getBytes()); str = new String(uriParser.getPath(false)); //res值等于false,如果执行了插入操作,导致path部件不能形成绝对路径。 //str值等于"/a一b二c"。 return RewriteResult.RESOURCE_URL; }- 参数:
startIndex- 在未转义的path部件上执行插入操作的开始位置。ba- 存放未转义(unescaped)字符的数组,即要插入的数据。- 返回:
- true值表示插入操作是成功的,false值表示没有执行插入操作。
-
getQueryLength
int getQueryLength(boolean escaped)
返回URI的query部件的长度。- 参数:
escaped-如果escaped值为true,就返回已转义的query部件的长度。
如果escaped值为false,就返回未转义的query部件的长度。
- 返回:
- URI的query部件的长度。
-
getQuery
int getQuery(boolean escaped, byte[] buffer, int startIndex)复制URI的query部件到缓存区。- 参数:
escaped-如果escaped值为true,就复制已转义的query部件。
如果escaped值为false,就复制未转义的query部件。
buffer- 用于存放query部件的缓存区。如果在buffer数组上的可用空间长度小于URI的query部件,就抛出异常。startIndex- 在buffer参数存放query部件的开始位置。- 返回:
- 存放在buffer参数的query部件的长度。
-
getQuery
byte[] getQuery(boolean escaped)
返回URI的query部件。- 参数:
escaped-如果escaped值为true,就返回已转义的query部件。
如果escaped值为false,就返回未转义的query部件。
- 返回:
- URI的query部件。
-
setQuery
boolean setQuery(boolean escaped, byte[] buffer, int length)设置URI的query部件。- 参数:
escaped-如果escaped值为true,就检测存放在buffer参数的query部件是否遵循rfc3986的规定。 如果遵循了rfc3986的规定而且部件的长度可接受,就把存放在buffer参数的query部件复制成为URI的query部件,否则就清除URI的query部件。
如果escaped值为false,就把存放在buffer参数的query部件复制成为URI的query部件, 并在复制的过程中尝试对构成query部件的字符进行转义。在复制的过程中,如果发现要复制的query部件太长,就清除URI的query部件。
URI的query部件的允许最大长度由base.xml(在qhs安装目录内部的config子目录)的QueryMaxLength元素说明。
buffer- 存放有query部件的缓存区。length- 存放在buffer参数的query部件的长度。- 返回:
- true值表示设置操作成功,false值表示设置操作失败。
-
setQuery
boolean setQuery(boolean escaped, byte[] buffer)设置URI的query部件。 调用本方法等于调用setQuery(escaped, buffer, buffer.length)。- 参数:
escaped- 略。buffer- 略。- 返回:
- 略。
-
clearQuery
void clearQuery()
清除URI的query部件。
-
getQueryMaxLength
int getQueryMaxLength()
返回URI的query部件的允许最大长度。- 返回:
- 已转义的(escaped)query部件的允许最大长度。
-
parseQuery
void parseQuery(UFormDataListener listener, char[] tempCharBuffer) throws java.lang.Exception
尝试分析属于application/x-www-form-urlencoded媒体类型的表单数据(form data)。本方法把URI的query部件当作为application/x-www-form-urlencoded媒体类型的表单数据, 并且创建、调用application/x-www-form-urlencoded媒体类型数据分析器对表单数据进行分析。
- 参数:
listener- 一个监听器,监听器用于接收来自数据分析器的事件。tempCharBuffer- 略。- 抛出:
java.lang.Exception- URI的query部件不符合application/x-www-form-urlencoded媒体类型数据格式。
-
getParsingResultString
java.lang.String getParsingResultString()
返回URI的分析结果。用户代码应在调用
parse(byte[] buffer, int startIndex, int endIndex)、parse(byte[] buffer)以后,再调用本方法。- 返回:
- 分析结果。
-
parse
boolean parse(byte[] buffer, int startIndex, int endIndex)分析一个URI。- 参数:
buffer- 存放有URI的缓存区。startIndex- 存放在buffer参数的URI的开始位置。endIndex- 存放在buffer参数的URI的结束位置。例如://以下rewrite()方法定义在URL重写器。 public RewriteResult rewrite(ThreadContext tc, URIParser uriParser) { boolean res = false; String str = null; String url = "http://www.temp-name.com/abc.html"; res = uriParser.parse(url.getBytes(), 0, url.length()); str = new String(uriParser.getURI()); //res值等于true。 //str值等于"http://www.temp-name.com/abc.html"。 res = uriParser.parse(("abcde" + url).getBytes(), 5, 5 + url.length()); str = new String(uriParser.getURI()); //res值等于true。 //str值等于"http://www.temp-name.com/abc.html"。 return RewriteResult.RESOURCE_URL; }- 返回:
- true值表示分析操作成功,false值表示分析操作失败。
-
parse
boolean parse(byte[] buffer)
分析一个URI。 调用本方法等于调用parse(buffer, 0, buffer.length)。- 参数:
buffer- 略。- 返回:
- 略。
-
getURILength
int getURILength()
返回已转义的URI的长度。- 返回:
- URI的长度。
-
getURI
byte[] getURI()
返回已转义的URI。- 返回:
- 一个URI。
-
getURI
int getURI(byte[] buffer)
复制已转义的URI到buffer参数。- 参数:
buffer- 用于存放URI的缓存区。如果在buffer参数上的空白空间不足以容纳整个URI,就抛出异常。- 返回:
- 存放在buffer参数的URI的长度。
-
-