仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1832|回复: 18
打印 上一主题 下一主题

[学习教程] ASP教程之在办事器和客户之间传输数据

[复制链接]
兰色精灵 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:36:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
因为现在数据库都使用标准的SQL语言对数据库进行管理,所以如果是标准SQL语言,两者基本上都可以通用的。SQL Server还有更多的扩展,可以用存储过程,数据库大小无极限限制。办事器|数据   
     在本章的入手下手,已向人人供应了一张RDS的组件框图,肯定了哪些组件是客户真个,和哪些组件是办事器真个。在上一节,集中引见了客户端组件,即数据控件,由于它们是利用RDS最复杂的办法。它们答应从办事器向客户机无缝地传输数据,同时也供应了一种在Web页面上处置数据的简略单纯办法。为了取得办事器上的数据,只需求设置几个属性,挪用1、两个办法就足够了。
    利用数据控件存在的成绩在于它们获得数据的才能绝对无限,即缺少天真性。关于RDS数据控件,必需经由过程参数,好比Connect i o n和SQL,指定毗连和查询的细节,这把咱们限制在数据库和复杂的查询上。另外,用户还能看到这些参数,因而在利用RDS数据控件时存在一个潜伏的平安破绽。固然属性U R L经由过程指定实践的数据源,而不是获得数据的场合,局部处理了这个成绩,但依然存在着缺点。用户照旧可以获得U R L,直接读取数据,而这并非咱们所但愿的。
    IE 5.0 的引入使会见X M L数据变得更加轻易,因而今后X M L数据一定会普遍利用。与RDS数据控件的U R L属性一样,用户也能直接读取数据,由于数据源的称号对他们是可见的。
    因而,上面一些成绩需求思索。
    ? 需求一种平安的办法检索办事器端数据,并在客户端利用它们。
    ? 需求一种更新数据的办法。
    ? 不丧失天真性。
    这些成绩的处理办法是利用组件。组件答应封装对一切数据的会见,包含数据源,确保只在Web页面上显示数据。可以埋没毗连的细节,由于它们在组件外部,不会表露给用户,所以平安性不会遭到伤害。也能够创立本人的组件来更新数据,如许保存了可更新数据的灵
活性。
    另外又增添了平安性,由于在客户端会见办事器组件之前,需求修正注册表。这确保只创立所需的组件,禁止用户上载组件,然后从办事器会见他们。稍后将会看到若何修正注册表。
10.3.1 基于办事器的组件
    在这里其实不盘算大篇幅地会商若何创立组件,由于本书前面的局部章节已掩盖了这些内容,这里将引见一些非常复杂的用于办事器组件的代码。这有助于申明将要利用的RDS例子。
    起首组件由一个界说毗连细节的常数入手下手,在本例中针对SQL Server和p u b s数据库。

    然后创立第一个办法,向客户端Web页面供应一个纪录集。这是一个尺度的Visual Basic函数,前往一个尺度的A D O R e c o RDS e t对象。


    这里有两个主要的中央需求注重。第一是把C u r s o r L o c a t i o n设为a d U s e C l i e n t,确保利用客户光标引擎。这关于断开毗连的纪录集是需要的。第二点需求注重是上面这一行代码:

    把纪录集从办事器端“断开”,平安地将纪录集前往给客户端。
    组件的第二个办法用咱们对断开的纪录集的修正来更新办事器。它承受一个纪录集参数,从头毗连到数据存储,然后收回U p d a t e B a t c h号令。这将一切批处置修正送到办事器。

    这就是这个组件的全体内容。很分明,咱们把它复杂化了,如许才干很快地显示其包括的内容,但实践上关于能在组件里放甚么并没有任何限制。在本书第1 3章到第1 8章会看到更多的有关若何做和为何要如许做的例子。
10.3.2 DataSpace对象
    D a t a S p a c e对象是担任与办事器停止通信的客户端对象。它的义务是供应一种办法,从客户端创立办事器端组件,同时答应在客户机和办事器之间传输数据。
    固然听起来有些庞杂,但实践上倒是十分复杂。在Web页面上创立一个D a t a S p a c e对象,再利用D a t a S p a c e对象创立办事器端组件。
    创立一个D a t a S p a c e对象有两种办法。第一种办法利用< OBJECT>标志:

    这与曩昔创立其他客户端RDS组件的办法几近不异,独一分歧的就是类I D。
    第二种办法是利用剧本代码创立D a t a S p a c e对象。上面的代码显示了若何用J S c r i p t创立一个D a t a S p a c e对象。

    两种办法的次要区分在于:利用< OBJECT>标志时, D a t a S p a c e对象只在页面加载时才创立。利用剧本手艺意味着当剧本运转时,就创立了D a t a S p a c e对象。假如想延迟对象创立以使页面加载得快一些,那末可使用剧本手艺。
    使用D a t a S p a c e对象创立办事器组件
    一旦创立了D a t a S p a c e对象,可使用C r e a t e OBJECT办法创立办事器端对象。

    P ro g I D是但愿创立的对象的I D,Connect i o n是Web办事器的U R L地址。例如,假定有一个供应p u b s数据库数据
