【Asp.net精品源码栏目提醒】:网学会员为需要Asp.net精品源码的朋友们搜集整理了ASP_NET多层网络构架下的页间传值方法及应用研究 - 技术总结相关资料,希望对各位网友有所帮助!
计算机与现代化 2008年第7期JISUANJIYUXIANDAIHUA总第155期文章编号:10062247520080720103204收稿日期:2007206214基金项目:鄂州大学科研基金资助项目2006YB06作者简介:陈新文19752男湖北武汉人鄂州大学计算机系讲师硕士研究方向:计算机及光电子技术吴琼19692男湖北随州人讲师研究方向:计算机应用黄文英19722女湖北鄂州人副教授研究方向:计算机应用。
ASP.NET多层网络构架下的页间传值方法及应用研究陈新文吴 琼黄文英鄂州大学计算机系湖北鄂州436000摘要:针对
ASP.NET多层网络构架下的Web编程特点
ASP.NET页间传值不便的情况下研究了多层网络架构下的页间传值机制提出了
ASP.NET对象及对象模式管理在页面传值上的几种解决方法。
在给出了应用实例的同时探讨了页面间传值的优缺点并验证了其有效性。
关键词:对象模式管理web页传值中图分类号:TP311.13 文献标识码:AResearchonValueTransmissionMethodandApplicationBetweenASP.NETWebPagesUnderMulti2layerNetworkFrameworkCHENXin2wenWUQiongHUANGWen2yingDept.ofComputerEzhouUniv.Ezhou436000ChinaAbstract:ItisofinconvenienttopassvalueamongWebpagesinASP.NETmulti2layernetworkframeworkWebprogramming.Thepaperstudiesthemechanismofvaluetransmissioninthemulti2layernetworkframeworkproposesseveralsolutionstopassvaluebetweenASP.NETobjectsandobjectpatternmanagementdiscussestheadvantagesanddisadvantagesofvaluetransmis2sioninthewayofapplicationexampleandatthesametimeconfirmsitsvalidity.Keywords:objectpatternmanagementWebpagevaluetransmission0 引 言在
ASP.NET多层网络架构下的编程时经常出现如客户长时间没有同服务器进行交互的时候如果客户再次执行操作需要让用户重新登陆存在着用户信息在页间传值的应用以及在实现登记页面与数据审核页之间传值的问题1在将某页面计算数据结果传送到别的页面进行处理或动态图形生成时都需要用到页间传值的应用。
在传统的ASP中通过POST方法可以较好的解决但在事件驱动的编程模型的
ASP.NET中Web页本身是无状态的在默认情况下Web应用程序的组件仅做存活足够单个请求的时间Web页保留值难以实现2传递值也相对来说这点较为复杂。
本文在分析
ASP.NET多层网络架构编程模型的基础上主要探讨了不同实例的页面间传值的方法及其应用特点。
1 多层网络构架下页间传值机制
ASP.NET的多层架构系统结构规范一般分为三层或四层。
即用户服务层、业务逻辑层、数据访问层三层或将三层结构中的业务逻辑层分为业务外观层和业务规则层。
其中用户服务层主要为负责处理用户输入及输出中间业务逻辑是联系上层和底层的纽带如建立数据库的连接完成数据层数据的相关操作及更新并把结果返回给用户。
而
ASP.NET页间值的传递是中间层和用户层数据交互的表现同时页面间值传递在
ASP.NET编程动态生成Web页面也是一个非常重要的环节。
ASP.NET的Web页间值的传递主要是通过内置对象来实现的。
这些内置对象包括Appliction、Ses2sion、Request、Server、Response3等它们是由IIS控制台初始化的ActiveXDLL组件。
Web窗体页是应用程序中的类因此可以像处理任何类一样来创建属104 计 算 机 与 现 代 化2008年第7期性用户通过直接引用这些组件或/及属性来实现页间传值和应用编程。
2 页面间传值方法
ASP.NET的Web页间常需要进行数据传值下面主要介绍两种传值方法及其应用。
其一是通过对象的模式管理来实现传值其二是通过对象及其方法和属性来实现传值。
为了便于描述下面设定把源页面WebFormX1中的两个TextBox中的数据Userid和Email的值通过Button按钮触发传递到目标页面WebFormX2中并在WebFormX2中以两个Label标签显示从源页面接收到的值。
下面以实例研究不同传值方法及特点。
2.1对象模式管理实现页间传值模式管理的主要应用程序对象为Application、Session会话对象及视图对象ViewState。
Applictaion对象为存储在所有运在Web应用程序中的代码都可以访问的数据提供访问机制Session对象允许为每一个客户的会话存储数据提供访问机制。
这两种对象都内置在对象模型之中如图1所示ViewState对象只在未提交服务器之前保存页面的临时数据来实现页间值的传递425。
图1 内置对象间的关系1Application传值。
如图1所示Application是被多用户所共有的对应用程序而言把Application描述为全局容器后缀名为aspx的文件集。
在Application对象容器中可以保存变量或对象的引用。
要将传值过程中即通过全局变量保存源页面所要传递的值在目标页面通过Application对象提取。
如WebForm11为源页面WebForm12为目标页面实现源页面A1代码如下:publicclassA1:System.Web.UI.PageprotectedSystem.Web.UI.WebControls.LabelLabel1protectedSystem.Web.UI.WebControls.LabelLabel2protectedSystem.Web.UI.WebControls.TextBoxTextBox1protectedSystem.Web.UI.WebControls.TextBoxTextBox2protectedSystem.Web.UI.WebControls.ButtonButton1privatevoidPage_LoadobjectsenderSystem.EventArgse//在此处放置用户代码以初始化页面regionWeb窗体设计器生成的代码overrideprotectedvoidOnInitEventArgseInitializeComponentbase.OnIniteprivatevoidInitializeComponentthis.Button1.ClicknewSystem.EventHandlerthis.Button1_Clickthis.LoadnewSystem.EventHandlerthis.Page_LoadendregionprivatevoidButton1_ClickobjectsenderSystem.Even2tArgseApplicationuseridTextBox1.TextApplicationusernameTextBox2.TextResponse.RedirectA2.aspx目标页面A2代码如下:publicclassA2:System.Web.UI.PageprotectedSystem.Web.UI.WebControls.LabelLabel1protectedSystem.Web.UI.WebControls.LabelLabel2privatevoidPage_LoadobjectsenderSystem.EventArgse//在此处放置用户代码以初始化页面Label1.TextApplicationuserid.ToStringLabel2.TextApplicationusername.ToString2Session传值。
会话Session是单个用户和特定的Web应用程序相互作用的时间段为单个用户会话保留数据。
在
ASP.NET中它独立于Cookie和进程为服务器群集提供支持5。
Session变量在页面间的传值过程中可以把变量的值存放在Session变量中然后在目的页面中使用它。
如图1所示Session变量过多的开销会使服务器的资源变得紧张Session是局部性的变量只能惟一地标识一个用户其有效范围是定义这Session的页面。
下面就Session传值给出应用实例的源页面B1代码片段如下:privatevoidButton2_ClickobjectsenderSystem.Even2tArgseSessionuseridTextBox1.TextSessionEmailTextBox2.TextServer.TransferB2.aspx对应的目标页面B2代码片段如下:privatevoidPage_LoadobjectsenderSystem.EventArgseLabel1.TextSessionuserid.ToString//从Ses2sion中提取所传递的值Label2.TextSessionEmail.ToStringSession.Removeuserid//释放Session资源Session.Removeusername3ViewState状态实现传值。
ViewState对象通常用于在整个往返过程期间保2012-05-212012-05-212012-05-212012-05-212012-05-212012-05-21 2008年第7期陈新文等:
ASP.NET多层网络构架下的页间传值方法及应用研究105 持网页上的窗体数据。
当网页提交到服务器后系统自动清空ViewState对象中的数据。
在传值中View2State将每个服务器端控件的数据编码并保存在一个浏览器的隐藏窗体域里如C1记录上一次问页面的URL地址C2通过访问C1中ViewState保留值返回到C1页面。
源页面C1代码片段:HyperLink超连接为:Nav2igateUrl:C2.aspxprivatevoidPage_LoadobjectsenderSystem.EventArgse//在此处放置用户代码以初始化页面ifPage.IsPostBackViewStateBackUrlRequest.UrlReferrer.ToString//ViewState记录当前URL值C1以记事本打开HTML即页面E1的查看源代码时ViewState隐藏值:目标页面C2代码片段:返回按钮代码privatevoidLinkButton1_ClickobjectsenderSystem.EventArgseifViewStateBackUrlnullResponse.RedirectViewStateBackUrl.ToString//提取ViewState记录的URL值2.2通过对象方法及属性实现传值1Server.Transfer传值。
该方法是面向对象的一种简洁方法在源页面创建返回值的Get属性通过按钮单击事件调用Server.Transfer方法转移到指定的目标页面同时在目标页面通过上下文类HttpContext对象的Context.Han2dler属性获得源页面实例对象的引用从而提取源页面控件的值实现值的传递。
其源页面D1代码片段:privatevoidPage_LoadobjectsenderSystem.EventArgse//在此处放置用户代码以初始化页面publicstringuseridgetreturnTextBox1.Text//在此创建返回值的GET属性publicstringEmailgetreturnTextBox2.TextprivatevoidButton1_ClickobjectsenderSystem.Even2tArgseServer.TransferD2.aspxtrue目标页面D2代码片段:privatevoidPage_LoadobjectsenderSystem.EventArgseD1ddContext.HandlerasD1//源页面实例的引用Label1.Textd.userid//提取源页面控件的值Label2.Textd.Email//提取源页面控件的值2Request.QueryString实现传值。
对象HttpRequesty主要是在Web请求期间从客户端取到相应的Http数据该对象是Page对象的一个成员故在任何地方不需说明也可直接使用。
Request的QueryString或Params属性是从网页的地址栏获取所传递的值或参数。
在源页面以串形式str1记录要传递的值并通过地址栏传递到目标页面在目标页面以Request.QueryString获取参数。
其中Server.UrlEncode是对要传递的值进行编码这样可以提高站点的安全性。
其源页面E1代码片段如下:privatevoidPage_LoadobjectsenderSystem.EventArgse//在此处放置用户代码以初始化页面privatevoidButton1_ClickobjectsenderSystem.Even2tArgsestringstr1//str1W2.aspxuseridServer.UrlEncodeText2Box1.TextEmailServer.UrlEncodeTextBox2.Text//Response.Redirectstr1//目标页面E2代码片段如下:privatevoidPage_LoadobjectsenderSystem.EventArgse//在此处放置用户代码以初始化页面Response.Writerequest所传递的值用户ID为:Re2quest.ParamsTextBox1Response.Writerequest所传递的值用户邮箱为:Re2quest.ParamsTextBox2Label1.TextRequest.QueryStringuseridLabel2.TextRequest.QueryStringEmail3 传值方法比较在以上传值方法中Appliction和Session对象是全局性的Appliction是多用户共有的容器Session是被某个用户独占的ViewState可以看着某个页面的局部变量大量的使用也会增加应用系统开销从而降低其效率6。
而后两种使用方法较灵活Server.Transfer传值是在服务器端完成并没有到客户端它是通过创建源页类的实例变量然后可以向其分配Http对象ihttphandler类的一个实例即接收初始请求的对象。
这样传值的好处在于不像Session一样使用内存特别适合大数据的情况其实这不能称传值Request.QueryString通过字符串由URL传值只能传送约1024B大小的参数同时它存在着传递参数安全性的问题。
在实际应用过程中要适时灵活运用就会事半功倍。
4 结束语本文探讨了
ASP.NET多层结构下页面之间值传递的几种方法针对不同传值方法给出了具体实例同时分析了不同方法的使用情况每种方法都有其优2012-05-212012-05-212012-05-212012-05-212012-05-212012-05-21106 计 算 机 与 现 代 化2008年第7期缺点实验证明以上所探讨的传值方法有较高传值效率和精度。
当然如果所需参数与数据库和封装类相关还可以在以上传值方法的基础上只传主键标识参数7。
其它相关值可以通过主键从数据库中取得或上下文类中提取
ASP.NET页面间的传值方法还有待进一步深入探讨和研究8。
参考文献:1 丁昊凯许静雯蔡黎文等.
ASP.NET网站开发M.北京:电子工业出版社2006.2 美JeffProsise.ProgrammingMicrosoft.NET程序设计技术内幕M.北京:清华大学出版社2003.3 美ChristianNagelBillEvjen.ProfessionalC2005M.北京:清华大学出版社2006.4 ChrisPayne.
ASP.NET从入门到精通M.赵斌张滨义董清波译.北京:人民邮电出版社2002.5 苏贵洋黄穗何莉等.
ASP.NET网络编程M.北京:电子工业出版社2006.6 钟世芬 荣其孙彪等.
ASP.NET中参数传值的综合使用J.计算机应用研究200411:2122214.7 郑耀东蔡骞.
ASP.NET网络数据库开发M.北京:清华大学出版社2006.8 邵丽萍肖世德.新一代Web开发技术
ASP.NET的发展与探析J.微计算机信息200521l:1902192.上接第71页通滤波和同态滤波等功能。
同态滤波用于消除图像上照明不均的问题增强暗区的图像细节同时又不损失亮区的图像细节627。
细节对比度差分辨不清的图像用同态滤波器处理后图像画面亮度比较均匀细节得以增强。
图5为同态滤波实例。
图像的亮度范围得到压缩而对比度得到增强。
图5 同态滤波实例在彩色增强中包括伪彩色增强和真彩色增强。
伪彩色的增强方法有很多种常用的有亮度切割法、彩色变换法和频域滤波法。
亮度切割法可看作是用一个分段线性函数实现从灰度到彩色的变换彩色变换法则用一个非线性的变换函数所以亮度切割法也可看作是彩色变换法的一个特例。
频域滤波法是把图像变换到频域进行一系列处理之后再将其还原使图像实现从灰度到彩色的变换。
真彩色增强方法本文采用一种最常用的即将图像从RGB分量图转换为HIS分量图之后将I分量增强最后再将其转换回RGB。
图6为真彩色增强实例。
3 结束语本文以图像增强为例介绍了用MATLAB的GUI设计数字图像处理课件的方法从中可以看到利用MATLAB制作课件是很方便的对课件开发者来说所要做的是对界面的设计和不同功能回调函数的编写。
将数字图像处理课件引入教学可以使学生直观地了图6 真彩色增强实例解数字图像处理的实质加深对数字图像处理的理解使教学与实验有机地结合起来有助于改善教学的薄弱环节并可以作为实验内容的补充解决实验设备有限、实验学时不足等问题。
参考文献:1 郭南.一种使用MATLAB制作CAI课件的方法J.沈阳电力高等专科学校学报200354:34236.2 孙兆林.MATLAB6.x图像处理M.北京:清华大学出版社2002.3 陈文海徐育育.基于MATLAB图形用户界面的CAI课件设计J.温州师范学院学报2003245:86289.4 章毓晋.图像处理和分析M.北京:清华大学出版社1999.5 涂望明魏友国施少敏.MATLAB在数字图像处理中的应用J.微计算机信息2007232:2992300.6 尹凤领霍丙全.图像处理技术的MATLAB实现J.科技信息20075:41242.7 冯安五希常.MATLAB在数字图像增强中的应用J.信息技术20075:65268.2012-05-212012-05-212012-05-212012-05-212012-05-212012-05-21 专 业 推 荐 ↓ 精 品 文 档
上一篇:
【精品】tfs2008安装简介
下一篇:
哈弗F7 VS名爵HS,谁更懂得年轻人的心?