数据展示模板的错误检测方法

文档序号:6537556阅读:273来源:国知局
数据展示模板的错误检测方法
【专利摘要】本申请公开了一种数据展示模板的错误检测方法,包括:对于用户提交的数据展示模板,确定该模板的脚本文件中的每个标签是否属于系统标签,如果有不属于系统标签的标签,则将不属于系统标签的所有标签通知给所述用户,结束所述方法;确定所述脚本文件需要有结束符的所有标签,并判断所述脚本文件中是否缺少相应的结束符标签,如果是,则将缺少结束符标签的错误信息通知给所述用户,结束所述方法;在后台执行所述脚本文件进行网页渲染,如果在所述执行时出现异常,则将所述异常的相关错误信息通知给所述用户。采用本发明可以对数据展示模板的脚本文件中的错误进行准确识别并通知给用户,提高系统的应用性能。
【专利说明】数据展示模板的错误检测方法
【技术领域】
[0001]本发明涉及计算机互联网技术,特别是涉及一种数据展示模板的错误检测方法。【背景技术】
[0002]Velocity 类似于 freemarker 是一个基于 java 的模板引擎(template engine)。它可以仅仅使用模板语言(template language)来引用由java代码定义的对象,从而实现对象数据的展示,或者网页数据渲染。
[0003]velocity有多种应用领域,当velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。java程序开发人员从后台通过业务逻辑代码封装数据对象输出到前台,前台的页面结构设计师就可以遍历这些数据对象中的数据进行数据展示的页面设计。因为Velocity将java代码从web页面中分离出来,这样为web站点的维护提供了方便,从而可以采用Velocity语言实现数据展示模板的开发。
[0004]随着互联网业务的不断拓展,目前也开始需要用户进行数据展示模板(如velocity模板)的开发,现有的velocity模板引擎中没有针对velocity代码的语法验证工具或者技术方案,所以用户在一种自由度比较高的情况下编写出的velocity模板脚本,会导致用户无法准确地知道自己写的velocity代码是否正确,是否符合语法规范,从而用户编写的数据展示模板不能进行正常的网页渲染,进而降低系统的应用性能。

【发明内容】

[0005]有鉴于此,本发明的主要目的在于提供一种数据展示模板的错误检测方法,该方法可以对数据展示模板的脚本文件中的错误进行准确识别并通知给用户,提高系统的应用性能。
[0006]为了达到上述目的,本发明提出的技术方案为:
[0007]—种数据展示模板的错误检测方法,包括:
[0008]a、对于用户提交的数据展示模板,确定该模板的脚本文件中的每个标签是否属于系统标签,如果有不属于系统标签的标签,则将不属于系统标签的所有标签通知给所述用户,结束所述方法;
[0009]b、确定所述脚本文件需要有结束符的所有标签,并判断所述脚本文件中是否缺少相应的结束符标签,如果是,则将缺少结束符标签的错误信息通知给所述用户,结束所述方法;
[0010]C、在后台执行所述脚本文件进行网页渲染,如果在所述执行时出现异常,则将所述异常的相关错误信息通知给所述用户。
[0011]综上所述,本发明提出的数据展示模板的错误检测方法,对用户提交的数据展示模板进行非系统标签、缺少结束符标签以及后台渲染异常等检测,如此,可以对数据展示模板的脚本文件中的错误进行准确识别并通知给用户,从而可以实现对数据展示模板的自动化检测,避免由于用户无法对所输入的数据展示模板的正确性进行验证时所致的数据展示模板无法正常渲染的问题,从而可以提高系统的应用性能。
【专利附图】