的Visual Basic组件,如图1 0 - 1 2所示。

    在这里,P ro g I D应当是Wr o x P u b s . p u b s。上面以一个完全的例子具体申明。
    (1) 创立组件和获得数据
    假定p u b s类有两个办法, g e t A u t h o r s和s e t A u t h o r s,用于读取和更新a u t h o r s表。在创立组件之前,先创立一个RDS数据控件来寄存和绑定命据。注重,这里没有毗连的细节。

    然后可使用以下客户端剧本代码创立办事器组件:

    这里创立了D a t a S p a c e对象的一个实例,然后利用C r e a t e OBJECT办法创立办事器端对象。这里,指定了对象和Web办事器的称号。在本例中将Web办事器的名字设为l o c a l h o s t,它应当是办事器的实践称号。这不是一个平安成绩,由于用户正在与Web站点毗连。
    如今,变量o b j P u b s是Wr o x P u b s . p u b s对象的一个实例,可以像利用其他对象一样挪用其办法。

    挪用g e t A u t h o r s办法前往一个断开毗连的纪录集。如今需求做的就是利用这个纪录集,因而可使用一个RDS数据控件(用< OBJECT >标志创立)来寄存纪录集并绑定命据。利用数据控件的SourceRecordset 属性来吸收从组件中获得的纪录集。

    在这类情况下,数据控件体现得就像本人在获得数据一样,独一分歧的是咱们已从组件中供应了数据。
    (2) 利用组件更新数据
    读者能够想晓得利用办事器端组件时,若何更新数据?不克不及利用数据控件的S u b m i t C h a n g e s办法,由于数据控件没有毗连的细节,因而不晓得数据从哪里来。既然纪录集是一个尺度的断开毗连的纪录集,其数据又是由办事器组件供应的,那末组件仿佛应当晓得数据的来历?是的。因而需求把这个断开毗连的纪录集传给办事器组件,它会履行批处置更新。
    为了完成这一点,起首从数据控件中掏出纪录集,然后将其作为参数传给办事器对象的办法。

    实践上这相当复杂。
10.3.3 利用办事器端组件的长处
    那末办事器端组件最大的特征是甚么?看一下它的长处:
    ? 毗连细节对用户不成见,为咱们供应了一个更平安的体系。同时,组件也必需被注册,这又是一道附加的平安限制。
    ? 可以用任何兼容C O M的言语来创立组件。在例子中利用Visual Basic的缘由是由于V B轻易了解,但假如需求也能够利用V C + +或D e l p h i。这答应开辟人员利用本人最熟习的言语。
    ? 创立的组件并只不局限于前往和更新纪录集。可构建大批封装的营业逻辑作为数据处置的一局部。
    ? 可以在s e t R e c o RDS e t办法中封装全体抵触处置的代码,而只前往毛病的具体申明。这标明客户端剧本是标准的。同时,也意味着用户没法盗取你精心编写的代码。
    本书的下一节会具体引见组件的长处。
10.3.4 注册办事器端组件
    在后面已经说过,在Web阅读器中创立一个办事器组件之前必需修正注册表。为了让RDS能利用组件,必需将组件的P r o g I D添加到上面的注册表键中:

    正告:在编纂注册表时一直要很细心。在修正之前备份注册表永久是明智的。
    运转r e g e d i t后,选择A D C L a u n c h键,然后从E d i t菜单当选择N e w,再选择K e y。如今为组件输出P r o g I D,例如图1 0 - 1 3所示。

    还应当思索对注册表做一点修正以标明组件为“ safe for scripting”,如许在运转的时分,才会完整知足I E的请求。此时需求增添两个键,两个都需求组件的G U I D。

    完成的最好办法是利用Visual studio的Package and Deployment Wi z a r d创立一个Internet下载软件包(Internet Download Package)。假如选择了Safe for Initialization和Safe for Scripting这两个选项,那末当软件包装置到办事器时,将会更新注册表。假如的确需求失掉组件的类I D,那末这个导游也能创立一个HTML文件,外面是一个带有组件类I D的<OBJECT>标志。
