具体实施方式
下面结合附图,用具体实施例对本发明提供的一种页面显示控制方法、服务器及***进行详细的说明。
本发明实施例提供的页面显示控制方法,如图1所示,包括以下几个步骤:
步骤S101、客户端发起访问页面请求,请求访问某个WEB页面。
步骤S102、服务器接收客户端发起的访问页面请求;并根据该访问页面请求返回对应的页面内容数据和初始化脚本。
服务器端可以将预先定义的初始化脚本添加在页面内容的末尾,并且可以设置页面内容暂时不显示,当服务器返回该页面的显示控制信息之后再进行相应地显示。
步骤S103、客户端执行初始化脚本,向服务器发出页面控制请求。
本步骤S103中,一般由客户端的浏览器来执行初始化脚本。
步骤S104、服务器接收客户端发出的页面控制请求,并根据该页面控制请求,读取配置文件中所请求的页面的显示控制信息,以及选取该页面对应的渲染器。
步骤S105、客户端根据返回的显示控制信息和渲染器,控制该页面进行相应地显示。
本发明实施例中,预先定义了节点(对应于站点内的某页面或目录)的页面显示属性集,页面显示属性集是一组键值对,每个键值对表达式为:显示属性名=显示属性值。
显示属性名包括但不限于:总体样式、表头样式、隔行样式、边距样式、单元格样式、标题样式。
显示属性名为总体样式时,对应的显示属性值包括:列表型、表单型和展示型等;
显示属性名为表头样式时,对应的显示属性值包括:普通、加粗和背景加深等;
显示属性名为隔行样式时,对应的显示属性值包括:普通和交替背景等;
显示属性名为边距样式时,对应的显示属性值包括:普通值和佳值等;
显示属性名为单元格样式时,对应的显示属性值包括:普通,一致空白(Padding),狭长Padding;
显示属性名为标题格样式时,对应的显示属性值包括但不限于:{普通,加粗,背景加深}、{普通,居左,居右,居中}。
定义的显示属性集的存储格式如下:
<DisplayAttrSet name=”displayattrset_name”>
<DisplayAttr name=”disname1”value=”disvalue1”/>
<DisplayAttr name=”disname2”value=”disvalue2”/>
......
</DisplayAttrSet>
其中,disname1和disname2分别表示各个显示属性名,disvalue1和disvalue2分别表示各个显示属性名对应的显示属性值。
本发明实施例中还预先定义了节点的页面功能类型属性,页面功能类型属性用fx表示,其参数值包括但不限于:增加、修改、列表和查看。定义的页面功能属性存储格式例如为:type=”fx”。
根据预先定义的页面显示属性集和页面功能类型属性,可以预先定义出配置文件。
配置文件可以使用XML语言进行编写。下面的代码是配置文件一个实例。
<?xml version=″1.0″encoding=″UTF-8″?>
<DisplayConfiversion=”1.0”>
<DisplayAttrSets>
<DisplayAttrSet name=”displayattrset name”>
<DisplayAttr name=”disname 1”value=”disvalue 1”/>
<DisplayAttr name=”disname2”value=”disvalue2”/>
......
</DisplayAttrSet>
</DisplayAttrSets>
<NodeX type=”fx”/>
<NodeY type=”fx”>
<DisplayAttrSet>
<DisplayAttr name=”disname 1”value=”disvalue 1”/>
<DisplayAttr name=”disname2”value=”disvalue2”/>
......
</DisplayAttrSet>
<NodeZ type=”fx”>
<DisplayAttrSet>
<DisplayAttr name=”disname 1”value=”disvalue 1”/>
<DisplayAttr name=”disname2”value=”disvalue2”/>
......
</DisplayAttrSet>
<NodeXXX/>
</NodeZ>
</NodeY>
......
</DisplayConfig>
在上述配置文件中,包含了节点(Node)X、节点Y、节点Z和任意多级节点Node XXX的显示控制信息。每个节点可以包含页面显示属性集的参数值,或者包含预先定义功能属性参数值。
下面结合上述对配置文件的说明,对图1所示的步骤S104和步骤S105的具体执行过程进行进一步地说明。
在步骤S104中,服务器接收到客户端发出的页面控制请求之后,启动并执行一个拾取器程序,该拾取器程序的主要作用是用来确定该页面的显示控制信息并选取相应的渲染器。具体的工作流程如图2所示,包括:
步骤S201、服务器根据页面控制请求中所请求页面的统一资源定位标识(Uniform Resource Locator,URL),生成对应的基于标识扩展语言(eXtensibleMarkup Language,XML)的路径查找语言(XML Path Language,XPath)路径。
XPath路径使用反斜杠符号来分隔各个层次的XML节点(包括树状结构的叶子节点和目录节点)的名称,类似于文件目录结构FilePath。根据URL生成对应的XPath路径属于现有技术的范围,在本发明实施例中不再详述。
步骤S202、执行XPath路径,在配置文件中查找是否存在对应的节点。若存在,执行下述步骤S203;若不存在,执行下述步骤S208。
在首次执行根据页面的URL对应生成的XPath路径时,XPath路径也就是该页面对应的节点(以下简称第一节点),执行XPath路径的过程,也就是在配置文件中查找是否存在该页面对应的节点。若存在第一节点;执行下述步骤S203;若没有,执行下述步骤S208。
在下述步骤S208之后,XPath路径提升了一层,再次执行步骤S202时,查找的是提升后的XPath路径对应的节点(也就是该页面的上层目录对应的节点)。
步骤S203、判断该节点是否存在页面显示属性集DisplayAttrSet子节点;若存在,执行步骤S204;若不存在,转向执行步骤S205。
步骤S204、读取页面显示属性集DisplayAttrSet的参数值,以及选取常规渲染器,将读取的页面显示属性集的参数值与常规渲染器一起返回至客户端。
本发明实施例中,可以预先定义常规渲染器、特定渲染器和默认渲染器等,渲染器可以使用脚本语言Javascript来实现,基于动态超文本标记语言(Dynamic HTML,DHTML)技术对页面上所有标签的显示和效果进行控制和处理。
每个渲染器具备一个描述头,描述头的具体格式例如为:
struct RENDER_INFO
{
渲染器类型;
渲染器名称;
版本号;
}
服务器在进行初始化时,枚举出预先定义的所有渲染器,读取所有渲染器的描述头,并缓存在内存中,便于迅速读取。
步骤S205、判断该节点是否存在功能类型属性;若存在,执行步骤S206;若不存在,转向步骤S207。
步骤S206、读取功能类型属性fx的值,并选取与fx对应的特定渲染器以及对应的页面显示属性集(预先定义的)的参数值,将所读取的页面显示属性集的参数值与选取的特定渲染器,返回至客户端。
特定渲染器的选取,可以通过读取其描述头中的渲染器类型选取,选取渲染器类型=fX的那个特定渲染器返回客户端即可。
步骤S207、选取默认渲染器返回至客户端。
步骤S208、按照XPath路径中各层的顺序,执行第一节点紧邻的上一层节点的路径,也就是将XPath路径提升一层。
本发明实施例中,步骤S208之后,转向重复执行步骤S202或步骤S208的流程。通过重复执行步骤S202或步骤S208,不断在配置文件中查找第一节点的各上层节点,直到找到第一节点的上层节点(可能是第一节点以上某一层的节点)。当在配置文件中找到第一节点的上层节点,按照前述步骤S203至步骤S207描述的过程,读取该上层节点对应的页面显示属性集的参数值,并选取出对应的渲染器。将读取的页面显示属性集的参数值和选取的渲染器返回至客户端。本发明实施例提供的页面显示控制方法的整个流程至此结束循环。
在客户端接收到服务器返回的显示控制信息和渲染器之后,如图3所示,执行下述步骤:
步骤S301、客户端执行返回的渲染器。
步骤S302、渲染器读取显示控制信息(页面显示属性集的参数值),将其中的各属性项及参数值,确定为当前渲染器工作的全局参数。
步骤S303、渲染器按照确定出的全局参数,设置该页面的层次的样式。
步骤S304、渲染器确定整个页面的主要标签块。
步骤S305、渲染器清空主要标签块之外的页面标签的杂乱样式。
步骤S306、渲染器对主要标签块内的标签进行处理。
在步骤S306中,处理的细节例如可以包括:处理数据列表表头例如为列表型页面;处理每行数据,并根据全局参数决定是否使用隔行样式,加深背景等;处理特定列例如标题列的样式;处理单元格中的padding等的样式;处理所有单选复选框样式、所有输入框样式或所有按钮样式;处理样式相关事件,比如鼠标移动到某行时该行背景色改变,移出时背景色恢复等等。
客户端执行步骤S301至步骤S306,使得页面的显示达到预先定义的效果。
本发明实施例还提供了一种服务器,如图4所示,包括:接收单元401、读取/选取单元402和返回单元403;其中:
接收单元401,用于接收客户端发出的页面控制请求;
读取/选取单元402,用于根据页面控制请求,读取配置文件中所请求的页面的显示控制信息,并选取对应的渲染器;
返回单元403,用于将读取的显示控制信息和选取的渲染器返回至客户端。
本发明实施例提供的服务器中的读取/选取单元402,还用于根据页面控制请求中携带的该页面的统一资源定位标识URL,生成对应的XPath路径;
按照XPath路径中各节点的顺序,依次从配置文件中查找并读取该页面的显示控制信息,以及选取该页面对应的渲染器。
进一步地,读取/选取单元402,还用于在配置文件中查找该页面对应的第一节点;
当存在第一节点时,判断配置文件中第一节点是否存在页面显示属性集子节点;若存在,读取页面显示属性集的参数值,将页面显示属性集的参数值与常规渲染器返回至该客户端;
若不存在,判断配置文件中第一节点是否存在功能类型属性;若存在,读取功能类型属性的参数值,并读取与功能类型属性参数值对应的页面显示属性集的参数值以及选取对应的特定渲染器,将读取的页面显示属性集的参数值和选取的特定渲染器返回至该客户端;若不存在,将默认渲染器返回至该客户端;
当不存在第一节点时,按照XPath路径的顺序,依次在配置文件中查找第一节点的各上层节点,直至查找到上层节点;读取查找到的上层节点对应的页面显示属性集的参数值,并选取对应的渲染器,将读取的页面显示属性集的参数值和选取的渲染器返回至该客户端。
本发明实施例还提供了一种页面显示控制***,如图5所示,包括:服务器501和客户端501;
服务器501,用于接收客户端发出的页面控制请求;根据页面控制请求,读取配置文件中所请求的页面的显示控制信息,并选取对应的渲染器;将读取的显示控制信息和选取的渲染器返回至客户端502;
客户端502,用于根据服务器501返回的显示控制信息和渲染器,控制页面进行显示。
进一步地,服务器501还用于接收客户端发起的访问页面请求;并根据该访问页面请求返回对应的页面内容数据和初始化脚本;
客户端502,还用于向服务器501发起访问页面请求,以及执行服务器501返回的初始化脚本,向服务器502发出页面控制信息请求。
进一步地,服务器501,还用于根据页面控制请求中携带的页面的统一资源定位标识URL,生成对应的XPath路径;按照XPath路径中各节点的顺序,依次从配置文件中查找并读取该页面的显示控制信息,以及选取该页面对应的渲染器。
本发明实施例提供的页面显示控制方法,在服务器接收到客户端发出的页面控制请求后,读取配置文件中所请求的页面的显示控制信息,并选取对应的渲染器,将读取的显示控制信息和渲染器返回给客户端,客户端根据接收的显示控制信息和渲染器,控制页面进行相应的显示,本发明实施例在配置文件中预先定义了站点***内所有页面的显示和样式控制信息,对于需要格式化显示的内容,可以实现统一设置,对于特殊显示的内容,也可以预先进行单独的显示和样式格式的定义,使用方便灵活,对于客户端请求访问的任何一个页面,都可以通过本发明实施例提供的方法、服务器和***,达到预先设定的显示效果,并且整个过程可以自动化实现,不再需要人工进行干预,避免了现有人工进行设置和开发过程中,所带来的工作量繁重,效率较低的问题。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。