程序包 qhs.interfaces

接口 URLRewriter


  • public interface URLRewriter
    URLRewriter用于实现URL重写器。
    • 方法详细资料

      • rewrite

        RewriteResult rewrite​(ThreadContext tc,
                              Connection conn,
                              URIParser uriParser)
                       throws java.lang.Throwable

        重写URL。

        重写URL(即更改存放在uriParser参数的URL)时,只需调用定义在uriParser参数上的各方法(如:uriParser.setPath()、 uriParser.setQuery()等等),最终重写后的URL仍然要缓存在uriParser参数。

        如果重写后的URL用于构建资源文件路径或者用于构建HTTP服务模块ID,qhs 为了提高URL的安全性,限制了构成URL路径的字符集。使用已转义(escaped)的URL路径作为参数调用 uriParser.setPath()时,已转义的URL路径应由以下字符构成:'/'、'a'至'z'、'A'至'Z'、'0'至'9'、'-'、'_' 、'.'、 空格的已转义形式、解码为汉字的utf-8字节组的已转义形式等等,否则,qhs发送表达错误的答复给客户 端。同样,使用未转义(unescaped)的URL路径作为参数调用uriParser.setPath()时,未转义的URL路径应 由以下字符构成:'/'、'a'至'z'、'A'至'Z'、'0'至'9'、'-'、'_' 、'.'、空格、解码为汉字的utf-8字节组等等,否 则,qhs发送表达错误的答复给客户端。

        参数:
        tc - 线程上下文。 跟据tc.isPushing()的返回值可以判断存放在uriParser参数的URL的来源:

        ①、tc.isPushing()的返回值等于false,表示存放在uriParser参数的URL来自浏览器发送给qhs的http请求 中的请求URI(Request-URI)。从rewrite()方法返回以后,存放在uriParser参数的URL用于生成http答复。

        ②、tc.isPushing()的返回值等于true,表示存放在uriParser参数的URL来自urlPaths.xml配置文件的 Push元素说明的推送URL或者来自调用tc.push()的url参数。从rewrite()方法返回以后,存放在 uriParser参数的URL用于生成推送答复。

        conn - http连接。
        uriParser - URI分析器。
        返回:
        返回值确定存放在uriParser参数上的URL的用途。
        抛出:
        java.lang.Throwable
      • update

        java.lang.String update​(java.lang.String str)
                         throws java.lang.Throwable
        update()实例方法用于更新URL重写器的内部状态。用户代码通过调用定义在sysThreadSpecificObjectPool 系统对象上的updateURLRewriter()方法来更新URL重写器的内部状态,updateURLRewriter()方法 直接调用此处说明的update()方法。
        参数:
        str - 任意字符串。
        返回:
        返回值可任意。本方法的返回值通过sysThreadSpecificObjectPool.updateURLRewriter()传递给用户代码。
        抛出:
        java.lang.Throwable