10.3.5 自界说处置器
    RDS数据控件是一个优异的客户端东西,可在客户端处置大批的数据。大多半例子已标明数据控件利用的是固定的数据集,好比a u t h o r s表。但是,静态数据绑定的例子标明了也能够让用户决意本人想要检索的数据。这可以经由过程创立按钮来完成,可为用户供应一个文本框来输出表名,乃至输出SQL查询字符串。
    固然,这增添了RDS数据控件的天真性,但倒是以就义平安性为价值的。假如用户对数据的利用局限不受限制,他们要末会感觉凌乱,要末就想偷看那些保密的财政数据。因此咱们需求的是一种天真的,但又受必定限制的检索数据的办法。
    为了做到这一点可使用一个处置器,可以在毗连字符串或号令履行之前修正它们。
    处置器是一个包括四局部内容,分离由回车符分隔的文本文件:
    ? Connect节:肯定毗连字符串。
    ? SQL 节:肯定SQL语句和号令。
    ? UserList节:肯定用户。
    ? Logs 节:肯定日记纪录才能。
    该文本文件名缺省为M s d f m a p . i n i,装置在Wi n d o w s缺省目次中。
    1. Connect节
    Connect节答应掩盖毗连字符串和会见细节,由上面两个条目之一标识:
    ? [connect default] 指有缺省的毗连细节。
    ? [connect Connect i o n N a m e] 指知名为Connect i o n N a m e的毗连的细节。
    在该节有两对称号/值,如表1 0 - 6所示。

    例如:

    这标明,假如数据控件的毗连字符串为P u b s D a t a b a s e,用户将以G u e s t U s e r的身份登录到数据库,而且只要读的权限。因而,假如用户履行以下操作:


    这里的值掩盖了Connect节中的会见权限值。
    为了准确利用U s e r L i s t节,办事器必需可以验证用户,因而这取决于办事器上的验证划定规矩。例如,假如利用匿名会见,那末一切用户城市以Web站点中I I S办理属性所指定的缺省用户身份毗连到办事器。
    4. Logs节
    Logs节答应指定一个写入毛病的文件名由[Logs]标识。日记纪录使用于一切毗连。假如此日记文件不存在则会创立一个新的日记文件。

    6. 利用自界说处置器
    可使用RDS数据控件的Handler属性来指定处置器,并给指定处置器的名字。缺省的处置器是M S D F M A P. Handler,它是RDS办事器端局部利用的一个组件。也能够编写本人的自界说处置器(尺度的C O M组件),假如如许做,应当参考RDS的文档。



  大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧
活着的死人 该用户已被删除
沙发
发表于 2015-2-4 03:41:15 | 只看该作者
多看多学多思。多看一些关于ASP的书籍,一方面可以扩展知识面一方面可以鉴借别人是如何掌握、运用ASP的;多学善于关注别人,向同学老师多多学习,不论知识的大小;多思则是要将学到的知识灵活运用。
飘飘悠悠 该用户已被删除
板凳
发表于 2015-2-9 14:10:49 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
金色的骷髅 该用户已被删除
地板
发表于 2015-2-9 15:47:45 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
因胸联盟 该用户已被删除
5#
发表于 2015-2-28 15:29:23 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp),它可以看作是VC和Java的混合体吧。
乐观 该用户已被删除
6#
发表于 2015-3-10 00:23:55 | 只看该作者
我们必须明确一个大方向,不要只是停留在因为学而去学,我们应有方向应有目标.
7#
发表于 2015-3-17 03:10:32 | 只看该作者
Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件
小女巫 该用户已被删除
8#
发表于 2015-3-23 04:23:47 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
再现理想 该用户已被删除
9#
发表于 2015-3-25 12:08:23 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
再见西城 该用户已被删除
10#
发表于 2015-3-25 23:59:11 | 只看该作者
没有坚实的理论做基础,那么我们连踏入社会第一步的资本都没有,特别对于计算机专业的学生学好专业知识是置关重要的。在这里我侧重讲一下如何学习ASP,从平时的学习过程中。
变相怪杰 该用户已被删除
11#
发表于 2015-3-27 06:10:56 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
第二个灵魂 该用户已被删除
12#
发表于 2015-3-29 17:40:38 | 只看该作者
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
简单生活 该用户已被删除
13#
发表于 2015-4-4 04:03:06 | 只看该作者
以HTML语言整合(HTML负责界面上,ASP则负责功能上)形成一个B/S(浏览器/服务器)模式的网页程序。
分手快乐 该用户已被删除
14#
发表于 2015-4-8 18:28:43 | 只看该作者
他的语法和设计思路和VB完全相同,导致很多ASP的书都留一句“相关内容请参考VB的相关教材....”更糟糕的是,相当多的ASP教程混合了Javascript,VBscript等等脚本语言,搞的初学者。
若相依 该用户已被删除
15#
发表于 2015-5-4 19:05:59 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
柔情似水 该用户已被删除
16#
发表于 2015-5-6 23:17:47 | 只看该作者
另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件)
海妖 该用户已被删除
17#
发表于 2015-6-18 22:40:15 | 只看该作者
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")
山那边是海 该用户已被删除
18#
发表于 2015-6-24 22:04:05 | 只看该作者
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
不帅 该用户已被删除
19#
发表于 2015-7-17 00:35:11 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-4-28 11:42

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表