《数据展示模板的错误检测方法.pdf》由会员分享,可在线阅读,更多相关《数据展示模板的错误检测方法.pdf(6页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103778063 A (43)申请公布日 2014.05.07 CN 103778063 A (21)申请号 201410047136.8 (22)申请日 2014.02.10 G06F 11/36(2006.01) (71)申请人 北京京东尚科信息技术有限公司 地址 100080 北京市海淀区苏州街20号2号 楼 2 层 申请人 北京京东世纪贸易有限公司 (72)发明人 何泽钊 (74)专利代理机构 北京德琦知识产权代理有限 公司 11018 代理人 王一斌 王琦 (54) 发明名称 数据展示模板的错误检测方法 (57) 摘要 本申请公开了一种数据展示模板的错误检。
2、测 方法, 包括 : 对于用户提交的数据展示模板, 确定 该模板的脚本文件中的每个标签是否属于系统标 签, 如果有不属于系统标签的标签, 则将不属于 系统标签的所有标签通知给所述用户, 结束所述 方法 ; 确定所述脚本文件需要有结束符的所有标 签, 并判断所述脚本文件中是否缺少相应的结束 符标签, 如果是, 则将缺少结束符标签的错误信息 通知给所述用户, 结束所述方法 ; 在后台执行所 述脚本文件进行网页渲染, 如果在所述执行时出 现异常, 则将所述异常的相关错误信息通知给所 述用户。采用本发明可以对数据展示模板的脚本 文件中的错误进行准确识别并通知给用户, 提高 系统的应用性能。 (51)I。
3、nt.Cl. 权利要求书 1 页 说明书 3 页 附图 1 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书3页 附图1页 (10)申请公布号 CN 103778063 A CN 103778063 A 1/1 页 2 1. 一种数据展示模板的错误检测方法, 其特征在于, 包括 : a、 对于用户提交的数据展示模板, 确定该模板的脚本文件中的每个标签是否属于系统 标签, 如果有不属于系统标签的标签, 则将不属于系统标签的所有标签通知给所述用户, 结 束所述方法 ; b、 确定所述脚本文件需要有结束符的所有标签, 并判断所述脚本文件中是否缺少相应 的结束符标。
4、签, 如果是, 则将缺少结束符标签的错误信息通知给所述用户, 结束所述方法 ; c、 在后台执行所述脚本文件进行网页渲染, 如果在所述执行时出现异常, 则将所述异 常的相关错误信息通知给所述用户。 2. 根据权利要求 1 所述的方法, 其特征在于, 所述数据展示模板为采用 velocity 语言 编写的模板。 3. 根据权利要求 1 所述的方法, 其特征在于, 所述方法进一步包括 : 步骤 b 中当判断出所述脚本文件中不缺少相应的结束符标签时, 判断所述脚本文件中 是否存在预设的不安全关键字, 如果存在, 则将存在所述不安全关键字的错误信息通知给 所述用户, 结束所述方法, 否则, 执行所述步。
5、骤 c。 4.根据权利要求1所述的方法, 其特征在于, 步骤a中所述确定该模板的脚本文件中的 每个标签是否属于系统标签包括 : 对于每个所述标签, 检查该标签是否存在于预设的系统标签集合中, 如果有, 则确定该 标签属于系统标签。 5.根据权利要求1所述的方法, 其特征在于, 步骤b中所述判断所述脚本文件中是否缺 少相应的结束符标签包括 : 判断所述脚本文件中结束符的数量是否等于所述脚本文件中需要有结束符的标签的 数量, 如果是, 则判定不缺少相应的结束符标签, 否则, 判定缺少相应的结束符标签。 权 利 要 求 书 CN 103778063 A 2 1/3 页 3 数据展示模板的错误检测方法。
6、 技术领域 0001 本发明涉及计算机互联网技术, 特别是涉及一种数据展示模板的错误检测方法。 背景技术 0002 Velocity 类似于 freemarker 是一个基于 java 的模板引擎 (template engine) 。 它可以仅仅使用模板语言 (template language) 来引用由 java 代码定义的对象, 从而实现 对象数据的展示, 或者网页数据渲染。 0003 velocity 有多种应用领域, 当 velocity 应用于 web 开发时, 界面设计人员可以和 java程序开发人员同步开发一个遵循MVC架构的web站点, 也就是说, 页面设计人员可以只 关注。
7、页面的显示效果, 而由java程序开发人员关注业务逻辑编码。 java程序开发人员从后 台通过业务逻辑代码封装数据对象输出到前台, 前台的页面结构设计师就可以遍历这些数 据对象中的数据进行数据展示的页面设计。因为 Velocity 将 java 代码从 web 页面中分离 出来, 这样为 web 站点的维护提供了方便, 从而可以采用 Velocity 语言实现数据展示模板 的开发。 0004 随着互联网业务的不断拓展, 目前也开始需要用户进行数据展示模板 (如 velocity 模板) 的开发, 现有的 velocity 模板引擎中没有针对 velocity 代码的语法验证 工具或者技术方案,。
8、 所以用户在一种自由度比较高的情况下编写出的 velocity 模板脚本, 会导致用户无法准确地知道自己写的 velocity 代码是否正确, 是否符合语法规范, 从而用 户编写的数据展示模板不能进行正常的网页渲染, 进而降低系统的应用性能。 发明内容 0005 有鉴于此, 本发明的主要目的在于提供一种数据展示模板的错误检测方法, 该方 法可以对数据展示模板的脚本文件中的错误进行准确识别并通知给用户, 提高系统的应用 性能。 0006 为了达到上述目的, 本发明提出的技术方案为 : 0007 一种数据展示模板的错误检测方法, 包括 : 0008 a、 对于用户提交的数据展示模板, 确定该模板的。
9、脚本文件中的每个标签是否属于 系统标签, 如果有不属于系统标签的标签, 则将不属于系统标签的所有标签通知给所述用 户, 结束所述方法 ; 0009 b、 确定所述脚本文件需要有结束符的所有标签, 并判断所述脚本文件中是否缺少 相应的结束符标签, 如果是, 则将缺少结束符标签的错误信息通知给所述用户, 结束所述方 法 ; 0010 c、 在后台执行所述脚本文件进行网页渲染, 如果在所述执行时出现异常, 则将所 述异常的相关错误信息通知给所述用户。 0011 综上所述, 本发明提出的数据展示模板的错误检测方法, 对用户提交的数据展示 模板进行非系统标签、 缺少结束符标签以及后台渲染异常等检测, 如。
10、此, 可以对数据展示模 说 明 书 CN 103778063 A 3 2/3 页 4 板的脚本文件中的错误进行准确识别并通知给用户, 从而可以实现对数据展示模板的自动 化检测, 避免由于用户无法对所输入的数据展示模板的正确性进行验证时所致的数据展示 模板无法正常渲染的问题, 从而可以提高系统的应用性能。 附图说明 0012 图 1 为本发明实施例一的流程示意图。 具体实施方式 0013 为使本发明的目的、 技术方案和优点更加清楚, 下面将结合附图及具体实施例对 本发明作进一步地详细描述。 0014 本发明的核心思想是 : 对用户编写的代码是否符合模板编程语言的语法规范, 如 果有语法问题, 会。
11、给出较为准确的提示信息。 0015 图 1 为本发明实施例一的流程示意图, 如图 1 所示, 该实施例主要包括 : 0016 步骤 101 102、 对于用户提交的数据展示模板, 确定该模板的脚本文件中的每个 标签是否属于系统标签, 如果有不属于系统标签的标签, 则将不属于系统标签的所有标签 通知给所述用户, 结束所述方法。 0017 在实际应用中, 所述数据展示模板可以为采用 velocity 语言编写的模板。 0018 本步骤中首先对模板中的标签是否都属于系统标签进行检查。 0019 具体地, 本步骤中可以采用下述方法确定该模板的脚本文件中的每个标签是否属 于系统标签 : 0020 对于每。
12、个所述标签, 检查该标签是否存在于预设的系统标签集合中, 如果有, 则确 定该标签属于系统标签。 0021 在实际应用中, 每种语言都有他特有的系统关键字, 比如 java 语言中的 “public、 class、 void、 if、 else” 等。Velocity 模板语言也如此, 它具有 “foreach、 if、 set、 include、 parse、 end” 等这些系统标签关键字。在具体应用中, velocity 系统可以封装一个 velocity 系统标签的配置数据对象存储这些标签数据并且是静态常量不可修改。由于 velocity 系 统标签都是以 “#” 开头来标示的 (如 。
13、: #set、 #include) , 当用户编写的数据展示模板的脚本 文件提交过来时, 先取出脚本文件中的系统标签, 再把定义好的系统标签数据构建成一个 正则规则, 通过 java 正则进行匹配循环匹配。如果有存在不能匹配的数据, 则表示用户输 入的系统标签有误, 不是 velocity 的标签, 返回错误信息。 0022 步骤 103 104、 确定所述脚本文件需要有结束符的所有标签, 并判断所述脚本文 件中是否缺少相应的结束符标签, 如果是, 则将缺少结束符标签的错误信息通知给所述用 户, 结束所述方法。 0023 在通过上述步骤 101 的检查后, 如果没有非系统标签, 则在本步骤 1。
14、03 104 进行 结束符检查。例如, 对于 velocity 模板语言而言, 其中 “foreach” 、“if” 、“ifelse” 此 3 个 系统标签需要有结束符 “end” , 从模板的脚本代码中取出这些标签集合, 再通过逻辑计算出 是否都有对应的 “end” 结束符。如果检查有误则返回错误信息, 无误则进行下一步检查。 0024 较佳地, 判断所述脚本文件中是否缺少相应的结束符标签的具体方法是判断所述 脚本文件中结束符的数量是否等于脚本文件需要有结束符的所有标签的数量, 如果是, 则 说 明 书 CN 103778063 A 4 3/3 页 5 判定不缺少相应的结束符标签, 否则判。
15、定缺少相应的结束符标签。 0025 在实际应用还可以采用其他的判断方式, 在此不再赘述。 0026 进一步地, 为了确保数据展示模板的安全性, 避免数据展示模板中恶意代码对系 统的破坏, 本步骤中在判断出所述脚本文件中不缺少相应的结束符标签后, 还可以进一步 对数据展示模板中是否存在不安全代码进行检查, 即过滤到危险的语法调用, 具体地, 可以 采用下述方法实现这一目的 : 0027 当判断出所述脚本文件中不缺少相应的结束符标签时, 判断所述脚本文件中是否 存在预设的不安全关键字, 如果存在, 则将存在所述不安全关键字的错误信息通知给所述 用户, 结束所述方法, 否则, 执行所述步骤 105。。
16、 0028 这里, 所述预设的不安全关键字可以通过黑名单的方式进行记录, 进行判断所述 脚本文件中是否存在预设的不安全关键字时, 检测该脚本文件中是否有黑名单中的不安全 关键字即可。 0029 步骤 105、 在后台执行所述脚本文件进行网页渲染, 如果在所述执行时出现异常, 则将所述异常的相关错误信息通知给所述用户。 0030 本步骤用于在经过上述步骤的检查未发现错误后, 通过在后台对模板脚本文件的 运行来确保脚本文件的正确性, 当运行时有异常发生时, 则系统会给出异常的相关错误信 息包括异常出现的行数、 异常的名称等, 以便用户可以据此对脚本文件进行纠错。 0031 在上述方案中, 通过对用。
17、户提交的数据展示模板进行非系统标签、 缺少结束符标 签以及后台渲染异常等检测, 可以对数据展示模板的脚本文件中的错误进行准确识别并通 知给用户, 从而可以使用户可以获知所提交的数据展示模板的错误及具体的错误位置, 进 而进行相应的修正。由此可见本发明通过对数据展示模板的自动化检测, 可以避免由于用 户无法对所输入的数据展示模板的正确性进行验证所致的数据展示模板无法正常渲染的 问题, 从而可以提高系统的应用性能。 0032 综上所述, 以上仅为本发明的较佳实施例而已, 并非用于限定本发明的保护范围。 凡在本发明的精神和原则之内, 所作的任何修改、 等同替换、 改进等, 均应包含在本发明的 保护范围之内。 说 明 书 CN 103778063 A 5 1/1 页 6 图 1 说 明 书 附 图 CN 103778063 A 6 。