CN201310657132.7
2013.12.06
CN104699706A
2015.06.10
实审
审中
实质审查的生效IPC(主分类):G06F 17/30申请日:20131206|||公开
G06F17/30
中国移动通信集团海南有限公司
王保强
570125海南省海口市金龙路88号中国移动通信集团海南有限公司
北京派特恩知识产权代理有限公司11270
张颖玲; 张振伟
目录树的生成方法、装置及系统。本发明公开了一种目录树的生成方法,web服务端接收目录树结构的数据集合,根据所述数据集合生成数组对象,按照键值对所述数组对象中的每条记录进行解析,根据解析出的节点信息生成可直接展现的目录树信息;客户端接收可直接展现的目录树信息,根据所述目录树信息生成和展现目录树,并响应鼠标事件与所述目录树的交互。
权利要求书1. 一种目录树的生成方法,其特征在于,该方法包括: web服务端接收目录结构的数据集合,根据所述数据集合生成数组对象, 按照键值对所述数组对象中的每条记录进行解析,根据解析出的节点信息生成 可直接展现的目录树信息,并发送所述目录树信息。 2. 根据权利要求1所述的生成方法,其特征在于,所述web服务端接收 目录结构的数据集合为:所述web服务端接收数据库端发送的所述数据集合; 其中, 所述数据集合为:所述数据库端根据所述web服务端的请求,对数据库端 中目录树的结构化查询语言(SQL)语句进行解析,根据解析出的节点信息生 成的所述数据集合。 3. 根据权利要求1所述的生成方法,其特征在于,所述根据所述数据集合 生成数组对象为:根据所述数据集合中每条记录的节点信息生成数组对象。 4. 根据权利要求1所述的生成方法,其特征在于,所述按照键值对所述数 组对象的每条记录进行解析为:按照键值对所述数组对象中每条记录的表示节 点信息的字段进行解析,或者按照键值对所述数组对象中每条记录的表示节点 信息和节点附加属性信息的字段进行解析;其中, 所述键值为:所述数组对象中每条记录的节点编码。 5. 根据权利要求1所述的生成方法,其特征在于,所述根据解析出的节点 信息生成可直接展现的目录树信息为:根据解析出的节点编码、父节点编码、 节点名称、节点层级、是否叶子/目录节点信息生成可供客户端直接展现的目录 树信息。 6. 一种目录树的生成方法,其特征在于,该方法包括: 客户端接收可直接展现的目录树信息,根据所述目录树信息生成和展现目 录树,并响应鼠标事件与所述目录树的交互。 7. 根据权利要求6所述的生成方法,其特征在于,所述客户端接收可供客 户端直接展现的目录树信息为:所述客户端接收web服务端发送的可供客户端 直接展现的目录树信息。 8. 根据权利要求6所述的生成方法,其特征在于,所述可直接展现的目录 树信息包括:所述节点信息的超文本标记语言(HTML)标签信息和JavaScript 脚本信息。 9. 根据权利要求8所述的生成方法,其特征在于,所述根据所述目录树信 息生成目录树为:所述客户端根据内嵌的级联样式表(CSS)代码或CSS文件 对所述可直接展现的目录树信息中节点信息的HTML标签信息和JavaScript脚 本信息进行渲染,生成目录树。 10. 根据权利要求6所述的方法,其特征在于,所述响应鼠标事件与所述 目录树的交互为:所述客户端利用JavaScript代码和JavaScript文件确定鼠标事 件,响应所述鼠标事件对应的目录树展现方式。 11. 一种目录树的生成方法,其特征在于,该方法包括: web服务端接收数据库端发送的目录结构的数据集合,根据所述数据集合 生成数组对象,按照键值对所述数组对象中的每条记录进行解析,根据解析出 的节点信息生成可直接展现的目录树信息,并发送所述目录树信息; 客户端接收可供客户端直接展现的目录树信息,根据所述目录树信息生成 和展现目录树,并响应鼠标事件与所述目录树的交互。 12. 一种目录树的生成装置,其特征在于,该装置包括:第一接收模块、 第一生成模块、第一解析模块、第二生成模块和第一发送模块;其中, 第一接收模块,用于接收目录结构的数据集合; 第一生成模块,用于将接收到的所述数据集合生成数组对象; 第一解析模块,用于解析所述数组对象中的每条记录; 第二生成模块,用于根据解析出的节点信息生成可直接展现的目录树信息; 第一发送模块,用于发送可直接展现的目录树信息。 13. 根据权利要求12所述的生成装置,其特征在于,所述第一生成模块, 具体用于根据所述数据集合中的节点信息生成数组对象。 14. 根据权利要求12所述的生成装置,其特征在于,所述第一解析模块, 具体用于按照键值对所述数组对象中每条记录的表示节点信息的字段进行解 析,或者按照键值对数组对象中的每条记录的表示节点信息和节点附加属性信 息的字段进行解析;其中, 所述键值为所述数组对象中每条记录的节点编码。 15. 根据权利要求12所述的生成装置,其特征在于,所述第二生成模块包 括:数组遍历模块和代码生成模块;其中, 所述数组遍历模块,用于循环遍历数组对象中的每条记录,获取完整的节 点信息; 所述代码生成模块,用于根据节点信息构造可供客户端直接展现的目录树 信息。 16. 一种目录树的生成装置,其特征在于,该装置包括:第二接收模块、 渲染模块和交互模块;其中, 第二接收模块,用于接收可直接展现的目录树信息; 渲染模块,用于根据所述目录树信息生成和展现目录树; 交互模块,用于响应鼠标事件与所述目录树的交互。 17. 根据权利要求16所述的装置,其特征在于,所述渲染模块,具体用于 根据客户端内嵌的CSS代码或CSS文件对所述可直接展现的目录树信息中的节 点信息的HTML标签信息和JavaScript脚本信息进行渲染,生成和展现目录树。 18. 根据权利要求16所述的装置,其特征在于,所述交互模块,具体用于 利用JavaScript代码和JavaScript文件确定鼠标事件,响应所述鼠标事件对应的 目录树展现方式。 19. 一种目录树的生成系统,其特征在于,该系统包括:数据库端、web 服务端、客户端;其中, 数据库端,用于生成目录结构的数据集合,并向web服务端一次性发送所 述数据集合; web服务端,用于接收所述数据库端发送的目录结构的数据集合,根据所 述数据集合生成数组对象,对所述数组对象中的每条记录进行解析,根据解析 出的节点信息生成可直接展现的目录树信息,并发送所述目录树信息; 客户端,用于接收所述web服务端发送的可直接展现的目录树信息,根据 所述目录树信息生成和展现目录树,并响应鼠标事件与所述目录树的交互。
说明书目录树的生成方法、装置及系统 技术领域 本发明涉及互联网目录树技术,尤其涉及一种目录树的生成方法、装置及 系统。 背景技术 随着互联网的迅速发展,客户端/服务器(C/S,Client/Server)结构不断向 浏览器/服务器(B/S,Browser/Server)结构演进,典型的目录应用需求和复杂 的目录业务逻辑也需要被引入到B/S下,当目录应用需求和目录业务逻辑的数 据量较大的时候,如果频繁的在数据库端、web服务端和客户端之间进行数据 切换、以及客户端使用解释处理的方式对目录应用需求和目录业务逻辑的数据 进行解析,则会导致目录树在B/S端上生成的低效;并且当客户端使用糟糕的 访问方法对目录树进行访问时,目录树的展现和选择远远达不到用户的期望。 发明内容 为解决现有技术中存在的问题,在本发明的实施例中提供一种目录树的生 成方法、装置及系统,能够快速实现目录树的生成和展现,并且高效的对目录 树进行交互。 本发明的技术方案是这样实现的: 本发明提供了一种目录树的生成方法,该方法包括: web服务端接收目录结构的数据集合,根据所述数据集合生成数组对象, 按照键值对所述数组对象中的每条记录进行解析,根据解析出的节点信息生成 可直接展现的目录树信息,并发送所述目录树信息。 上述方案中,所述web服务端接收目录结构的数据集合为:所述web服务 端接收数据库端发送的所述数据集合;其中, 所述数据集合为:所述数据库端根据所述web服务端的请求,对数据库端 中目录树的SQL语句进行解析,根据解析出的节点信息生成的所述数据集合。 上述方案中,所述根据所述数据集合生成数组对象为:根据所述数据集合 中每条记录的节点信息生成数组对象。 上述方案中,所述按照键值对所述数组对象的每条记录进行解析为:按照 键值对所述数组对象中每条记录的表示节点信息的字段进行解析,或者按照键 值对所述数组对象中每条记录的表示节点信息和节点附加属性信息的字段进行 解析;其中, 所述键值为:所述数组对象中每条记录的节点编码。 上述方案中,所述根据解析出的节点信息生成可直接展现的目录树信息为: 根据解析出的节点编码、父节点编码、节点名称、节点层级、是否叶子/目录节 点信息生成可供客户端直接展现的目录树信息。 本发明提供了一种目录树的生成方法,该方法包括: 客户端接收可直接展现的目录树信息,根据所述目录树信息生成和展现目 录树,并响应鼠标事件与所述目录树的交互。 上述方案中,所述客户端接收可供客户端直接展现的目录树信息为:所述 客户端接收web服务端发送的可供客户端直接展现的目录树信息。 上述方案中,所述可直接展现的目录树信息包括:所述节点信息的HTML 标签信息和JavaScript脚本信息。 上述方案中,所述根据所述目录树信息生成目录树为:所述客户端根据内 嵌的CSS代码或CSS文件对所述可直接展现的目录树信息中节点信息的HTML 标签信息和JavaScript脚本信息进行渲染,生成目录树。 上述方案中,所述响应鼠标事件与所述目录树的交互为:所述客户端利用 JavaScript代码和JavaScript文件确定鼠标事件,响应所述鼠标事件对应的目录 树展现方式。 本发明提供了一种目录树的生成方法,该方法包括: web服务端接收数据库端发送的目录结构的数据集合,根据所述数据集合 生成数组对象,按照键值对所述数组对象中的每条记录进行解析,根据解析出 的节点信息生成可直接展现的目录树信息,并发送所述目录树信息; 客户端接收可供客户端直接展现的目录树信息,根据所述目录树信息生成 和展现目录树,并响应鼠标事件与所述目录树的交互。 本发明还提供了一种目录树的生成装置,该装置包括:第一接收模块、第 一生成模块、第一解析模块、第二生成模块和第一发送模块;其中, 第一接收模块,用于接收目录结构的数据集合; 第一生成模块,用于将接收到的所述数据集合生成数组对象; 第一解析模块,用于解析所述数组对象中的每条记录; 第二生成模块,用于根据解析出的节点信息生成可直接展现的目录树信息; 第一发送模块,用于发送可直接展现的目录树信息。 上述方案中,所述第一生成模块,具体用于根据所述数据集合中的节点信 息生成数组对象。 上述方案中,所述第一解析模块,具体用于按照键值对所述数组对象中每 条记录的表示节点信息的字段进行解析,或者按照键值对数组对象中的每条记 录的表示节点信息和节点附加属性信息的字段进行解析;其中, 所述键值为所述数组对象中每条记录的节点编码。 上述方案中,所述第二生成模块包括:数组遍历模块和代码生成模块;其 中, 所述数组遍历模块,用于循环遍历数组对象中的每条记录,获取完整的节 点信息; 所述代码生成模块,用于根据节点信息构造可供客户端直接展现的目录树 信息。 本发明提供了一种目录树的生成装置,该装置包括:第二接收模块、渲染 模块和交互模块;其中, 第二接收模块,用于接收可直接展现的目录树信息; 渲染模块,用于根据所述目录树信息生成和展现目录树; 交互模块,用于响应鼠标事件与所述目录树的交互。 上述方案中,所述渲染模块,具体用于根据客户端内嵌的CSS代码或CSS 文件对所述可直接展现的目录树信息中的节点信息的HTML标签信息和 JavaScript脚本信息进行渲染,生成和展现目录树。 上述方案中,所述交互模块,具体用于利用JavaScript代码和JavaScript文 件确定鼠标事件,响应所述鼠标事件对应的目录树展现方式。 本发明还提供了一种目录树的生成系统,该系统包括:数据库端、web服 务端、客户端;其中, 数据库端,用于生成目录结构的数据集合,并向web服务端一次性发送所 述数据集合; web服务端,用于接收所述数据库端发送的目录结构的数据集合,根据所 述数据集合生成数组对象,对所述数组对象中的每条记录进行解析,根据解析 出的节点信息生成可直接展现的目录树信息,并发送所述目录树信息; 客户端,用于接收所述web服务端发送的可直接展现的目录树信息,根据 所述目录树信息生成和展现目录树,并响应鼠标事件与所述目录树的交互。 本发明实施例提供一种目录树的生成方法、装置及系统,web服务端接收 目录结构的数据集合,根据所述数据集合生成数组对象,按照键值对所述数组 对象中的每条记录进行解析,根据解析出的节点信息生成可直接展现的目录树 信息,并发送所述目录树信息;客户端接收可直接展现的目录树信息,根据所 述目录树信息生成和展现目录树,并响应鼠标事件与所述目录树的交互;如此, 在数据量较大时,有效的减少了客户端和web服务端、数据库端的交互频率, 快速生成目录树;减少了对客户端资源的占用,确保以一种高效、快速的方式 进行交互,降低了用户的等待时间,有效的提升了用户的感知程度。 附图说明 图1为本发明实施例一提供的一种目录树的生成方法的流程示意图; 图2为本发明实施例二提供的一种目录树的生成方法的流程示意图; 图3为本发明实施例三提供的一种目录树的生成方法的流程示意图; 图4为本发明提供的web服务端的结构示意图; 图5为本发明提供的客户端的结构示意图; 图6为本发明提供的目录树的生成系统的组成结构示意图。 具体实施方式 为了更好地理解本发明,本文先介绍几种目录树的生成方法,目前在B/S 下主要有以下3种方法实现目录树的生成: 第一种方法,即在数据库端、web服务端、客户端之间频繁的进行数据的 请求和响应;即客户端选择目录节点并发起请求,通过web服务端提交给数据 库端进行数据请求,数据库端将目录节点的子节点数据集合提交给web服务端, 由web服务端把解析后的数据集合提交给客户端,再由客户端进行相应的节点 展现和处理。 第二种方法,由数据库端把目录树数据集合一次性提交给web服务端,然 后web服务端进行解析和简单处理后输出给客户端,再由客户端一次性解析所 有目录树数据集合,通过递归或循环方式生成目录树结构,并由客户端通过CSS 代码进行渲染和展现。 第三种方法,在对目录树节点的选择上,通常的做法是通过循环的方式在 所有节点中进行相关子节点集合的遍历,或者在遍历的过程中还要进行未展开 节点的处理。 但是,以上3种方法都存在不同的缺陷,在第一种方法中,在数据库端、 web服务端、客户端之间频繁的进行数据的请求和响应;但每次点击都会进行 一个回环过程,频繁的数据交互则会降低整个系统的响应速度。 在第二种方法中,是由客户端进行目录树的解析和渲染,但客户端是基于 代码解释的处理方式,效率较低,并且占用了很大的客户资源,尤其当数据量 较大时,会导致处理和响应周期很长,并造成客户端假死状态。 在第三种方法中,对目录树的选择处理方法,需要在大数据量之间进行过 滤或在数据库端、web服务端、客户端之间进行频繁交互,这两种方式在进行 节点选择处理时均无法达到理想的速度。 在本发明的实施例中,web服务端接收目录结构的数据集合,根据所述数 据集合生成数组对象,按照键值对所述数组对象中的每条记录进行解析,根据 解析出的节点信息生成可直接展现的目录树信息;客户端接收可直接展现的目 录树信息,根据所述目录树信息生成和展现目录树,并响应鼠标事件与所述目 录树的交互。 下面结合附图及具体实施例对本发明的技术方案做进一步的详细说明。 实施例一 本发明实现的一种目录树的生成方法,如图1所示,该方法主要包括以下 几个步骤: 步骤101,web服务端接收数据集合; 具体地,web服务端接收数据库端发送的目录结构的数据集合;其中,所 述数据集合为:所述数据库端根据所述web服务端发送的请求,对数据库端中 目录树的SQL语句进行解析,将解析出的节点信息按照约定的格式和规范生成 所述数据集合。其中,所述解析出的节点信息包括节点编码、父节点编码、节 点名称、节点层级、是否叶子/目录节点等信息;所述约定的格式和规范为:以 目录树结构的节点编码、父节点编码、节点名称、节点层级、是否叶子/目录节 点等信息为关键字进行生成。 步骤102,web服务端根据所述数据集合生成数组对象; 具体的,为了便于解析和处理,Java把所述数据集合按照约定的格式和规 范转化为数组对象,其中数组对象的每条记录中包含节点信息和节点附加属性 信息。 步骤103,web服务端解析数组对象中的每条记录; 具体的,web服务端对数组对象中的所有记录进行循环遍历,按照键值对 数组对象中每条记录的表示节点信息的字段进行解析;其中,所述键值为:所 述数组对象中每条记录的节点编码;所述解析出的节点信息包括节点编码、父 节点编码、节点名称、节点层级、是否叶子/目录节点等信息; 本步骤中,所述web服务端还按照键值对数组对象中每条记录的表示节点 附加属性信息的字段进行解析。 步骤104,web服务端根据解析出的节点信息生成可直接展现的目录树信 息; 具体的,web服务端循环遍历数组对象中的所有记录后,获取完整的节点 信息;根据节点信息中的节点编码、父节点编码、节点名称、节点层级、是否 叶子/目录节点信息生成可供客户端直接展现的目录树信息;其中,所述可直接 展现的目录树信息包括:所述节点信息的超文本标记语言(HTML,Hyper Text Mark-up Language)标签信息和JavaScript脚本信息; 这里,所述web服务端还可以获取完整的节点附加属性信息,根据节点信 息和节点附加属性信息构造可供客户端直接展现的目录树信息;此时,所述可 直接展现的目录树信息包括:所述节点信息的HTML标签信息和JavaScript脚 本信息、所述节点附加属性信息的HTML标签信息和JavaScript脚本信息。 所述循环遍历数组对象的实现逻辑可参见以下方式: 数组循环--循环遍历目录树数组对象: 如果是根节点,则输出<checkbox><div><dl>标签,之后输出目录节点的展 开图标,同时输出onMouseDown()方法,再后输出checkNode(obj), checkRootRecurve(dl)方法; 如果是非叶子节点,且当前层级大于上一个节点的层级,则输出 <checkbox><div><dl>标签,之后输出目录节点的展开图标,同时输出 onMouseDown()方法,再后输出checkNode(obj),checkRootRecurve(dl)方法; 如果是非叶子节点,且当前层次小于上一个节点的层级,则根据层级的差 额输出若干</div>,之后输出<checkbox><div><dl>标签,输出目录节点的展开 图标,同时输出onMouseDown()方法,再后输出checkNode(obj), checkRootRecurve(dl)方法; 如果是叶子节点,且当前层次大于上一个节点的层级,则输出<checkbox> <dl>标签,之后输出目录节点的收缩图标,同时输出onMouseDown()方法,再 后输出checkRootRecurve(dl)方法; 如果是叶子节点,且当前层次小于上一个节点的层级,则根据层级的差额 输出若干</div>,之后输出<checkbox><dl>标签,输出目录节点的收缩图标, 再后同时输出onMouseDown()方法;最后输出checkRootRecurve(dl)方法。 步骤105,web服务端发送目录树信息; 具体的,web服务端将所述可供客户端直接展现的目录树信息发送至客户 端。 在本实施例中,当目录树结构的数据量较大时,由web服务端进行目录树 结构的解析,循环并线性处理整个目录树的结构,生成可供客户端直接展现的 目录树信息,客户端无需与web服务端和数据库端进行频繁的交互,减小了客 户端的响应时间和系统的交互访问时间;同时,通过数据库端输出目录树结构 的数据集合,从而减少web服务端的处理逻辑,减轻web服务端的运算压力, 更加高效和简洁结构化处理目录结构的数据集合。 实施例二 相应与实施例一,本发明还提供一种目录树的生成方法,如图2所示,该 方法主要包括以下几个步骤: 步骤201,客户端接收可直接展现的目录树信息; 具体的,客户端接收web服务端发送的可供客户端直接展现的目录树信息。 步骤202,客户端根据所述目录树信息生成和展现目录树; 具体的,客户端通过内嵌的级联式样表(CSS,Cascading Style Sheets)代 码或CSS文件对目录树信息中节点信息的HTML标签信息和JavaScript脚本信 息进行渲染,对目录树进行美化,最终形成可供用户浏览和选择的目录树页面。 所述CSS代码是将网页表现与内容分离的一种样式设计语言;所述节点信息包 括:节点编码、父节点编码、节点名称、节点层级、是否叶子/目录节点信息。 本步骤中,当目录树信息中还包括节点附加属性信息时,所述客户端根据 内嵌的CSS代码或CSS文件对节点信息的HTML标签信息和JavaScript脚本信 息进行渲染,以及对节点附加属性信息的HTML标签信息和JavaScript脚本信 息进行渲染,对目录树进行美化,最终形成可供用户浏览和选择的目录树页面。 步骤203,客户端响应鼠标事件与目录树进行交互; 具体的,客户端利用JavaScript代码和JavaScript文件确定鼠标事件,以进 行不同的响应处理,实现目录树的交互功能。 所述JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚 本语言,同时也是一种广泛用于客户端Web开发的脚本语言,用于HTML网 页添加动态功能,比如响应用户的各种操作。 具体的,所述客户端接收与目录树进行交互的鼠标事件并确定所述鼠标事 件,响应所述鼠标事件对应的目录树展现方式。 一般来说,在客户端中,与目录树进行交互的鼠标事件主要有两种,一种 是图标事件,所述图标事件用于对目录树的目录层次进行打开或收缩操作,另 一种是复选框事件,所述复选框事件用于对目录树的复选框进行选中/取消操 作。 当确定鼠标事件为图标事件时,对目录层次进行操作;如果目录层次当前 状态是展开,则对目录层次进行收缩,如果目录层次当前状态是收缩,则对目 录层次进行展开;对目录层次进行操作的实现逻辑如下: 捕捉鼠标事件对应的对象,如果对象为展开/收缩图标;判断是否存在子节 点,如果存在子节点,获取所有子节点的索引值;如果当前节点的状态为展开 状态,则置为收缩状态;如果当前节点的状态为收缩状态,则置为展开状态。 当确定鼠标事件为复选框事件时,对目录树的复选框进行选中/取消操作; 进一步的,当确定鼠标事件为复选框事件时,还需要进一步判断复选框事 件对应的目录树的节点是否为目录节点; 具体的,当确定节点为目录节点时,则调用处理上下级节点的方法,递归 选中该节点的所有下级节点,同时选中该节点的所有直系上级节点;同时打开 下级目录;对目录节点进行操作的实现逻辑可参考以下方式: 如果节点标签=’DD’,则返回; 获取当前节点的所有子节点; 开始循环; 重置节点的复选标志; 递归调用(); 结束循环; 进一步的,当确定节点为叶子节点时,则调用处理上级节点的方法,递归 选中该叶子节点的直接祖先节点,并选中该叶子节点的所有直系上级节点;对 叶子节点进行操作的实现逻辑可参考以下方式: 如果当前节点是DL; 则表示叶子节点,重置叶子节点的复选标志,并且返回; 获取当前节点的所有叶子节点; 重置当前节点的所有叶子节点复选标志; 开始循环; 递归调用(); 结束循环; 本实施例中,由于在web服务端生成可供客户端直接展现的目录树信息, 客户端仅需要对web服务端的输出的目录树进行CSS渲染即可,从而直接生成 美观和满足业务需求的目录树,既实现了CSS代码和业务代码的剥离,又减小 了客户端的响应时间;同时该交互方法无需与web服务端进行频繁的交互,所 有的交互均在客户端上发生,通过客户端的代码和文件的方法实现与目录树的 高效交互。 实施例三 相应于实施例一、二,本发明还提供一种目录树的生成方法,如图3所示, 该方法主要包括以下几个步骤: 步骤301,数据库端生成目录结构的数据集合; 具体的,数据库端接收经客户端发起的web服务端的SQL语句请求,所述 请求是用于获取整个目录树结构的SQL语句;其中,所述数据库可以为SQL 关系型数据库或非关系型数据库(NoSQL,Not only SQL);在此,预设一个请 求时间,当在预设的请求时间内,数据库端响应请求,为请求成功;当超出预 设的请求时间时,web服务端需重新发送请求。 数据库端响应请求后,对所述数据库的访问进行鉴权。进一步的,预设一 个鉴权时间,当在预设的鉴权时间内通过鉴权时,基于代价的优化方式(CBO, Coast Based Optimization)按照数据库对SQL语句执行计划生成和优化的逻辑 规则生成最优执行计划。其中,所述逻辑规则为:所述CBO以评估表的大小、 索引列、倾斜度、聚集因子、表的关联情况等信息为标识进行优化;所述最优 执行计划为:数据库通过CBO综合评估后得到的最佳SQL语句执行策略;其 中,生成最优执行计划是为了能够高效的获取目录树结构。 通过鉴权后,数据库端根据SQL语句请求按照最优执行计划识别并获取目 录树的根节点;具体的,数据库端循环遍历并解析根节点下的直接子节点,对 数据库的SQL语句进行语法解析,获取目录结构中所有节点的节点编码、父节 点编码、节点名称、节点层级、是否叶子/目录节点等属性,根据父节点和子节 点的对应关系进行递归查找更下级的节点,以此类推直至获取到整个目录结构。 不同的数据库有其独特的实现方式,而通过递归CTE方法可以实现在不同数据 库下的一致实现方式; 其中,所述获取目录结构的实现逻辑可参考以下实现方式: WITH parentemp(employee_id,employee_name,manager_id,LVL,IfLeaf)AS ( //获取根节点的节点编码、节点名称、上级编码、层级、是否叶子节 SELECT employee_id,employee_name,manager_id,0LVL, (SELECT COUNT(*)FROM employee c WHERE c.manager_id=a.employee_id) If Leaf; FROM employee a; WHERE employee_id=100;//从根节点开始遍历,此处员工号为100 UNION ALL; //获取子节点的节点编码、节点名称、上级编码、层级、是否叶子节点 //通过作为递归循环的下一层子节点继续进行遍历 SELECT a.employee_id,a.employee_name,a.manager_id,b.LVL+1, (SELECT COUNT(*)FROM employee c WHERE c.manager_id=a.employee_id) IfLeaf FROM employee a,parentemp b; WHERE a.manager_id=b.employee_id); //把上一构造的节点编码作为本次构造的父节点继续遍历 //进行SQL语句测试 SELECT employee_id,employee_name,manager_id,LVL, CASE WHEN If Leaf=0THEN1ELSE0END IfLeaf; FROM parentemp; 进一步的,数据库端按照约定的格式和规范将解析出的节点信息生成目录 结构的数据集合;所述解析出的节点信息包括节点编码、父节点编码、节点名 称、节点层级、是否叶子/目录节点信息;所述约定的格式和规范为:以目录树 结构的节点编码、父节点编码、节点名称、节点层级、是否叶子/目录节点等信 息为关键字进行生成。 进一步的,所述数据库端将所述数据集合一次性打包,以结果集(ResultSet) 的形式发送至所述web服务端。 步骤302,web服务端根据所述数据集合生成可供客户端直接展现的目录 树信息; 具体的,所述web服务端接收所述数据库端发送的所述数据集合,为了方 便解析和处理,Java把所述数据集合转化为数组对象,所述web服务端对数组 对象中的所有记录进行循环遍历,按照键值对数组对象中的每条记录进行解析, 根据解析出的节点信息还原目录树的节点层级;其中,所述键值为所述数组对 象中每条记录的节点编码。 在web服务端对数组对象中的每条记录进行循环遍历和解析时,根据解析 出的节点编码、父节点编码、节点名称、节点层级、是否叶子/目录节点信息, 生成可供客户端直接展现的目录树信息;当循环遍历全部完成之后,才能形成 完整的节点信息,进而才能得到完整的目录树信息,所述web服务端将所述目 录树信息发送至所述客户端。 步骤303,客户端根据所述目录树信息生成目录树。 具体为,客户端接收web服务端发送的可供客户端直接展现的目录树信息, 根据内嵌的CSS代码或CSS文件对所述目录树信息中节点信息的HTML标签 信息和JavaScript脚本信息进行渲染,对目录树进行美化和展现,形成最终可 供用户浏览和选择的目录树页面。其中,所述CSS代码是将网页表现与内容分 离的一种样式设计语言。 本步骤中,当目录树信息中还包括节点附加属性信息时,所述客户端根据 内嵌的CSS代码或CSS文件对所述节点信息的HTML标签信息和JavaScript 脚本信息进行渲染;以及对节点附加属性信息的HTML标签信息和JavaScript 脚本信息进行渲染。 步骤304,客户端响应鼠标事件与目录树进行交互; 具体的,客户端利用JavaScript代码和文件确定鼠标事件,进行不同的响 应处理,以便实现用户与目录树的高效交互功能。 实施例四 为了实现上述方法,本发明还提供一种目录树的生成装置,如图4所示, 该装置包括:第一接收模块41、第一生成模块42、第一解析模块43、第二生 成模块44、第一发送模块45; 所述第一接收模块41,位于Web服务端的接收器中,用于接收目录树结构 的数据集合; 所述第一生成模块42,位于Web服务端中,用于将接收到的所述数据集合 生成数组对象;具体的,为了便于解析和处理,Java把所述数据集合按照约定 的格式和规范转化为数组对象,其中数组对象的每条记录则包含节点信息和节 点附加属性信息。所述约定的格式和规范为以目录树结构的节点编码、父节点 编码、节点名称、节点层级、是否叶子/目录节点等信息为关键字进行转化; 所述第一解析模块43,位于web服务端的解析器中,用于解析所述数组对 象中的每条记录,解析出节点信息;具体的,web服务端按照键值对所述数组 对象中每条记录的表示节点信息的字段进行解析; 所述第一解析模块43还可以对数组对象中的每条记录的表示节点附加属 性信息的字段进行解析; 进一步的,web服务端对数组对象中每条记录进行循环遍历,按照键值对 数组对象中的每条记录进行解析;其中,所述键值为每条记录的节点编码; 所述解析出的节点信息包括节点编码、父节点编码、节点名称、节点层级、 是否叶子/目录节点等信息。 所述第二生成模块44,位于web服务端中,用于将解析出的节点信息生成 可直接展现的目录树信息;所述第二生成模块44进一步包括:数组遍历模块 441和代码生成模块442; 其中,所述数组遍历模块441用于循环遍历数组对象中的每条记录,获取 完整的节点信息;所述代码生成模块442根据节点信息构造可供客户端直接展 现的目录树信息;其中,所述可供客户端直接展现的目录树信息包括:所述节 点信息的HTML标签信息和JavaScript脚本信息; 这里,所述数组遍历模块441还用于获取完整的节点附加属性信息;相应 的,所述代码生成模块442根据节点信息和节点附加属性信息构造可供客户端 直接展现的目录树信息。此时,所述可供客户端直接展现的目录树信息包括: 所述节点信息的HTML标签信息和JavaScript脚本信息、节点附加属性信息的 HTML标签信息和JavaScript脚本信息。 所述第二发送模块46,位于web服务端发送器中,用于发送可直接展现的 目录树信息。 实施例五 本发明还提供一种目录树的生成装置,如图5所示,该装置包括:第二接 收模块51、渲染模块52、交互模块53; 所述第二接收模块51,位于客户端的接收器中,用于接收web服务端发送 的可直接展现的目录树信息; 所述渲染模块52,位于客户端中,用于根据所述目录树信息生成和展现目 录树; 具体的,客户端通过内嵌的CSS代码或CSS文件对节点信息的HTML标 签信息和JavaScript脚本信息进行渲染,生成可供用户浏览和选择的目录树。 所述CSS代码是将网页表现与内容分离的一种样式设计语言;这里,当目录树 信息中还包括节点附加属性信息时,客户端还可以根据内嵌的CSS代码或CSS 文件对节点信息的HTML标签信息和JavaScript脚本信息进行渲染;以及对节 点附加属性信息的HTML标签信息和JavaScript脚本信息进行渲染,生成可供 用户浏览和选择的目录树。 所述交互模块53,位于客户端中,用于响应鼠标事件与所述目录树的交互; 具体的,所述交互模块利用JavaScript代码和文件确定鼠标事件,响应所述鼠 标事件对应的目录树展现方式,以实现用户与目录树的交互功能。 实施例六 相应于实施例四、五,本发明还提供一种目录树的生成系统,如图6所示, 所述系统包括:数据库端61、web服务端62、客户端63;其中, 所述数据库端61,用于生成所述目录结构的数据集合,并向所述web服务 端62一次性发送所述数据集合;具体的,所述数据库端61将所述数据集合一 次性打包,以结果集(ResultSet)的形式发送至所述web服务端62; 所述web服务端62,具体为图4中所述的web服务端,所述web服务端 包括:第一接收模块41、第一生成模块42、第一解析模块43、第二生成模块 44、第二生成模块45、第一发送模块46;其中, 第一接收模块41,用于接收目录结构的数据集合; 第一生成模块42,用于将接收到的所述数据集合生成数组对象; 第一解析模块43,用于解析所述数组对象中的每条记录; 第二生成模块44,用于根据解析出的节点信息生成可直接展现的目录树信 息; 第一发送模块45,用于发送可直接展现的目录树信息。 所述客户端63,具体为图5中所述的客户端,所述客户端包括:第二接收 模块51、渲染模块52、交互模块53;其中, 第二接收模块51,用于接收可直接展现的目录树信息; 渲染模块52,用于根据所述目录树信息生成和展现目录树; 交互模块53,用于响应鼠标事件与所述目录树的交互。 本发明实施例一、实施例二、实施例三中任一所述的目录树的生成方法如 果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在 一个计算机可读取存储介质中。基于这样的理解,本领域内的技术人员应明白, 本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采 用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。 而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可 用存储介质上实施的计算机程序产品的形式,所述存储介质包括但不限于U盘、 移动硬盘、只读存储器(ROM,Read-Only Memory)、磁盘存储器、CD-ROM、 光学存储器等。 本申请是根据本申请实施例的方法、设备(系统)、和计算机程序产品的流 程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方 框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框 的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理 机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其 他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或 多个流程和/或方框图一个方框或多个方框中指定的功能的装置。 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备 以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的 指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流 程和/或方框图一个方框或多个方框中指定的功能。 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使 得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处 理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个 流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。 相应的,本发明实施例还提供一种计算机存储介质,其中存储有计算机程 序,该计算机程序用于执行本发明实施例一、实施例二、实施例三任一所述的 目录树的生成方法。 以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范 围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应 包含在本发明的保护范围之内。
《目录树的生成方法、装置及系统.pdf》由会员分享,可在线阅读,更多相关《目录树的生成方法、装置及系统.pdf(18页珍藏版)》请在专利查询网上搜索。
目录树的生成方法、装置及系统。本发明公开了一种目录树的生成方法,web服务端接收目录树结构的数据集合,根据所述数据集合生成数组对象,按照键值对所述数组对象中的每条记录进行解析,根据解析出的节点信息生成可直接展现的目录树信息;客户端接收可直接展现的目录树信息,根据所述目录树信息生成和展现目录树,并响应鼠标事件与所述目录树的交互。。
copyright@ 2017-2020 zhuanlichaxun.net网站版权所有经营许可证编号:粤ICP备2021068784号-1