一种新型列表系统的制作方法

文档序号:16146747发布日期:2018-12-05 16:33阅读:156来源:国知局
一种新型列表系统的制作方法

本发明涉及网址转换及生成查询条件技术领域,尤其涉及一种新型列表系统。

背景技术

目前,网址转换及生成查询条件的方法,主要是依靠硬编码,利用对象字段来实现。在计算机程序或文本编辑中,硬编码是指将可变变量用一个固定值来代替的方法。用这种方法编译后,如果以后需要更改此可变变量就非常困难了。

因此,依靠硬编码来完成网址转换及生成查询条件的方法,不利于维护、改动困难,若要新增搜索项目或新增搜索条件都比较麻烦。



技术实现要素:

为了解决现有技术中的问题,本发明的目的是提供一种新型的列表系统,其新增搜索项目和搜索条件都非常方便;url规范、搜索规范独立,可以分别调整;组件化,支持复用。

为了实现上述目的,本发明采用的技术方案是:

本发明提供了一种新型列表系统,其包括url模型、url包装对象urlvo、后端查询语句;所述url模型与url包装对象urlvo之间为双向映射关系;所述url包装对象urlvo与所述后端查询语句之间的映射关系是单向的,无法由后端查询语句组装url包装对象urlvo;所述url模型自身不能触发后端查询语句,需要映射成urlvo后利用urlvo来完成映射。

优选的方案,所述url模型包括urlclass模块、urllabel模块、urlvalue模块;所述urlclass模块、urllabel模块、urlvalue模块组成一树形结构,所述urlclass模块包含多个urllabel模块,而每一个urllabel模块又包括多个urlvalue模块;所述urlclass模块为label分类,用于管理多项urllabel;所述urllabel模块为搜索项的名称模块,用于管理每一项urllabel下面的多个urlvalue;所述urlvalue模块为具体搜索项的各个名称所包含的内容模块。

进一步优选的方案,所述urllabel模块包括产品的价格、产区、品牌信息。

更进一步优选的方案,所述url模型与url包装对象urlvo之间的映射是通过urltransfor接口来实现。

再进一步优选的方案,从所述url包装对象urlvo到后端查询语句的映射是通过urlvosearcher接口的适配器来完成的。

其中,url:(uniformresourelocator),统一资源定位符,由字符串组成用于互联网上资源的定位

urlvo:url在本系统中的对应的对象,帮助解析url的含义、url之间的关系,以及url与后端查询条件的关系;

urlvalue:参数的值,比如国家下的‘法国’、‘意大利’;

urllabel:参数的名称,比如‘国家’、‘类型’

urlclass:参数的名称的集合,比如‘商品搜索’、‘评论搜索’

urltransfor:存放参数集合的容器,并完成url和urlvo的转换工作;

urlvorepository:存放urltransfor的容器,运行时因为有参数更新,会需要更换urltransfor

urlvosearcher:查询转换器接口,用于urlvo转查询。

通过采用以上技术方案,本发明一种新型列表系统与现有技术相比,其有益效果为:

1、本发明的网址转换及生成查询条件的方法,新增搜索项目和搜索条件都非常方便;

2、url规范、搜索规范独立,可以分别调整;

3、本发明组件化,支持复用,因此使用方便;

4、url地址格式、solr查询相关、外围相关(如action和jsp)三者相互隔离,修改一处对其它两处不影响,因此,当solr查询有变化时,重新配置xml配置文件即可,因此,网址装换和查询更方便。

附图说明

图1为本发明一种新型列表系统的映射关系图;

图2为本发明一种新型列表系统的url模型的树状结构图;

图3为本发明一种新型列表系统的映射发生关系示意图;

图4为本发明一种新型列表系统实施例的初始化或重新加载时的序列图;

图5为本发明一种新型列表系统实施例的地址映射urlvo时的序列图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明了,下面结合具体实例,对本发明进一步详细说明。应该理解,这些描述只是示例性的,而并非要限制本发明的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本发明的概念。

本发明一种新型列表系统,其包括url模型、url包装对象urlvo、后端查询语句;所述url模型与url包装对象urlvo之间为双向映射关系;所述url包装对象urlvo与所述后端查询语句之间的映射关系是单向的,无法由后端查询语句组装url包装对象urlvo;所述url模型自身不能触发后端查询语句,需要映射成urlvo后利用urlvo来完成映射。其映射关系图如图1所示。

所述url模型包括urlclass模块、urllabel模块、urlvalue模块,其中,urlclass模块:是label分类,用于管理一堆的label;urllabel模块:为搜索项的名称,如‘价格’,‘产区’,‘品牌’等,用于管理urlvalue;urlvalue模块:为搜索具体项内容,如‘5~99元’,‘法国’,‘五粮液’,代表了urllabel下具体的选项。

通过持有不同的urlvalue组合,urlvo就能代表不同的url了,再加上urlvalue是全局共享的,这就做到了虽然每次都会映射urlvo(同一个url映射成了不同的urlvo对象),但他们持有的urlvalue却是完全相同的。

