程序包 sysobjs

类 urlPaths


  • public class urlPaths
    extends java.lang.Object

    qhs内置有一个全局的urlPaths系统对象。在qhs启动的过程中,urlPaths系统对象参考 urlPaths.xml配置文件而创建节点树结构、设置缺省页面文件名、设置答复头域、设置推送URL等等。 在qhs运行的过程中,qhs从urlPaths系统对象:

     (1)、获取缺省页面文件名用于补全URL路径。
     (2)、获取答复头域用于在http答复增加答复头域。
     (3)、获取推送URL用于推送资源。
     
    • 构造器概要

      构造器 
      构造器 说明
      urlPaths()  
    • 方法概要

      所有方法 实例方法 具体方法 
      修饰符和类型 方法 说明
      void delete​(java.lang.String urlPath)
      删除一个节点及其子树。
      void deleteAll()
      删除所有节点。
      java.lang.String getConfig​(java.lang.String urlPath)
      返回节点上的配置。
      java.lang.String getDefaultPage​(java.lang.String urlPath)
      返回在节点上设置的缺省页面文件名。
      java.lang.String getHeaders​(java.lang.String urlPath)
      返回在节点上设置的答复头域。
      java.lang.String getInheritedDefaultPage​(java.lang.String urlPath)
      返回在节点上设置的缺省页面文件名继承状态。
      java.lang.String getInheritedHeaders​(java.lang.String urlPath)
      返回在节点上设置的答复头域的继承状态。
      void setConfig​(java.lang.String urlPath, java.lang.String config)
      在节点上设置配置数据。
      void setDefaultPage​(java.lang.String urlPath, java.lang.String defaultPage)
      在节点上设置缺省页面文件名。
      void setHeaders​(java.lang.String urlPath, java.lang.String headers)
      在节点上设置答复头域。
      void setInheritedDefaultPage​(java.lang.String urlPath, boolean bool)
      在节点上设置缺省页面文件名的继承状态。
      void setInheritedHeaders​(java.lang.String urlPath, boolean bool)
      在节点上设置答复头域的继承状态。
      • 从类继承的方法 java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • 构造器详细资料

      • urlPaths

        public urlPaths()
    • 方法详细资料

      • getDefaultPage

        public java.lang.String getDefaultPage​(java.lang.String urlPath)
        返回在节点上设置的缺省页面文件名。
        参数:
        urlPath - 用于定位节点的URL路径。
        返回:
        如果urlPath参数值定位的节点存在并且节点上设置有缺省页面文件名,就返回缺省页面文件名。 如果urlPath参数值定位的节点存在但节点上未设置有缺省页面文件名,就返回null。 如果urlPath参数值不合格(如:/abc//ghi,URL路径包含空段),就返回null。 例如:
         //下面是定义在服务模块类内部的invoke()方法。
         public void invoke(qhs.interfaces.ThreadContext tc) throws Throwable {
            //以下代码演示调用urlPaths.getDefaultPage()、urlPaths.setDefaultPage(),这2个方法的返回值通过invoker.invoke()传递。
        
            final qhs.interfaces.SysObjInvoker invoker = tc.getServerStatus().getSysObjInvoker();
            final String obj = "urlPaths";
            String res = new String();
        
            //调用urlPaths.deleteAll()删除所有节点。
            invoker.invoke(-1L, obj, "deleteAll", "");
        
            //调用urlPaths.getDefaultPage()的urlPath参数值等于"/a/b/c"。
            res = invoker.invoke(-1L, obj, "getDefaultPage", "urlPath=\"/a/b/c\"");
            //res值等于null。
        
            //调用urlPaths.setDefaultPage()的urlPath参数值等于"/a/b/c",
            //调用urlPaths.setDefaultPage()的defaultPage参数等于"xyz.html"。
            res = invoker.invoke(-1L, obj, "setDefaultPage", "urlPath=\"/a/b/c\";defaultPage=\"xyz.html\"");
            //res值等于"true"。
        
            //调用urlPaths.getDefaultPage()的urlPath参数值等于"/a/b/c"。
            res = invoker.invoke(-1L, obj, "getDefaultPage", "urlPath=\"/a/b/c\"");
            //res值等于"xyz.html"。
        
            //调用urlPaths.setDefaultPage()的urlPath参数值等于"/a/b/c",
            //调用urlPaths.setDefaultPage()的defaultPage参数等于""。
            res = invoker.invoke(-1L, obj, "setDefaultPage", "urlPath=\"/a/b/c\";defaultPage=\"\"");
            //res值等于"true"。
        
            //调用urlPaths.getDefaultPage()的urlPath参数值等于"/a/b/c"。
            res = invoker.invoke(-1L, obj, "getDefaultPage", "urlPath=\"/a/b/c\"");
            //res值等于null。
         }
         
      • setDefaultPage

        public void setDefaultPage​(java.lang.String urlPath,
                                   java.lang.String defaultPage)
        在节点上设置缺省页面文件名。 如果urlPath参数值定位的节点不存在,本方法就以urlPath参数值上的所有路径段作为节点名称创建所有必要的节点并把新创建的节点连接成子树。 例子见getDefaultPage()的说明。
        参数:
        urlPath - 用于定位节点的URL路径。如果urlPath参数值不合格(如:/abc//ghi,URL路径包含空段),就抛出异常。
        defaultPage - 缺省页面文件名。如果本参数值为空串,就清除节点上的缺省页面文件名。如果参数值不合格,就抛出异常。
      • getHeaders

        public java.lang.String getHeaders​(java.lang.String urlPath)
        返回在节点上设置的答复头域。答复头域(response header)既可追加到http答复,也可追加到推送答复(pushed response)。
        参数:
        urlPath - 用于定位节点的URL路径。
        返回:
        如果urlPath参数值定位的节点存在并且节点上设置有头域,就返回一个键值(名称为result),键值的值是一个字符串数组, 数组的每一个元素是一个头域。 如果urlPath参数值定位的节点不存在,就返回null。如果urlPath参数值定位的节点未设置有头域,就返回null。 例如:
         //下面是定义在服务模块类内部的invoke()方法。
         public void invoke(qhs.interfaces.ThreadContext tc) throws Throwable {
            //以下代码演示调用urlPaths.setHeaders()、urlPaths.getHeaders(),这2个方法的返回值通过invoker.invoke()传递。
        
            final qhs.interfaces.SysObjInvoker invoker = tc.getServerStatus().getSysObjInvoker();
            final String obj = "urlPaths";
            String res = new String();
        
            //调用urlPaths.deleteAll()删除所有节点。
            invoker.invoke(-1L, obj, "deleteAll", "");
        
            //调用urlPaths.setHeaders()的urlPath参数值等于"/ghi/jkl.html"。
            //调用urlPaths.setHeaders()的headers参数值等于"[\"n1|v1\", \"n2|v2|true\", \"n3|v3|false\"]"。
            res = invoker.invoke(-1L, obj, "setHeaders",
                 "urlPath=\"/ghi/jkl.html\";headers=[\"n1|v1\", \"n2|v2|true\", \"n3|v3|false\"]");
            //res值等于"true"。
        
            //调用urlPaths.getHeaders()的urlPath参数值等于"/ghi/jkl.html"。
            res = invoker.invoke(-1L, obj, "getHeaders", "urlPath=\"/ghi/jkl.html\"");
            //res值等于"result=[\"n1|v1|true\", \"n2|v2|true\", \"n3|v3|false\"]",
            //qhs在发送文档根目录内部的/ghi/jkl.html文件的http答复上增加"n1:v1"、"n2:v2"、"n3:v3"头域,其中"n2:v2"头域
            //写入与http答复绑定的头域动态表,在下一次发送/ghi/jkl.html文件的http答复上只需简单地引用头域动态表中的"n2:v2"头域,
           //减少了http答复的尺寸、减少了网络传输数据。
            //用户开发的代码可以调用KeyValueParser.parse()来分析上面的result键值。
         }
        
         上面代码的注释中,有headers、result等2个字符串数组类型键值:
        
             headers=["n1|v1", "n2|v2|true", "n3|v3|false"]
             result=["n1|v1|true", "n2|v2|true", "n3|v3|false"]
        
         一个数组元素值通常被'|'字符分隔成3部分:
         第1部分:头域名称,相当于urlPaths.xml配置文件内部的Header元素的Name属性值。
         第2部分:头域值,相当于urlPaths.xml配置文件内部的Header元素的Value属性值。
         第3部分:决定是否把头域写入与http答复绑定的头域动态表,相当于urlPaths.xml配置文件内部的Header元素的WriteType属性值。
                如果缺少第3部分,则缺省值为"true"。
        
         例如:
             "n1|v1|false" -> "n1"为头域名称,"v1"为头域值,"false"表示不把"n1:v1"头域写入头域动态表。
             "n2|v2|true"  -> "n2"为头域名称,"v2"为头域值,"true"表示把"n2:v2"头域写入头域动态表。
         
      • setHeaders

        public void setHeaders​(java.lang.String urlPath,
                               java.lang.String headers)
        在节点上设置答复头域。 如果urlPath参数值定位的节点不存在,本方法就以urlPath参数值上的所有路径段作为节点名称创建所有必要的节点并把新创建的节点连接成子树。 例子见getHeaders()的说明。
        参数:
        urlPath - 用于定位节点的URL路径。如果本参数值不合格(如:/abc//ghi,URL路径包含空段),就抛出异常。
        headers - 本参数是一个字符串数组类型键值,键值的值是一个字符串数组,字符串数组的每一个元素是一个头域。 如果本参数值的元素个数为0,就清除节点上设置的答复头域。 如果本参数值的元素是不合格的头域,就抛出异常。
      • delete

        public void delete​(java.lang.String urlPath)
        删除一个节点及其子树。 如果urlPath参数值定位的节点存在,那么删除节点的同时又删除了设置在节点上的缺省页面文件名、头域等等。
        参数:
        urlPath - 用于定位节点的URL路径。 如果本参数值不合格(如:/abc//ghi,URL路径包含空段)或者urlPath参数值定位的节点不存在,就抛出异常。
      • deleteAll

        public void deleteAll()
        删除所有节点。 删除所有节点的同时又删除了设置在所有节点上的缺省页面文件名、头域等等。
      • getInheritedDefaultPage

        public java.lang.String getInheritedDefaultPage​(java.lang.String urlPath)
        返回在节点上设置的缺省页面文件名继承状态。 即urlPath参数值定位的节点(即子节点)是否从父节点继承缺省页面文件名。
        参数:
        urlPath - 用于定位节点的URL路径。
        返回:
        "true"表示子节点从父节点继承缺省页面文件名,"false"表示子节点不从父节点继承缺省页面文件名。
      • setInheritedDefaultPage

        public void setInheritedDefaultPage​(java.lang.String urlPath,
                                            boolean bool)
        在节点上设置缺省页面文件名的继承状态。 即对urlPath参数值定位的节点(即子节点)设置是否从父节点继承缺省页面文件名。 在默认的情况下,如果子节点未设置有缺省页面文件名,子节点就从父节点自动继承缺省页面文件名。 如果子节点被设置为不从父节点继承缺省页面文件名(即bool参数值等于"false"), 那么,子节点的缺省页面文件名等于base.xml配置文件内部的DefaultPage元素值。
        参数:
        urlPath - 用于定位节点的URL路径。
        bool - "true"表示子节点从父节点继承缺省页面文件名,"false"表示子节点不从父节点继承缺省页面文件名。
      • getInheritedHeaders

        public java.lang.String getInheritedHeaders​(java.lang.String urlPath)
        返回在节点上设置的答复头域的继承状态。 即urlPath参数值定位的节点(即子节点)是否从父节点继承答复头域。
        参数:
        urlPath - 用于定位节点的URL路径。
        返回:
        "true"表示子节点从父节点继承答复头域,"false"表示子节点不从父节点继承答复头域。
      • setInheritedHeaders

        public void setInheritedHeaders​(java.lang.String urlPath,
                                        boolean bool)
        在节点上设置答复头域的继承状态。 即对urlPath参数值定位的节点(即子节点)设置是否从父节点继承答复头域。 在默认的情况下,如果子节点未设置有答复头域,子节点就从父节点自动继承答复头域。
        参数:
        urlPath - 用于定位节点的URL路径。
        bool - "true"表示子节点从父节点继承答复头域,"false"表示子节点不从父节点继承答复头域。
      • getConfig

        public java.lang.String getConfig​(java.lang.String urlPath)
        返回节点上的配置。
        参数:
        urlPath - 用于定位节点的URL路径。
        返回:
        表达配置的XML数据。XML数据的格式见manual.pdf的"缺省页面文件名、定制头域、推送URL等配置"章节。例如:
         //下面是定义在服务模块类内部的invoke()方法。
         public void invoke(qhs.interfaces.ThreadContext tc) throws Throwable {
            //以下代码演示调用urlPaths.getConfig()、urlPaths.setConfig(),这2个方法的返回值通过invoker.invoke()传递。
        
            final qhs.interfaces.SysObjInvoker invoker = tc.getServerStatus().getSysObjInvoker();
            final String obj = "urlPaths";
            String res = new String();
            final qhs.sys.KeyValueFormater kvf = new qhs.sys.KeyValueFormater();
        
            //调用urlPaths.deleteAll()删除所有节点。
            invoker.invoke(-1L, obj, "deleteAll", "");
        
            //调用urlPaths.setConfig()的urlPath参数值等于"/a/b/c.html"。
            //调用urlPaths.setConfig()的config参数值属于XML数据。
            kvf.clear();
            kvf.add("urlPath", "/a/b/c.html");
            kvf.add("config", ""
                   + "<Config>\n"
                   + "   <Header Name=\"abc\" Value=\"def\" />"
                   + "   <Header Name=\"ghi\" Value=\"jkl\" />"
                   + "   <Push URL=\"/mno.html\" />"
                   + "   <Push URL=\"/pqr.jpg\" />"
                   + "</Config>");
            res = invoker.invoke(-1L, obj, "setConfig", kvf.toString());
            //res值等于"true"。
        
            //调用urlPaths.getConfig()的urlPath参数值等于"/"。
            res = invoker.invoke(-1L, obj, "getConfig", "urlPath=\"/\"");
            //res值等于:
            //"<Config>
            //    <a>
            //       <b>
            //          <c.html>
            //             <Header Name="abc" Value="def" />
            //             <Header Name="ghi" Value="jkl" />
            //             <Push URL="/mno.html" />
            //             <Push URL="/pqr.jpg" />
            //          </c.html>
            //       </b>
            //    </a>
            //</Config>"
        
            //调用urlPaths.getConfig()的urlPath参数值等于"/a"。
            res = invoker.invoke(-1L, obj, "getConfig", "urlPath=\"/a\"");
            //res值等于:
            //"<Config>
            //   <b>
            //      <c.html>
            //         <Header Name="abc" Value="def" />
            //         <Header Name="ghi" Value="jkl" />
            //         <Push URL="/mno.html" />
            //         <Push URL="/pqr.jpg" />
            //      </c.html>
            //   </b>
            //</Config>"
        
            //调用urlPaths.getConfig()的urlPath参数值等于"/a/b"。
            res = invoker.invoke(-1L, obj, "getConfig", "urlPath=\"/a/b\"");
            //res值等于:
            //"<Config>
            //   <c.html>
            //      <Header Name="abc" Value="def" />
            //      <Header Name="ghi" Value="jkl" />
            //      <Push URL="/mno.html" />
            //      <Push URL="/pqr.jpg" />
            //   </c.html>
            //</Config>"
        
            //调用urlPaths.getConfig()的urlPath参数值等于"/a/b/c.html"。
            res = invoker.invoke(-1L, obj, "getConfig", "urlPath=\"/a/b/c.html\"");
            //res值等于:
            //"<Config>
            //   <Header Name="abc" Value="def" />
            //   <Header Name="ghi" Value="jkl" />
            //   <Push URL="/mno.html" />
            //   <Push URL="/pqr.jpg" />
            //</Config>"
        
         }
         
      • setConfig

        public void setConfig​(java.lang.String urlPath,
                              java.lang.String config)
        在节点上设置配置数据。 如果urlPath参数值定位的节点不存在,本方法就以urlPath参数值上的所有路径段作为节点名称创建所有必要的节点并把新创建的节点连接成子树。 例子见getConfig()的说明。
        参数:
        urlPath - 用于定位节点的URL路径。如果urlPath参数值不合格(如:/abc//ghi,URL路径包含空段),就抛出异常。
        config - 表达配置的XML数据。XML数据的格式见manual.pdf的"缺省页面文件名、定制头域、推送URL等配置"章节。