CN102508674A - 基于json进行对象化参数传递的方法及系统 - Google Patents
基于json进行对象化参数传递的方法及系统 Download PDFInfo
- Publication number
- CN102508674A CN102508674A CN2011103948799A CN201110394879A CN102508674A CN 102508674 A CN102508674 A CN 102508674A CN 2011103948799 A CN2011103948799 A CN 2011103948799A CN 201110394879 A CN201110394879 A CN 201110394879A CN 102508674 A CN102508674 A CN 102508674A
- Authority
- CN
- China
- Prior art keywords
- parameter
- json
- objectification
- page
- character string
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Machine Translation (AREA)
Abstract
本发明公开了一种基于
JSON
进行对象化参数传递的方法及系统,所述方法包括:将
json
对象转化为字符串、并将字符串作为
url
参数的值;通过
filter
拦截特定参数,并将其转化为对象;利用
action
的父类来
存储所述对象化后的参数;向参数结构中增加或减少内容,利用
ViewState
将转化成
json
对象的字符串输出到页面的
<script>
块中,形成
js
的
json
对象;
action
从父类中获取对象化的参数、并完成逻辑的处理;回到页面后,新页面从
js
中获取全局对象化参数、并进行处理。所述系统包括:转化模块;拦截模块;存储模块;形成模块;第一获取模块;及第二获取模块。本发明使得复杂参数的传参及多次传参更加易于实现。
Description
技术领域
本发明涉及一种参数传递的方法及系统,尤其涉及一种基于JSON进行对象化参数传递的方法及系统。
背景技术
现有技术中,传参的各种具体方法如下:
页面向action传参:
(1)http协议里,提供的标准url传参方式是在“问号”后面跟上参数的key和value。
(2)jsp/servlet中,利用HttpServletRequest对象,封装了参数;Js只能获取问号后面的整体,无法单独获取某个参数的值,例如:页面url请求为useinfo?username=tom&age=22,在servlet里面,获取这2个参数的方法为:String username=request.getParameter(″username″),String age=request.getParameter(″age″);js里:var search=window.1ocation.search,所述search获取的结果为username=tom&age=22,要想获得具体的参数,还需自己截取;当然js里也可以通过一些正则表达式的代码来完成单个参数值的获取。
action向页面传参:一般语言没有专门的方法,大多是要通过用户自己输出字符串的方式,或是在前台里面标签对给js赋值。
web系统页面与页面之前,页面与action之间会有很多参数的传递与交互,传统的传参方式是扁平化的,不够灵活,特别是在面对大量结构化参数的时候,如需要传递一个简单的对象信息,一个数组信息,例如:需要从url传递5个用户名和年龄到另一个页面,原有的方式可能是“userinfo.jsp?username=1,2,3,4,5&age=20,21,22,23,25”。
上述方式无论是原页面拼接参数还是action的接收参数都会很麻烦,需要接到参数后再利用split之类的函数进行分割再组装。如果是j s里面需要从url获取参数就更麻烦,因为js没有原生的获取url指定参数的方法。
现有的扁平化的传参在简单参数传递的时候很方便,但是在复杂参数传递的时候不论是原页面参数的拼接、还是接受页面参数的接受,都会很不方便,会要写多余的一些代码,并且会需要程序员进一步理解上格式转换的过程,如果只需一次传参还好,涉及到页面前action多次传参的时候,原来的方式就显得更力不从心了。本发明因此而来。
发明内容
本发明的主要目的是提供一种基于JSON进行对象化参数传递的方法及系统,用以解决现有技术中复杂参数传参及多次传参中操作复杂的技术问题。
为解决上述问题,根据本发明的一个方面,提供了一种基于JSON进行对象化参数传递的方法。
本发明的对象化传参的方法,包括:通过页面js将json对象转化为字符串、并将所述字符串作为url参数的值,以系统实现约定的key进行url参数的传递;通过filter拦截特定参数,并将其转化为对象;利用action的公共父类来存储所述对象化后的参数;向所述参数结构中增加或减少内容,利用View State将转化成json对象的字符串输出到页面的<script>块中,形成js的json对象;action从所述父类中获取对象化的参数、并完成逻辑的处理;回到页面后,新页面从js中获取全局对象化参数、并进行处理。
进一步地,将json对象转化为字符串之前还包括如下步骤:通过页面js将需要传递的参数构造成json对象。
进一步地,通过filter拦截特定参数,并将其转化为对象包括如下步骤:通过filter拦截request请求、并获取特定key的value,将所述value转化成对象。
更进一步地,利用action的公共父类来存储所述对象化后的参数包括如下步骤:将所述value转化成的对象赋值给action的公共父类的属性。
为解决上述问题,根据本发明的另一方面,提供了一种基于JSON进行对象化参数传递的系统。
本发明的对象化传参的系统,包括:转化模块:通过页面js用于将json对象转化为字符串、并将所述字符串作为url参数的值,以系统实现约定的key进行url参数的传递;拦截模块:用于通过filter拦截特定参数,并将其转化为对象;存储模块:用于利用action的公共父类来存储所述对象化后的参数;形成模块:用于向所述参数结构中增加或减少内容,利用View State将转化成json对象的字符串输出到页面的<script>块中,形成js的json对象;第一获取模块:用于使得action从所述父类中获取对象化的参数、并完成逻辑的处理;第二获取模块:用于使得新页面从js中获取全局对象化参数、并进行处理。
进一步地,所述转化模块还用于:将json对象转化为字符串之前,通过页面js将需要传递的参数构造成json对象。
进一步地,所述拦截模块还用于:通过filter拦截request请求、并获取特定key的value,将所述value转化成对象。
进一步地,所述存储模块还用于:将所述value转化成的对象赋值给action的公共父类的属性。
与现有技术相比,本发明的有益效果为:(1)在传递关联性很强的很多参数及数组类型的参数时,程序员在action层可以直接获取封装成Map或是List的对象,结构更加清晰,无需类似于split的操作;(2)页面js可以获取action传递的已经被转换成json对象的参数,直接用object.key的方式访问参数值,操作方便,便于理解。
附图说明
下面结合附图及实施例对本发明作进一步描述:
图1是根据本发明实施例的对象化传参的方法的主要步骤的示意图;
图2是根据本发明实施例的对象化传参的系统的主要模块的示意图。
图3是根据本发明实施例的对象化传参的具体流程图。
具体实施方式
以下结合具体实施例对上述方案做进一步说明。应理解,这些实施例是用于说明本发明而不限于限制本发明的范围。实施例中采用的实施条件可以根据具体厂家的条件做进一步调整,未注明的实施条件通常为常规使用的条件。
实施例
如图1所示,本发明中的技术方案主要依赖与json格式。
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人们阅读和编写,同时也易于机器解析和生成。JSON建构于两种结构:(1)“名称/值”对的集合(A collection of name/value pairs),不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组(associative array)。(2)值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
一个简单的json格式描述如下:User={name=“tom”,age=23},地址栏传递的是字符串,action也有自己的数据机构(Map,List),在不同的格式,不同的语言之间传递,自然需要解决格式之间转换的问题,js中Json tostring可以有很多框架提供方法,如Extjs,jquery等;Java中Map,listto json也有第三方类库,如json.jar;经过转换后,地址栏传递的将是这样一种格式userinfo.jsp?json={‘user’:{‘username’:’tom’,’age’=23}}。
下面将参考附图并结合实施例,来详细说明本发明。
图1是根据本发明实施例的对象化传参的方法的主要步骤的示意图。如图1所示,该方法包括如下的步骤:
步骤S1:通过页面js将需要传递的参数构造成json对象,然后再通过页面js将所述json对象转化为字符串、并将所述字符串作为url参数的值,以系统实现约定的key进行url参数的传递。
步骤S2:通过filter拦截特定参数,并将其转化为对象,具体过程包括:通过filter拦截request请求、并获取特定key的value,将所述value转化成对象。
现有技术中,参数action是从http请求的request里面获取的,request为所有action提供了参数载体;本发明中,对象化的参数为了不和原来的request内参数混淆,需要有自己的载体。
步骤S3:利用action的公共父类来存储所述对象化后的参数,具体过程包括:将所述value转化成的对象赋值给action的公共父类的属性。
步骤S4:action从所述父类中获取对象化的参数、并完成逻辑的处理。
步骤S5:filter将对象化参数输出到页面流,具体过程包括:向所述参数结构中增加或减少内容,利用View State将转化成json对象的字符串输出到页面的<script>块中,形成js的json对象。
步骤S6:回到页面后,新页面从js中获取全局对象化参数、并进行处理。
图2是根据本发明实施例的对象化传参的系统的主要模块的示意图。如图4所示,对象化传参的系统主要包括:转化模块;拦截模块;存储模块;形成模块;第一获取模块;及第二获取模块。
转化模块:用于通过页面js将json对象转化为字符串、并将所述字符串作为url参数的值,以系统实现约定的key进行url参数的传递。
所述转化模块还用于:将json对象转化为字符串之前,通过页面js将需要传递的参数构造成json对象。
拦截模块:用于通过filter拦截特定参数,并将其转化为对象。
所述拦截模块还用于:通过filter拦截request请求、并获取特定key的value,将所述value转化成对象。
存储模块:用于利用action的公共父类来存储所述对象化后的参数。
所述存储模块还用于:将所述value转化成的对象赋值给action的公共父类的属性。
形成模块:用于向所述参数结构中增加或减少内容,利用View State将转化成json对象的字符串输出到页面的<script>块中,形成js的json对象。
第一获取模块:用于使得action从所述父类中获取对象化的参数、并完成逻辑的处理。
第二获取模块:用于使得新页面从js中获取全局对象化参数、并进行处理。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
上述实例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人是能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种基于JSON进行对象化参数传递的方法,其特征在于,所述方法包括以下步骤:
通过页面js将json对象转化为字符串、并将所述字符串作为url参数的值,以系统实现约定的key进行url参数的传递;
通过filter拦截特定参数,并将其转化为对象;
利用action的公共父类来存储所述对象化后的参数;
向所述参数结构中增加或减少内容,利用View State将转化成json对象的字符串输出到页面的<script>块中,形成js的json对象;
action从所述父类中获取对象化的参数、并完成逻辑的处理;
回到页面后,新页面从js中获取全局对象化参数、并进行处理。
2.根据权利要求1所述的基于JSON进行对象化参数传递的方法,其特征在于所述方法将json对象转化为字符串之前还包括如下步骤:通过页面js将需要传递的参数构造成json对象。
3.根据权利要求2所述的基于JSON进行对象化参数传递的方法,其特征在于所述方法通过filter拦截特定参数,并将其转化为对象包括如下步骤:通过filter拦截request请求、并获取特定key的value,将所述value转化成对象。
4.根据权利要求3所述的基于JSON进行对象化参数传递的方法,其特征在于所述方法利用action的公共父类来存储所述对象化后的参数包括如下步骤:将所述value转化成的对象赋值给action的公共父类的属性。
5.一种基于JSON进行对象化参数传递的系统,其特征在于,所述系统包括:
转化模块:用于通过页面js将json对象转化为字符串、并将所述字符串作为url参数的值,以系统实现约定的key进行url参数的传递;
拦截模块:用于通过filter拦截特定参数,并将其转化为对象;
存储模块:用于利用action的公共父类来存储所述对象化后的参数;
形成模块:用于向所述参数结构中增加或减少内容,利用View State将转化成json对象的字符串输出到页面的<script>块中,形成js的json对象;
第一获取模块:用于使得action从所述父类中获取对象化的参数、并完成逻辑的处理;
第二获取模块:用于使得新页面从js中获取全局对象化参数、并进行处理。
6.根据权利要求5所述的基于JSON进行对象化参数传递的系统,其特征在于,所述转化模块还用于将json对象转化为字符串之前,通过页面js将需要传递的参数构造成json对象。
7.根据权利要求6所述的基于JSON进行对象化参数传递的系统,其特征在于,所述拦截模块还用于通过filter拦截request请求、并获取特定key的value,将所述value转化成对象。
8.根据权利要求7所述的基于JSON进行对象化参数传递的系统,其特征在于,所述存储模块还用于将所述value转化成的对象赋值给action的公共父类的属性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103948799A CN102508674A (zh) | 2011-12-02 | 2011-12-02 | 基于json进行对象化参数传递的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011103948799A CN102508674A (zh) | 2011-12-02 | 2011-12-02 | 基于json进行对象化参数传递的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102508674A true CN102508674A (zh) | 2012-06-20 |
Family
ID=46220766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011103948799A Pending CN102508674A (zh) | 2011-12-02 | 2011-12-02 | 基于json进行对象化参数传递的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102508674A (zh) |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104537305A (zh) * | 2014-12-31 | 2015-04-22 | 北京奇虎科技有限公司 | 网站漏洞检测方法和系统 |
CN105068801A (zh) * | 2015-08-06 | 2015-11-18 | 福建天晴数码有限公司 | 修改json日期格式的方法及系统 |
CN105426448A (zh) * | 2015-11-06 | 2016-03-23 | 广州华多网络科技有限公司 | 界面显示方法、装置及系统 |
CN105677803A (zh) * | 2015-12-31 | 2016-06-15 | 清华大学 | 水文时序数据的json格式设定方法 |
CN105993010A (zh) * | 2014-02-11 | 2016-10-05 | 德州仪器公司 | 用以提供扩展对象符号数据的方法及设备 |
CN106599213A (zh) * | 2016-12-16 | 2017-04-26 | 车智互联(北京)科技有限公司 | 一种表单自动填充方法和系统 |
CN107577941A (zh) * | 2013-12-20 | 2018-01-12 | 北京奇安信科技有限公司 | 拦截编码绕过的方法及设备 |
US9912780B2 (en) | 2015-05-05 | 2018-03-06 | Ford Global Technologies, Llc | Method and apparatus for module remote request handling |
CN107818020A (zh) * | 2016-09-12 | 2018-03-20 | 平安科技(深圳)有限公司 | 参数传递方法和装置 |
CN107948120A (zh) * | 2016-10-12 | 2018-04-20 | 阿里巴巴集团控股有限公司 | 漏洞检测方法和装置 |
CN108021593A (zh) * | 2016-11-03 | 2018-05-11 | 北京金山云网络技术有限公司 | 一种信息传递方法、装置及浏览器 |
CN108170408A (zh) * | 2016-12-05 | 2018-06-15 | 北京国双科技有限公司 | Js对象定义的生成方法及装置 |
CN109614560A (zh) * | 2018-12-04 | 2019-04-12 | 大唐网络有限公司 | 一种基于nodejs的url传参方法 |
CN109684607A (zh) * | 2017-10-19 | 2019-04-26 | 腾讯科技(深圳)有限公司 | Json数据解析方法、装置、计算机设备和存储介质 |
CN111078219A (zh) * | 2019-12-13 | 2020-04-28 | 北京金山云网络技术有限公司 | 页面显示方法、装置、系统、电子设备及存储介质 |
CN113448654A (zh) * | 2020-12-07 | 2021-09-28 | 北京新氧科技有限公司 | web应用程序与原生应用程序的交互方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697119A (zh) * | 2009-10-12 | 2010-04-21 | 南京联创科技集团股份有限公司 | 基于JavaBean类导入格式取代传统URL访问地址的实现方法 |
-
2011
- 2011-12-02 CN CN2011103948799A patent/CN102508674A/zh active Pending
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101697119A (zh) * | 2009-10-12 | 2010-04-21 | 南京联创科技集团股份有限公司 | 基于JavaBean类导入格式取代传统URL访问地址的实现方法 |
Non-Patent Citations (2)
Title |
---|
兰素秋等: "数据交换格式的研究和应用", 《电脑与电信》 * |
杨树林等: "JSON数据交换格式及其在数据验证中的应用", 《北京印刷学院学报》 * |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107577941B (zh) * | 2013-12-20 | 2020-08-28 | 奇安信科技集团股份有限公司 | 拦截编码绕过的方法及设备 |
CN107577941A (zh) * | 2013-12-20 | 2018-01-12 | 北京奇安信科技有限公司 | 拦截编码绕过的方法及设备 |
CN105993010A (zh) * | 2014-02-11 | 2016-10-05 | 德州仪器公司 | 用以提供扩展对象符号数据的方法及设备 |
CN104537305A (zh) * | 2014-12-31 | 2015-04-22 | 北京奇虎科技有限公司 | 网站漏洞检测方法和系统 |
CN104537305B (zh) * | 2014-12-31 | 2017-12-15 | 北京奇安信科技有限公司 | 网站漏洞检测方法和系统 |
US9912780B2 (en) | 2015-05-05 | 2018-03-06 | Ford Global Technologies, Llc | Method and apparatus for module remote request handling |
CN105068801A (zh) * | 2015-08-06 | 2015-11-18 | 福建天晴数码有限公司 | 修改json日期格式的方法及系统 |
CN105426448A (zh) * | 2015-11-06 | 2016-03-23 | 广州华多网络科技有限公司 | 界面显示方法、装置及系统 |
CN105426448B (zh) * | 2015-11-06 | 2019-04-16 | 广州华多网络科技有限公司 | 界面显示方法、装置及系统 |
CN105677803A (zh) * | 2015-12-31 | 2016-06-15 | 清华大学 | 水文时序数据的json格式设定方法 |
CN105677803B (zh) * | 2015-12-31 | 2019-07-02 | 清华大学 | 水文时序数据的json格式设定方法 |
CN107818020A (zh) * | 2016-09-12 | 2018-03-20 | 平安科技(深圳)有限公司 | 参数传递方法和装置 |
CN107948120A (zh) * | 2016-10-12 | 2018-04-20 | 阿里巴巴集团控股有限公司 | 漏洞检测方法和装置 |
CN107948120B (zh) * | 2016-10-12 | 2020-11-24 | 阿里巴巴集团控股有限公司 | 漏洞检测方法和装置 |
CN108021593B (zh) * | 2016-11-03 | 2020-05-08 | 北京金山云网络技术有限公司 | 一种信息传递方法、装置及浏览器 |
CN108021593A (zh) * | 2016-11-03 | 2018-05-11 | 北京金山云网络技术有限公司 | 一种信息传递方法、装置及浏览器 |
CN108170408A (zh) * | 2016-12-05 | 2018-06-15 | 北京国双科技有限公司 | Js对象定义的生成方法及装置 |
CN106599213A (zh) * | 2016-12-16 | 2017-04-26 | 车智互联(北京)科技有限公司 | 一种表单自动填充方法和系统 |
CN109684607A (zh) * | 2017-10-19 | 2019-04-26 | 腾讯科技(深圳)有限公司 | Json数据解析方法、装置、计算机设备和存储介质 |
CN109614560A (zh) * | 2018-12-04 | 2019-04-12 | 大唐网络有限公司 | 一种基于nodejs的url传参方法 |
CN111078219A (zh) * | 2019-12-13 | 2020-04-28 | 北京金山云网络技术有限公司 | 页面显示方法、装置、系统、电子设备及存储介质 |
CN111078219B (zh) * | 2019-12-13 | 2023-10-03 | 北京金山云网络技术有限公司 | 页面显示方法、装置、系统、电子设备及存储介质 |
CN113448654A (zh) * | 2020-12-07 | 2021-09-28 | 北京新氧科技有限公司 | web应用程序与原生应用程序的交互方法及装置 |
CN113448654B (zh) * | 2020-12-07 | 2024-03-01 | 北京新氧科技有限公司 | web应用程序与原生应用程序的交互方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102508674A (zh) | 基于json进行对象化参数传递的方法及系统 | |
US8572157B2 (en) | Configuration based approach to unify web services | |
CN103210386B (zh) | 混合联合搜索的方法、系统和设备 | |
Jara et al. | IPv6 addressing proxy: Mapping native addressing from legacy technologies and devices to the Internet of Things (IPv6) | |
US20130191509A1 (en) | Techniques to provide proxies for web services | |
KR20040014999A (ko) | Xml 문서를 xml 문법 규칙 세트의 서브세트에 따라구성된 적어도 하나의 xml 문서로 변환하기 위한 방법및 시스템 | |
US20110258192A1 (en) | Providing question and answer services | |
US20130036167A1 (en) | Automatic synchronization of clipboards | |
CN110727417B (zh) | 一种数据处理方法和装置 | |
US10754628B2 (en) | Extracting web API endpoint data from source code to identify potential security threats | |
CN101655943A (zh) | 企业应用集成工作流管理方法及系统 | |
US11281438B2 (en) | Platform for web services development and method therefor | |
WO2021093673A1 (zh) | 邮件发送方法、装置、设备及计算机可读存储介质 | |
CN100511140C (zh) | 构件化软件系统实现脚本语言调用多输出参数接口的方法 | |
JP2019512776A (ja) | 言語認識方法、装置、及びシステム | |
CN110704200A (zh) | 转换调用接口的方法和装置 | |
CN110263279A (zh) | 页面生成方法、装置、电子设备和计算机可读存储介质 | |
CN105306542B (zh) | 一种用于集成Web服务的系统 | |
JP2017041158A (ja) | Api変換テーブル生成装置、api変換テーブル生成方法、および、api変換テーブル生成プログラム | |
Miller | Internet technologies and information services | |
CN109271160A (zh) | 活动规则组建方法、装置和计算机系统、介质 | |
KR101331854B1 (ko) | 오픈 api 통합 검색 및 매쉬업 블록 기반코드 생성 장치 및 그 방법 | |
AlShahwan et al. | Mobile cloud computing for providing complex mobile web services | |
CN104143110A (zh) | 带网址信息的二维码生成方法 | |
CN106528175B (zh) | 面向bs架构的数据接口生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120620 |