urlvalue的意义为:在系统中,每个urlvalue都是一个对象,拥有完整的属性表达,其内容包括:①关系:与上级urllabel的关系,与下级urllabel的关系,relationmap控制其它value;②url方面的映射准备:urlcode(转移到了urllabel中)和value,可以生成此urlvalue对应的地址;③后端映射准备:solrfield和solrvalue,可以生成后端kv语句;④自身标示:name,可用于页面显示;⑤附加支持:arg1,arg2,arg3...,用于作用于需要自定义的场所。由于urlvalue与urllabel与urlclass有紧密联系,已经自成一张以urlclass为根的树形结构,如图2所示,拥有urlvalue,即拥有了它的全部关系。

urlvalue自身已经提供了生成对应的url的能力,urlvalue有两项重要功能转移到urllabel中:"loader"自定义的加载器(指定spring的bean名称),接受自定义构造出urlvalue(一次构造,随后在parser阶段使用,场景:基于后台表,来动态控制国家和子产区);"parser"自定义的映射器,用于映射阶段使用,场景:为每个自定义价格生成urlvalue。

url模型、url包装对象urlvo、后端查询语句之间映射的发生,见图3:url与url包装对象urlvo之间通过urltransfor接口提供双向映射,很容易更改;url包装对象urlvo与后端查询语句之间通过urlvosearcher接口的适配器defaultmapsearchadapter完成了此映射,该接口还把实际查询动作也委托了出去,很容易更改。

初始化或重新加载时,动作依靠consistencyinitial接口完成,其序列图如图4所示,此序列图的所有角色都是接口,可以换成自定义实现。

地址映射urlvo时,序列图如图5所示。

生成地址时,与地址映射urlvo类似,只是调用urltransfor接口的另一个方法。

url的格式如以下例子:

以下格式都是有效格式,当用户输入非法格式时,会301跳转到正确的格式,

list.yesmywine.com/

list.yesmywine.com/z2/

list.yesmywine.com/z3/

list.yesmywine.com/z4/

list.yesmywine.com/z2-a1/

list.yesmywine.com/z2-b2/

list.yesmywine.com/z2-a1-b2-c3?q=xxx

list.yesmywine.com/z2-a1-b2-c3-s100.1_200.1

list.yesmywine.com/z2-a1-b2-c3-p2?i=1

list.yesmywine.com/z1?q=拉菲

list.yesmywine.com/z1-i1-p2?q=拉菲。

下表为本发明目录命名的一个具体例子:

本发明中,url地址解析的流程为:

1)浏览器发送list.yesmywine.com/z2-a1-c1-p2/;

2)经nginx转成www.yesmywine.com/list3/z2-a1-c1-p2/;

3)经urlwriter转成

www.yesmywine.com/searchv3.jspa?fullurl=/z2-a1-c1-p2/;

4)经action得到/z2-a1-c1-p2/,传给后续服务处理。

本发明中urlvo封装了当前url地址所能表达的所有信息,整个系统中也只有urlvo跟当前用户有关。

以下为三个方法系,用于页面调用:

1、tostring()

生成url

2、replacexxx系列

通过每次调用改变一个维度的值,来生成新的urlvo,以得到新url

3、containsxxx系列

判断是否包含了指定的urllabel(该维度有值)或urlvalue(该维度的该值),以确定该结点(已选择,未选择)。

坐标系:

如原产地、子产区、类型、品种这类信息,都用坐标系思路,放到listvalues变量中,由于选了子产区后,url上原产地会隐藏,为了方便程序处理,再提供一个listfullvalues。(程序把这些值和类型都混在一起了,不再单独考虑)

诸如其它(特惠、整箱、组合)和排序,也是坐标系,但考虑到页面上出现的位置要求不同,独立定义了变量mapprivatevalues来定义,(用于其它和排序都有特定的调用,这里提供了单独的调用方法xxxbytab,xxxbysort。

urlvo其它信息:

有些信息,如分页数、用户输入的价格、查询串(分仓id,现已经废弃),值范围太广,不适用于固定对象缓存,另外定义了属性(p,pricestring,q)来实现,显示方式(showmodel)也是分开实现的。

urlvorepository提供了与iocbean打交道的通道,urlvorepository有如下方法:

1)、fromurl(生成urlvo)

为什么不直接用fromurl来生成urlvo呢?

原因:1、urlvo无法获得相关的参数条件

2、urlvo内的fromurl,要么是静态,要么是动态,如果前者,将无法扩展,如果是后者,将影响urlvo实例本身的语义。

2)search

组装查询条件,查询后台。后台查询条件哪里来?已经配置在urlvalue结点上了,其中sorllabel是字段名sorlvalue是字段值,如果一组urlvalue的查询字段名都相同,可直接配置在urlvalue所在的urllabel的sorllabel上。

本发明中,url地址格式、solr查询相关、外围相关(如action和jsp)三者相互隔离,修改一处对其它两处不影响。

1)、action和jsp已经与其它两者都隔离了,只与urlvo和urlvorepository的api打交道;

2)、url格式有变化,重写urlvo和urlvorepository即可(api不变);

3)、solr查询有变化,重配置xml配置文件即可。

本发明同时支持多套地址:如果url规范相同,值不同,在spring内再配一套urlvorepository即可;如果url规范不同,将urlvorepository抽取接口,实现多份,同时将urlvo内的tostring,独立成第三方对象,由urlvorepository注入,即可。

上述的具体实施方式只是示例性的,是为了更好地使本领域技术人员能够理解本专利,不能理解为是对本专利包括范围的限制;只要是根据本专利所揭示精神的所作的任何等同变更或修饰,均落入本专利包括的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1