计算机系统应用
2008年第4期
Web页面间信息传递方法的效果研究
Research
on
theEffectofMethodstoTransferDatabetween
Web
Pages
杨育标徐炳文(广东岭南职业技术学院广东广州510301)
摘要:在Web应用系统的开发中,页面间的信息传递是系统必不可少技术,是否选用合适的传递方法。将影响
Web应用系统的安全性、可靠・t#-和性能。本文首先对各种Web页面间的信息传递技术进行归纳分类,然后就各种类型的传递方法对Web应用系统的安全性、可靠性、性能、灵活性、应用范围、应用限制等方面的影响进行分析探讨。
关键词:Web应用页面信息传递安全性可靠性
1
引言
随着Intemet的普及相关技术的进步,越来越多的
面的链接,其中包含国籍和语言的信息:
<a
href=。navi_page.aspx?country=China&
应用系统转向B/S结构或以浏览器为客户端的多层结
Language=Chinese。>目标页面的超链接</a>在目标页面,可以使用Request对象的QueryString属性取出传递过来的信息,例如对上面的<a>标记中传递过来的信息,可以用如下的代码取出信息:
Dimstrl,str2AsString
构。这些Web应用程序使用的是岍p协议,客户端
与Web服务器之间仅是请求与响应之间的关系,服务器不保留与客户端的连接状态,客户端访问任意的两个Web页面实际上是与Web服务器的两次连接,这就造成了在两个Web页面之间传递信息的困难。可喜的是技术的进步,已有多种方法可以实现Web页面间信息的传递,但是不同的传递方法在安全性、可靠性、应用范围、灵活性上有所不同。因此,深入研究各种Web页面间信息的传递方法及传递效果,对于开发安全性高、性能好的Web应用程序有重要的现实意义。
strl=Request.QueryString(。country。)
str2=Request.QueryString(。Language。)在目前流行的可视化开发工具中,提供了构建超链接的控件,该类控件的功能本质上与<a>标记是相同的,因此也可以用其进行信息传递,其构建传递信息与获取信息的方法与使用<a>标记的信息传递方法相同。
2
2.2使用Redirect方法传递信息
Web页面问传递信息的方法分类
在Web页面间传递信息的方法有多种,归纳其来
上面信息传送方法中,信息是以硬编码的方式存在Web页面中的,Web页面一旦设计完成,所传递的信息就固定了。使用Response对象的Redired方法传
有以下六种类型:
2.1用<a>标记或相应功能的超链接控件进行信息传递
H1.ML的<a>标记的主要用途是用于导航到某个目标页面,可以同时用来传递信息。具体做法是在<a>标记的href属性中,把要传递的信息作为href参数的一部分,与表示目标页面的URL之间用“?”符号(英文的问号)隔开,如果要传递的信息有几个,信息之间用“影号分隔。下例是一个导航到navi_page.aspx页
送信息,可克NI-面的传递方法的灵活性问题,下面的
示例把源页面中两处用户的输入传递到目标页面:
a=TextBoxl.Text
b=TextBox2.Text
Response.Redired(”navi—page.aspx?country=
。+a+。&anguage=。+b)
获取Redired方法传送的信息与获取<a>标记
万方数据
2008年第4期中传送过来的信息完全相同,例如在目标页面获取源页面中传递过来a、b变量的值与获取<a>标记中传送过来的信息的代码完全相同,实际上,这两类传递方法都属于所谓的传递“查询字符串”。2.3使用get方法和post方法
这两种方法用于把当前页面中的文本框或隐藏域中的信息发送到目标页面,实现的方法是在源页面的<form>标记的action属性指定接收信息的目标页面,同时在method属性使用get或post关键字指定发送信息的方式,下面的示例是把当前页面中文本框中的信息传递到navi__page.asp页面:
<formid=“Forml。action=。navi_page.asp。method=。get。runat=。server。>
获取get方法传递的信息也使用Request对象的QueryString属性,下面的示例代码在目标页面获取源页面中“Te×f1”文本框中的信息:
Datal=Request.QueryString(。Textl。)
如果把上面的get方法中的get关键字改为post关键字,就是post的传递方法,同样可以在页面间传递信息,但在安全性和性能方面与get方法有所不同。在目标页面获取post方法传递的信息不是使用Re-quest对象的Quen/String属性来获取,而是使用Form属性来获取¨’,下面示例是获取源页面中“Textl”文本框中的值的代码:
Datal=Request.Form(。TeX¨。)
Server对象的Transfer方法
在新一代的Web应用程序开发平台,出现了新的
信息传递方法,.NET平台的ASP.NET中的Server对象的Transfer方法就是其中的一个代表,它不但可以传递源页面中的基本数据类型数据,还可以传递数组、图片数据和自定义的数据类型的数据,下面是在Web页面问传送图片数据的例子。
首先,在源页面定义一个应用程序范围的共享
对象:
FriendmylmageAsNew..
System.Web.UI.WebControls.Image
然后准备图片数据,再用Transfer方法导航到目’
mylmage.ImageUd=。images\gd30002.jPg。Server.Transfer(。navi_page.aspx。)
万
方数据计算机系统应用
在目标页面,使用HflpConte对类的对象的Han-dler属性获取Http请求,并转换为封装传递的信息类型(即源页面的类型,如下例中的WebForml类),然后就可以通过转换后的对象属性访问所传递的值。以下的示例是获取传递的图片数据并在目标页面的Image控件(Imagel)中显示出来:
DimsourcepageAsWebForml‘
sourcepage
=
CType(Context.Handler,
WebForml)
Imagel.ImageUd=sourcepage.mylmage.Ima—
geUrl
在上面的信息传递方法中,信息只能从第一个页面传送到第二个页面,不能在第三个页面获取传递的信息。而在实际应用中,有时需要信息在多个页面中进行传递,例如网上购物系统,用户进入购物站点浏览多个页面并购买多种商品,就需要该用户的信息及用户在各页面所进行的操作结果能在他所浏览的多个页面之间进行传递。解决这类在多个页面之间传递信息可以通Session对象用于管理一个用户对站点的一次访问的信息,不管在这次访问中访问了多少页面,保存在Session(。Cad。)=MyHashCad
在其他页面,可以用简单的方法把Session对象传DimMyHashCart
As
Hashtable
扦Session(。Cart。)IsNothingThenMyHashCad=NewHashtable
Else
MyHashCart=Session(。Cart。)
End忏
2.5跨越多个Web页面的信息传递
过Web应用的内置对象来解决,根据应用的范围不同,可以分为Application对象,Session对象和Cooke。2.5.1使用Session对象传递信息
这个Session对象中的信息在这些页面中都有效,能够在任何页面获取这个对象中传递的信息,或修改保存在这个对象中的信息。该对象的使用很简单,可以不先声明而直接使用,下面的示例是在某一页面把作为购物车存储结构的哈希表“MyHashCart”保存在Ses—sion对象中:
递的内容取出,下面的代码是取出Session对象所传递的哈希表:
2.4
标页面:
计算机系统应用2008年第4期
2.5.2使用Application对象传递信息
Application对象又称全局对象,该类对象的信息能够被所有的用户在任何页面共同使用,它的生命周期是从该应用程序的第一个页面执行开始,直到网站关闭为止。如果是传递全局性的信息就可以使用该类对象,通常是使用Application对象存储Web应用系统的控制参数,其使用方法与Session对象类似,以下的例子是在任意页面检查’Web服务器的状态变量:
Status=Application(。Server_Status”)
是实现方法的不同,对Web应用程序的安全性、可靠性、灵活性、性能的影响也不同,应用范围也有所不同,下面就这些相关问题进行探讨。3.1安全性
就安全性方面来探究,在Web页面问传递信息的方法中,第1种类型的方法有明显的安全缺陷,用这种方法传递的信息,在鼠标指向源页面的超链接时,传递的信息会在浏览器的状态栏中显示出来。在导航到目标页面后,传递的信息还会在浏览器的地址栏中显示出来,显然这种方法不能用来传递机密信息。第2种类型的方法和第3种类型的get方法也有安全性问题,在导航到目标页面过程中,传递的信息也会在浏览器的地址栏中显示出来。除了信息暴露的安全问题外,这些类型的传递方法还有非法的数据修改的安全问题,当传递的信息显示在地址栏时用户可以修改其信息,并把被非法修改的信息发送到目标页面,如果这些信息是目标页面的查询参数,就可能使用户看到未经授权查看的内容。此外,这些方法都是以字符串的形式传递信息,不能传递二进制信息,而在实际应用中,用标准加密法加密的信息是以二进制的形式存在的,因此从信息加密的角度看,这些方法也不利于提高传递信息的安全性。
使用Post方法来传递源页面中的文本框或隐藏域中的信息具有信息隐藏的功能,信息在传递过程中
2.5.3使用Cookie传递信息
对于特定的计算机用户来说,Cookie也可以用来在多个页面间传递信息,Cookie实际上是Web服务器保存在用户硬盘上的一段文本,位于计算机的客户端的DocumentandSetlings目录下的特定用户目录的Cookies子目录下。因此使用Cookie在页面间传递信息仅是对特定的计算机的特定操作操作系统用户而言,而不是Web应用系统的用户。Cookie的生命周期可以自行定义,因而可以跨越对Web服务器的多次访问,这比Session对象的信息传递在时间上有更大的跨度。下例是在Cookie中写入信息的示例代码:
Response.Cookies(。User。).Value=。张三。
Response.Cookies(。User。).Expires=一DateTime.Now.AddDays(5)
下面是在另一次访问中读出以前写入的信息的示例代码:
。IfNot
t-.
Request.Cookies(”User。)IsNothing
Then
不会暴露出来,也可以防止非法的数据修改,但它也无法传递以二进制形式存在的加密信息。
Cookie的传递信息方法也有明显的安全性缺陷,因为传递的信息是存放在客户机硬盘的固定位置上,不仅信息暴露,而且可被篡改,因此不适合传递重要的信息。
在防止信息暴露和信息非法修改方面,transfer方法、数据库转接方法等都有很好的表现,它们还可以传递多种类型的数据,如加密的二进制数据,这使信息的传递更加安全。相比之下,.NET平台的Transfer方法,
TextBoxl.Text=Request.Cookies(。User。).ValueEndlf
2.6通过数据库转接在Web页面问传递信息
这种方法的传递是在源页面把信息存八数据库,导航到目标页面之后再把在源页面中存入数据库中的信息取出来,它同样可以跨越多个页面来传递信息。在实际使用中,由于Web应用系统中可能有很多的用户同时进行操作,因此存在着如何确定用户与信息的对应关系统的问题,通常是结合Session对象一起使用,在源页面把要传递的信息及用户SessionlD号同时存入数据库,在目标页面根据用户的SessionlD号把源页面中存入的信息取出。
在安全性上更妩不仅传递的信息不暴露,甚至导航到
目标页面后,目标页面的URL也不显示出来,仍然显示源页面的URL。3.2可靠性
不同的传递方法对Web应用程序的可靠性的影响主
3信息传递效果的分析研究+
虽然有多种方法可用于Web页面间传递信息,但
40
研究开发Re∞a№handDevelopment
要表现在数据类型的转换引起的不可靠性、非法修改引起的不可靠性、以及数据量超限引起的不可靠性。
万方数据
2008年第4期
计算机系统应用
实际的业务过程中,需要传递的信息有多种多样看,反应速度较慢,但对服务器的性能的影响不是很的数据类型,如:数值、字符、日期、对象等,而前3种类大。当传递的信息量很大时,因为它不占用Web服务型传递方法的,都是把信息作为字符串来传递,即对于器的内存资源,将有利于保证Web应用系统的性能和非字符串的数据也是作为字符串来传递,在目标页面可扩展性。
。
接收到后,再转换为原来的数据类型,这有可能出现字3.4灵活性与简单性
符串不能正确地转换成数值或日期数据的情况,从而在简单性和灵活性方面,第一种类型的传递方法导致系统出错。对于所谓的“查询字符串”的传递方实现起来是最简单的,但它缺乏灵活性,要传递的内容法,还会因其传递的信息出现在地址栏,由此引起的非只能在页面的设计中确定。其他类型的信息传递方法修改信息而使系统出错。
法,都具有好的灵活性,能够传递用户动态设定的内值得注意的是有些传递方法对传递的信息量是有容。就实现难度来说,Transfer方法和数据库转接等方限制的,当传递的信息量超出限制就可能引起信息的丢法,实现起来稍为复杂。失或者系统出错。上述传递方法的前两种类型和第33.5应用范围及限制
种类型的get传递方法,传递的信息量就是有限制的,虽为了正确的使用Web页面间信息的传递方法,还然信息量的限制根据浏览器的版本不同有所差异,但通要注意不同传递方法的应用范围和限制。Application常就是几KB。因此,如果使用redired方法和get方法对象传递的信息可以在所有用户、所有页面之间进行,来传递用户在文本框中的输入内容,设计时就要考虑到具有最广泛的应用范围,但这种方法的信息共享有可户的输入数据量是有很大差异的,在程序中应对用户的能导致信息的相互覆盖,影响传递信息的准确性,因此输入数据进行长度验证,避免信息传递的不完整。
使用该类对象要考虑周到,避免一个用户的信息被另在传递方法中可以避免类型转换的有transfer方一用户的信息覆盖。使用Session对象的信息的传送法、数据库转接方法、Session对象等传递方法,它们可方法可以跨越多个页面传递信息,但只有同一用户才以传递各种类型的数据。若要传递大数据量的信息可能够存取。使用Cooke的传递方法能在某台客户机采用Post方法、transfer方法和数据库转接方法。和服务器之间传递信息,并可定义有效期,因此该方式3.3对性能的影响
的有效范围大于Session方法的应用范围。但当客户不同传递方法对性能的影响体现在两个方面,一端的浏览器禁止使用CooI(je时,信息的传递将无法进是对Web服务器性能的影响,另一是对用户请求面页行。数据库转接的方法就时间上或页面范围方面来的响应速度的影响。
讲,没有什么限制,但它总是要与其他的对象结合使使用Application对象和Session对象进行的信息用,因此其应用范围实际上取决于其结合使用的对象传递,是通过Web服务器的内存来实现的,从用户感的生命周期。除此之外的其他方法的应用范围都是只觉的反应速度来看是很快的,但大量的使用这些对象能在某特定的两个页面问传递信息。
来传递信息或传递大数据量的信息,将占用大量的服应用限制的另一个要注意的问题是不同的Web务器内存,增加Web服务器的负担,导致服务器性能应用开发平台和工具,其传递信息方法可能有所变化,的下降,特别是Application对象由于其生命周期很长,例如,在ASP.NET中已经不能用第三种类型的方法来对服务器的影响更加显著。
导航到目标页面,因而也不能使用这种类型的方法来第1至第4种类型的方法,其传递信息存在于访在Web页面间传递信息。
问请求或Web页面中,这些方法的传递信息仅在进行处理时短暂地占用服务器的内存和CPU,对服务器的4结束语
性能影响较小,但每次都要从请求或Web页面中提取从上面的分析探讨可知,Web页面间进行信息传信息,因此从用户感觉来看,反应速度稍慢。
递的方法有很多种,不同的实现方法在安全性、稳定使用数据库转接的方法,需要经过较多的中间环性、性能、灵活性方面有所不同,各有其优、缺点。在
节,包括数据库的连接和存储操作,因而从用户感觉来
(下转第50页)
万
方数据
计算机系统应用
2008年第4期
Specificationv1.1.30Jan。2007.
6Bosenberg。J.,Schulzrinne,H.。Camarillo。G..SIP:SessionInitiationProtoc01.RFC3261。June2002.7
务开发者提供了简单强大的煳L配置方式以及丰富
易用的通用资源,适合于开发NGN网络尤其是3G网络的各种增值业务,具有现实意义。虽然XJoin框架在一定程度上增加了业务开发人员学习框架的培训成本,但是相比于业务的开发维护成本的降低,以及应用程序稳定性的提高,这部分成本是值得的。
文献[13]指出了现有的基于构件的软件架构的两点不足,各个构件是固定和被动的,构件间的连线是“笨拙”的,并提出了一种新的基于移动Agent技术的构件软件框架,具有较强的网络环境的动态适应性。但是,该技术目前尚不成熟,X.Ioin未加以采用。可以对移动Agent技术进行进一步研究,并利用该技术对XJoin框架加以完善和扩展,以进一步增加框架的灵活性。
8
Zhuweisky。NET通信框架的设计、实现与应用.ht・
tp://zhuweisky.cnblogs.com.BarryD,Smaragdakis
Y.Object—Oriented
frameworks
andproduct—lines.In:DonohoeP。ed.Proceedingsofthe1stSoftwareProductLineConference.Dordrecht:Kluwer,2000,227—247.
9刘瑜,张世琨,王立福,杨芙清.基于构件的软件框架与角色扩展形态研究.软件学报,2003,14(8):1365
—1370.
10DouglasC.Schmidt,AniruddhaGokhale,Balachand—
ran
Natarajan.LeveragingQueue.July/August
application
framework.
参考文献
1l
ACM2004:66-75.
EricBruneton.ASM3.0:AJavabytecodeengineering
l刘韵洁.下一代网络的发展趋势——融舍与开放.电
信科学,2005,2:l一6.
2
PatrickLightbody,JasonCarreira,eta1.WebWorkinAction.http://www.opensymphony.com/webwork.。
12
library.2007.http://download.forge.objectweb.
org/asm/asm—guide.pdf
RodJohnson,JuergenHoeller,eta1.Springrefer-
ence:Springjava/j2eeApplicationFramework.ht—
3林泊,周明辉等.一个J2EE应用服务器的web容器集成框架.软件学报,2006,17(5):1198—1203.
4SunMicrosystems。Inc.JSR240:JAiSLEE1.1Speci.fieation,ProposedFinalDraft.JAi,24Aug,20075
NasirKhan.BEASystemsInc.JSR289:SIPServlet
tp://static.springframework.org/spring/does/2.0.x/
reference/index.html
13吕建,张呜,廖宇,陶先平.基于移动Agent技术的构
件软件框架研究.软件学报,2000,11(8):1018
—1023.
(上接第4l页)
Web应用系统的开发中,究竟应选择何种实现方法?这要根据实际情况,包括所选择的开发平台及工具来确定,没有统一的选择标准。事实上,大多数的应用系统会同时使用多种信息传递方法,例如在进行统计和系统的全局控制时,使用Application对象来传递信息:在用户管理上使用Session对象跟踪用户的操作结果,此外还会选用其他的一种以上的仅能在特定的两个Web页面之间传递信息的方法。要强调的是不管选用
l邹天思,孙明丽,庞娅娟.ASP开发技术大全[M].北京:人民邮电出版社,2007.272—298.
什么方法进行页面间传递信息,要充分了解该方法所带来的影响,并采取适当的措施来弥补,同时做好测试和检验工作。
参考文献
万方数据
Web页面间信息传递方法的效果研究
作者:作者单位:刊名:英文刊名:年,卷(期):
杨育标, 徐炳文
广东岭南职业技术学院,广东广州,510301计算机系统应用
COMPUTER SYSTEMS & APPLICATIONS2008(4)
参考文献(1条)
1.邹天思;孙明丽;庞娅娟 ASP开发技术大全 2007
本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjxtyy200804010.aspx
计算机系统应用
2008年第4期
Web页面间信息传递方法的效果研究
Research
on
theEffectofMethodstoTransferDatabetween
Web
Pages
杨育标徐炳文(广东岭南职业技术学院广东广州510301)
摘要:在Web应用系统的开发中,页面间的信息传递是系统必不可少技术,是否选用合适的传递方法。将影响
Web应用系统的安全性、可靠・t#-和性能。本文首先对各种Web页面间的信息传递技术进行归纳分类,然后就各种类型的传递方法对Web应用系统的安全性、可靠性、性能、灵活性、应用范围、应用限制等方面的影响进行分析探讨。
关键词:Web应用页面信息传递安全性可靠性
1
引言
随着Intemet的普及相关技术的进步,越来越多的
面的链接,其中包含国籍和语言的信息:
<a
href=。navi_page.aspx?country=China&
应用系统转向B/S结构或以浏览器为客户端的多层结
Language=Chinese。>目标页面的超链接</a>在目标页面,可以使用Request对象的QueryString属性取出传递过来的信息,例如对上面的<a>标记中传递过来的信息,可以用如下的代码取出信息:
Dimstrl,str2AsString
构。这些Web应用程序使用的是岍p协议,客户端
与Web服务器之间仅是请求与响应之间的关系,服务器不保留与客户端的连接状态,客户端访问任意的两个Web页面实际上是与Web服务器的两次连接,这就造成了在两个Web页面之间传递信息的困难。可喜的是技术的进步,已有多种方法可以实现Web页面间信息的传递,但是不同的传递方法在安全性、可靠性、应用范围、灵活性上有所不同。因此,深入研究各种Web页面间信息的传递方法及传递效果,对于开发安全性高、性能好的Web应用程序有重要的现实意义。
strl=Request.QueryString(。country。)
str2=Request.QueryString(。Language。)在目前流行的可视化开发工具中,提供了构建超链接的控件,该类控件的功能本质上与<a>标记是相同的,因此也可以用其进行信息传递,其构建传递信息与获取信息的方法与使用<a>标记的信息传递方法相同。
2
2.2使用Redirect方法传递信息
Web页面问传递信息的方法分类
在Web页面间传递信息的方法有多种,归纳其来
上面信息传送方法中,信息是以硬编码的方式存在Web页面中的,Web页面一旦设计完成,所传递的信息就固定了。使用Response对象的Redired方法传
有以下六种类型:
2.1用<a>标记或相应功能的超链接控件进行信息传递
H1.ML的<a>标记的主要用途是用于导航到某个目标页面,可以同时用来传递信息。具体做法是在<a>标记的href属性中,把要传递的信息作为href参数的一部分,与表示目标页面的URL之间用“?”符号(英文的问号)隔开,如果要传递的信息有几个,信息之间用“影号分隔。下例是一个导航到navi_page.aspx页
送信息,可克NI-面的传递方法的灵活性问题,下面的
示例把源页面中两处用户的输入传递到目标页面:
a=TextBoxl.Text
b=TextBox2.Text
Response.Redired(”navi—page.aspx?country=
。+a+。&anguage=。+b)
获取Redired方法传送的信息与获取<a>标记
万方数据
2008年第4期中传送过来的信息完全相同,例如在目标页面获取源页面中传递过来a、b变量的值与获取<a>标记中传送过来的信息的代码完全相同,实际上,这两类传递方法都属于所谓的传递“查询字符串”。2.3使用get方法和post方法
这两种方法用于把当前页面中的文本框或隐藏域中的信息发送到目标页面,实现的方法是在源页面的<form>标记的action属性指定接收信息的目标页面,同时在method属性使用get或post关键字指定发送信息的方式,下面的示例是把当前页面中文本框中的信息传递到navi__page.asp页面:
<formid=“Forml。action=。navi_page.asp。method=。get。runat=。server。>
获取get方法传递的信息也使用Request对象的QueryString属性,下面的示例代码在目标页面获取源页面中“Te×f1”文本框中的信息:
Datal=Request.QueryString(。Textl。)
如果把上面的get方法中的get关键字改为post关键字,就是post的传递方法,同样可以在页面间传递信息,但在安全性和性能方面与get方法有所不同。在目标页面获取post方法传递的信息不是使用Re-quest对象的Quen/String属性来获取,而是使用Form属性来获取¨’,下面示例是获取源页面中“Textl”文本框中的值的代码:
Datal=Request.Form(。TeX¨。)
Server对象的Transfer方法
在新一代的Web应用程序开发平台,出现了新的
信息传递方法,.NET平台的ASP.NET中的Server对象的Transfer方法就是其中的一个代表,它不但可以传递源页面中的基本数据类型数据,还可以传递数组、图片数据和自定义的数据类型的数据,下面是在Web页面问传送图片数据的例子。
首先,在源页面定义一个应用程序范围的共享
对象:
FriendmylmageAsNew..
System.Web.UI.WebControls.Image
然后准备图片数据,再用Transfer方法导航到目’
mylmage.ImageUd=。images\gd30002.jPg。Server.Transfer(。navi_page.aspx。)
万
方数据计算机系统应用
在目标页面,使用HflpConte对类的对象的Han-dler属性获取Http请求,并转换为封装传递的信息类型(即源页面的类型,如下例中的WebForml类),然后就可以通过转换后的对象属性访问所传递的值。以下的示例是获取传递的图片数据并在目标页面的Image控件(Imagel)中显示出来:
DimsourcepageAsWebForml‘
sourcepage
=
CType(Context.Handler,
WebForml)
Imagel.ImageUd=sourcepage.mylmage.Ima—
geUrl
在上面的信息传递方法中,信息只能从第一个页面传送到第二个页面,不能在第三个页面获取传递的信息。而在实际应用中,有时需要信息在多个页面中进行传递,例如网上购物系统,用户进入购物站点浏览多个页面并购买多种商品,就需要该用户的信息及用户在各页面所进行的操作结果能在他所浏览的多个页面之间进行传递。解决这类在多个页面之间传递信息可以通Session对象用于管理一个用户对站点的一次访问的信息,不管在这次访问中访问了多少页面,保存在Session(。Cad。)=MyHashCad
在其他页面,可以用简单的方法把Session对象传DimMyHashCart
As
Hashtable
扦Session(。Cart。)IsNothingThenMyHashCad=NewHashtable
Else
MyHashCart=Session(。Cart。)
End忏
2.5跨越多个Web页面的信息传递
过Web应用的内置对象来解决,根据应用的范围不同,可以分为Application对象,Session对象和Cooke。2.5.1使用Session对象传递信息
这个Session对象中的信息在这些页面中都有效,能够在任何页面获取这个对象中传递的信息,或修改保存在这个对象中的信息。该对象的使用很简单,可以不先声明而直接使用,下面的示例是在某一页面把作为购物车存储结构的哈希表“MyHashCart”保存在Ses—sion对象中:
递的内容取出,下面的代码是取出Session对象所传递的哈希表:
2.4
标页面:
计算机系统应用2008年第4期
2.5.2使用Application对象传递信息
Application对象又称全局对象,该类对象的信息能够被所有的用户在任何页面共同使用,它的生命周期是从该应用程序的第一个页面执行开始,直到网站关闭为止。如果是传递全局性的信息就可以使用该类对象,通常是使用Application对象存储Web应用系统的控制参数,其使用方法与Session对象类似,以下的例子是在任意页面检查’Web服务器的状态变量:
Status=Application(。Server_Status”)
是实现方法的不同,对Web应用程序的安全性、可靠性、灵活性、性能的影响也不同,应用范围也有所不同,下面就这些相关问题进行探讨。3.1安全性
就安全性方面来探究,在Web页面问传递信息的方法中,第1种类型的方法有明显的安全缺陷,用这种方法传递的信息,在鼠标指向源页面的超链接时,传递的信息会在浏览器的状态栏中显示出来。在导航到目标页面后,传递的信息还会在浏览器的地址栏中显示出来,显然这种方法不能用来传递机密信息。第2种类型的方法和第3种类型的get方法也有安全性问题,在导航到目标页面过程中,传递的信息也会在浏览器的地址栏中显示出来。除了信息暴露的安全问题外,这些类型的传递方法还有非法的数据修改的安全问题,当传递的信息显示在地址栏时用户可以修改其信息,并把被非法修改的信息发送到目标页面,如果这些信息是目标页面的查询参数,就可能使用户看到未经授权查看的内容。此外,这些方法都是以字符串的形式传递信息,不能传递二进制信息,而在实际应用中,用标准加密法加密的信息是以二进制的形式存在的,因此从信息加密的角度看,这些方法也不利于提高传递信息的安全性。
使用Post方法来传递源页面中的文本框或隐藏域中的信息具有信息隐藏的功能,信息在传递过程中
2.5.3使用Cookie传递信息
对于特定的计算机用户来说,Cookie也可以用来在多个页面间传递信息,Cookie实际上是Web服务器保存在用户硬盘上的一段文本,位于计算机的客户端的DocumentandSetlings目录下的特定用户目录的Cookies子目录下。因此使用Cookie在页面间传递信息仅是对特定的计算机的特定操作操作系统用户而言,而不是Web应用系统的用户。Cookie的生命周期可以自行定义,因而可以跨越对Web服务器的多次访问,这比Session对象的信息传递在时间上有更大的跨度。下例是在Cookie中写入信息的示例代码:
Response.Cookies(。User。).Value=。张三。
Response.Cookies(。User。).Expires=一DateTime.Now.AddDays(5)
下面是在另一次访问中读出以前写入的信息的示例代码:
。IfNot
t-.
Request.Cookies(”User。)IsNothing
Then
不会暴露出来,也可以防止非法的数据修改,但它也无法传递以二进制形式存在的加密信息。
Cookie的传递信息方法也有明显的安全性缺陷,因为传递的信息是存放在客户机硬盘的固定位置上,不仅信息暴露,而且可被篡改,因此不适合传递重要的信息。
在防止信息暴露和信息非法修改方面,transfer方法、数据库转接方法等都有很好的表现,它们还可以传递多种类型的数据,如加密的二进制数据,这使信息的传递更加安全。相比之下,.NET平台的Transfer方法,
TextBoxl.Text=Request.Cookies(。User。).ValueEndlf
2.6通过数据库转接在Web页面问传递信息
这种方法的传递是在源页面把信息存八数据库,导航到目标页面之后再把在源页面中存入数据库中的信息取出来,它同样可以跨越多个页面来传递信息。在实际使用中,由于Web应用系统中可能有很多的用户同时进行操作,因此存在着如何确定用户与信息的对应关系统的问题,通常是结合Session对象一起使用,在源页面把要传递的信息及用户SessionlD号同时存入数据库,在目标页面根据用户的SessionlD号把源页面中存入的信息取出。
在安全性上更妩不仅传递的信息不暴露,甚至导航到
目标页面后,目标页面的URL也不显示出来,仍然显示源页面的URL。3.2可靠性
不同的传递方法对Web应用程序的可靠性的影响主
3信息传递效果的分析研究+
虽然有多种方法可用于Web页面间传递信息,但
40
研究开发Re∞a№handDevelopment
要表现在数据类型的转换引起的不可靠性、非法修改引起的不可靠性、以及数据量超限引起的不可靠性。
万方数据
2008年第4期
计算机系统应用
实际的业务过程中,需要传递的信息有多种多样看,反应速度较慢,但对服务器的性能的影响不是很的数据类型,如:数值、字符、日期、对象等,而前3种类大。当传递的信息量很大时,因为它不占用Web服务型传递方法的,都是把信息作为字符串来传递,即对于器的内存资源,将有利于保证Web应用系统的性能和非字符串的数据也是作为字符串来传递,在目标页面可扩展性。
。
接收到后,再转换为原来的数据类型,这有可能出现字3.4灵活性与简单性
符串不能正确地转换成数值或日期数据的情况,从而在简单性和灵活性方面,第一种类型的传递方法导致系统出错。对于所谓的“查询字符串”的传递方实现起来是最简单的,但它缺乏灵活性,要传递的内容法,还会因其传递的信息出现在地址栏,由此引起的非只能在页面的设计中确定。其他类型的信息传递方法修改信息而使系统出错。
法,都具有好的灵活性,能够传递用户动态设定的内值得注意的是有些传递方法对传递的信息量是有容。就实现难度来说,Transfer方法和数据库转接等方限制的,当传递的信息量超出限制就可能引起信息的丢法,实现起来稍为复杂。失或者系统出错。上述传递方法的前两种类型和第33.5应用范围及限制
种类型的get传递方法,传递的信息量就是有限制的,虽为了正确的使用Web页面间信息的传递方法,还然信息量的限制根据浏览器的版本不同有所差异,但通要注意不同传递方法的应用范围和限制。Application常就是几KB。因此,如果使用redired方法和get方法对象传递的信息可以在所有用户、所有页面之间进行,来传递用户在文本框中的输入内容,设计时就要考虑到具有最广泛的应用范围,但这种方法的信息共享有可户的输入数据量是有很大差异的,在程序中应对用户的能导致信息的相互覆盖,影响传递信息的准确性,因此输入数据进行长度验证,避免信息传递的不完整。
使用该类对象要考虑周到,避免一个用户的信息被另在传递方法中可以避免类型转换的有transfer方一用户的信息覆盖。使用Session对象的信息的传送法、数据库转接方法、Session对象等传递方法,它们可方法可以跨越多个页面传递信息,但只有同一用户才以传递各种类型的数据。若要传递大数据量的信息可能够存取。使用Cooke的传递方法能在某台客户机采用Post方法、transfer方法和数据库转接方法。和服务器之间传递信息,并可定义有效期,因此该方式3.3对性能的影响
的有效范围大于Session方法的应用范围。但当客户不同传递方法对性能的影响体现在两个方面,一端的浏览器禁止使用CooI(je时,信息的传递将无法进是对Web服务器性能的影响,另一是对用户请求面页行。数据库转接的方法就时间上或页面范围方面来的响应速度的影响。
讲,没有什么限制,但它总是要与其他的对象结合使使用Application对象和Session对象进行的信息用,因此其应用范围实际上取决于其结合使用的对象传递,是通过Web服务器的内存来实现的,从用户感的生命周期。除此之外的其他方法的应用范围都是只觉的反应速度来看是很快的,但大量的使用这些对象能在某特定的两个页面问传递信息。
来传递信息或传递大数据量的信息,将占用大量的服应用限制的另一个要注意的问题是不同的Web务器内存,增加Web服务器的负担,导致服务器性能应用开发平台和工具,其传递信息方法可能有所变化,的下降,特别是Application对象由于其生命周期很长,例如,在ASP.NET中已经不能用第三种类型的方法来对服务器的影响更加显著。
导航到目标页面,因而也不能使用这种类型的方法来第1至第4种类型的方法,其传递信息存在于访在Web页面间传递信息。
问请求或Web页面中,这些方法的传递信息仅在进行处理时短暂地占用服务器的内存和CPU,对服务器的4结束语
性能影响较小,但每次都要从请求或Web页面中提取从上面的分析探讨可知,Web页面间进行信息传信息,因此从用户感觉来看,反应速度稍慢。
递的方法有很多种,不同的实现方法在安全性、稳定使用数据库转接的方法,需要经过较多的中间环性、性能、灵活性方面有所不同,各有其优、缺点。在
节,包括数据库的连接和存储操作,因而从用户感觉来
(下转第50页)
万
方数据
计算机系统应用
2008年第4期
Specificationv1.1.30Jan。2007.
6Bosenberg。J.,Schulzrinne,H.。Camarillo。G..SIP:SessionInitiationProtoc01.RFC3261。June2002.7
务开发者提供了简单强大的煳L配置方式以及丰富
易用的通用资源,适合于开发NGN网络尤其是3G网络的各种增值业务,具有现实意义。虽然XJoin框架在一定程度上增加了业务开发人员学习框架的培训成本,但是相比于业务的开发维护成本的降低,以及应用程序稳定性的提高,这部分成本是值得的。
文献[13]指出了现有的基于构件的软件架构的两点不足,各个构件是固定和被动的,构件间的连线是“笨拙”的,并提出了一种新的基于移动Agent技术的构件软件框架,具有较强的网络环境的动态适应性。但是,该技术目前尚不成熟,X.Ioin未加以采用。可以对移动Agent技术进行进一步研究,并利用该技术对XJoin框架加以完善和扩展,以进一步增加框架的灵活性。
8
Zhuweisky。NET通信框架的设计、实现与应用.ht・
tp://zhuweisky.cnblogs.com.BarryD,Smaragdakis
Y.Object—Oriented
frameworks
andproduct—lines.In:DonohoeP。ed.Proceedingsofthe1stSoftwareProductLineConference.Dordrecht:Kluwer,2000,227—247.
9刘瑜,张世琨,王立福,杨芙清.基于构件的软件框架与角色扩展形态研究.软件学报,2003,14(8):1365
—1370.
10DouglasC.Schmidt,AniruddhaGokhale,Balachand—
ran
Natarajan.LeveragingQueue.July/August
application
framework.
参考文献
1l
ACM2004:66-75.
EricBruneton.ASM3.0:AJavabytecodeengineering
l刘韵洁.下一代网络的发展趋势——融舍与开放.电
信科学,2005,2:l一6.
2
PatrickLightbody,JasonCarreira,eta1.WebWorkinAction.http://www.opensymphony.com/webwork.。
12
library.2007.http://download.forge.objectweb.
org/asm/asm—guide.pdf
RodJohnson,JuergenHoeller,eta1.Springrefer-
ence:Springjava/j2eeApplicationFramework.ht—
3林泊,周明辉等.一个J2EE应用服务器的web容器集成框架.软件学报,2006,17(5):1198—1203.
4SunMicrosystems。Inc.JSR240:JAiSLEE1.1Speci.fieation,ProposedFinalDraft.JAi,24Aug,20075
NasirKhan.BEASystemsInc.JSR289:SIPServlet
tp://static.springframework.org/spring/does/2.0.x/
reference/index.html
13吕建,张呜,廖宇,陶先平.基于移动Agent技术的构
件软件框架研究.软件学报,2000,11(8):1018
—1023.
(上接第4l页)
Web应用系统的开发中,究竟应选择何种实现方法?这要根据实际情况,包括所选择的开发平台及工具来确定,没有统一的选择标准。事实上,大多数的应用系统会同时使用多种信息传递方法,例如在进行统计和系统的全局控制时,使用Application对象来传递信息:在用户管理上使用Session对象跟踪用户的操作结果,此外还会选用其他的一种以上的仅能在特定的两个Web页面之间传递信息的方法。要强调的是不管选用
l邹天思,孙明丽,庞娅娟.ASP开发技术大全[M].北京:人民邮电出版社,2007.272—298.
什么方法进行页面间传递信息,要充分了解该方法所带来的影响,并采取适当的措施来弥补,同时做好测试和检验工作。
参考文献
万方数据
Web页面间信息传递方法的效果研究
作者:作者单位:刊名:英文刊名:年,卷(期):
杨育标, 徐炳文
广东岭南职业技术学院,广东广州,510301计算机系统应用
COMPUTER SYSTEMS & APPLICATIONS2008(4)
参考文献(1条)
1.邹天思;孙明丽;庞娅娟 ASP开发技术大全 2007
本文链接:http://d.g.wanfangdata.com.cn/Periodical_jsjxtyy200804010.aspx