【附图说明】
[0012]图1为本发明实施例一的流程示意图。
【具体实施方式】
[0013]为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明作进一步地详细描述。
[0014]本发明的核心思想是:对用户编写的代码是否符合模板编程语言的语法规范,如果有语法问题,会给出较为准确的提示信息。
[0015]图1为本发明实施例一的流程示意图,如图1所示,该实施例主要包括:
[0016]步骤101?102、对于用户提交的数据展示模板,确定该模板的脚本文件中的每个标签是否属于系统标签,如果有不属于系统标签的标签,则将不属于系统标签的所有标签通知给所述用户,结束所述方法。
[0017]在实际应用中,所述数据展示模板可以为采用velocity语言编写的模板。
[0018]本步骤中首先对模板中的标签是否都属于系统标签进行检查。
[0019]具体地,本步骤中可以采用下述方法确定该模板的脚本文件中的每个标签是否属于系统标签:
[0020]对于每个所述标签,检查该标签是否存在于预设的系统标签集合中,如果有,则确定该标签属于系统标签。
[0021]在实际应用中,每种语言都有他特有的系统关键字,比如java语言中的“public、class、void、if、else” 等。Velocity 模板语言也如此,它具有“foreach、if、set、include、parse、end”等这些系统标签关键字。在具体应用中,velocity系统可以封装一个velocity系统标签的配置数据对象存储这些标签数据并且是静态常量不可修改。由于velocity系统标签都是以“#,,开头来标示的(如:#set、#include),当用户编写的数据展示模板的脚本文件提交过来时,先取出脚本文件中的系统标签,再把定义好的系统标签数据构建成一个正则规则,通过java正则进行匹配循环匹配。如果有存在不能匹配的数据,则表示用户输入的系统标签有误,不是velocity的标签,返回错误信息。
[0022]步骤103?104、确定所述脚本文件需要有结束符的所有标签,并判断所述脚本文件中是否缺少相应的结束符标签,如果是,则将缺少结束符标签的错误信息通知给所述用户,结束所述方法。
[0023]在通过上述步骤101的检查后,如果没有非系统标签,则在本步骤103?104进行结束符检查。例如,对于velocity模板语言而言,其中“foreaCh”、“if”、“ifelSe”此3个系统标签需要有结束符“end”,从模板的脚本代码中取出这些标签集合,再通过逻辑计算出是否都有对应的“end”结束符。如果检查有误则返回错误信息,无误则进行下一步检查。
[0024]较佳地,判断所述脚本文件中是否缺少相应的结束符标签的具体方法是判断所述脚本文件中结束符的数量是否等于脚本文件需要有结束符的所有标签的数量,如果是,则判定不缺少相应的结束符标签,否则判定缺少相应的结束符标签。
[0025]在实际应用还可以采用其他的判断方式,在此不再赘述。
[0026]进一步地,为了确保数据展示模板的安全性,避免数据展示模板中恶意代码对系统的破坏,本步骤中在判断出所述脚本文件中不缺少相应的结束符标签后,还可以进一步对数据展示模板中是否存在不安全代码进行检查,即过滤到危险的语法调用,具体地,可以采用下述方法实现这一目的:
[0027]当判断出所述脚本文件中不缺少相应的结束符标签时,判断所述脚本文件中是否存在预设的不安全关键字,如果存在,则将存在所述不安全关键字的错误信息通知给所述用户,结束所述方法,否则,执行所述步骤105。
[0028]这里,所述预设的不安全关键字可以通过黑名单的方式进行记录,进行判断所述脚本文件中是否存在预设的不安全关键字时,检测该脚本文件中是否有黑名单中的不安全关键字即可。
[0029]步骤105、在后台执行所述脚本文件进行网页渲染,如果在所述执行时出现异常,则将所述异常的相关错误信息通知给所述用户。
[0030]本步骤用于在经过上述步骤的检查未发现错误后,通过在后台对模板脚本文件的运行来确保脚本文件的正确性,当运行时有异常发生时,则系统会给出异常的相关错误信息包括异常出现的行数、异常的名称等,以便用户可以据此对脚本文件进行纠错。
[0031]在上述方案中,通过对用户提交的数据展示模板进行非系统标签、缺少结束符标签以及后台渲染异常等检测,可以对数据展示模板的脚本文件中的错误进行准确识别并通知给用户,从而可以使用户可以获知所提交的数据展示模板的错误及具体的错误位置,进而进行相应的修正。由此可见本发明通过对数据展示模板的自动化检测,可以避免由于用户无法对所输入的数据展示模板的正确性进行验证所致的数据展示模板无法正常渲染的问题,从而可以提高系统的应用性能。
[0032]综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种数据展示模板的错误检测方法,其特征在于,包括: a、对于用户提交的数据展示模板,确定该模板的脚本文件中的每个标签是否属于系统标签,如果有不属于系统标签的标签,则将不属于系统标签的所有标签通知给所述用户,结束所述方法; b、确定所述脚本文件需要有结束符的所有标签,并判断所述脚本文件中是否缺少相应的结束符标签,如果是,则将缺少结束符标签的错误信息通知给所述用户,结束所述方法; C、在后台执行所述脚本文件进行网页渲染,如果在所述执行时出现异常,则将所述异常的相关错误信息通知给所述用户。
2.根据权利要求1所述的方法,其特征在于,所述数据展示模板为采用velocity语言编写的模板。
3.根据权利要求1所述的方法,其特征在于,所述方法进一步包括: 步骤b中当判断出所述脚本文件中不缺少相应的结束符标签时,判断所述脚本文件中是否存在预设的不安全关键字,如果存在,则将存在所述不安全关键字的错误信息通知给所述用户,结束所述方法,否则,执行所述步骤C。
4.根据权利要求1所述的方法,其特征在于,步骤a中所述确定该模板的脚本文件中的每个标签是否属于系统标签包括: 对于每个所述标签,检查该标签是否存在于预设的系统标签集合中,如果有,则确定该标签属于系统标签。
5.根据权利要求1所述的方法,其特征在于,步骤b中所述判断所述脚本文件中是否缺少相应的结束符标签包括: 判断所述脚本文件中结束符的数量是否等于所述脚本文件中需要有结束符的标签的数量,如果是,则判定不缺少相应的结束符标签,否则,判定缺少相应的结束符标签。
【文档编号】G06F11/36GK103778063SQ201410047136
【公开日】2014年5月7日 申请日期:2014年2月10日 优先权日:2014年2月10日
【发明者】何泽钊 申请人:北京京东尚科信息技术有限公司, 北京京东世纪贸易有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1