asp编程经验谈-.pdf

上传人:索**** 文档编号:76192077 上传时间:2023-03-08 格式:PDF 页数:50 大小:327.38KB
返回 下载 相关 举报
asp编程经验谈-.pdf_第1页
第1页 / 共50页
asp编程经验谈-.pdf_第2页
第2页 / 共50页
点击查看更多>>
资源描述

《asp编程经验谈-.pdf》由会员分享,可在线阅读,更多相关《asp编程经验谈-.pdf(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、一、ASP 开发 10条经验总结历时半年,我独自一人完成了一个局级单位的管理信息系统,共发布BETA版 29 次,正式版本3 次。ASP+ORACLE 环境,285 个 ASP文件,功能涉及数据录入、修改、模糊查询、自动统计、数据分析和报表,这个项目正在申报省级成果,现将我的10 条经验总结如下,不对之处欢迎批评指正:1.不要再做ASP是否过时的讨论,重要的不是你是否使用先进的技术,而是你的设计思想是否先进;2.设计时要考虑项目的通用性,永远不要做没有推广价值的东西;3.程序设计要简洁,足够好的面向过程远远优于蹩脚的面向对象;4.理论是为实践服务的,所以不要被理论(尤其是设计模式)束缚;5.分

2、工合理的情况下尽可能少的人员构成项目小组,通信的开销实在太大了;6.没有不变的需求,要为你的程序留下足够多的拓展空间,同时要考虑在系统向其它平台移植时尽量减少工作量和难度的途径;7.千万不要忽视界面设计,很多情况下这成为对你项目评价的唯一标准;8.用正规文档记下你的变量使用情况,随着系统的增大,DEBUG 的成本几乎成倍增长;9.能用机器生成的代码就不要去手写,最宝贵的就是时间;10.选数据库还是要选ORACLE!二、ASP 开发准则应用程序服务器被,或最终将被 Web 服务器所使用,它通常是运行 ASP 页面的 IIS 计算机。ASP 是您的对象的唯一客户机。它带来了专门的线程和安全考虑。虽

3、然许多使用 ASP 的 Web 站点根本就不用组件,但在这篇文章中假定 ASP 是Internet 客户机和组件之间的桥梁。下面的 asp/server01242000.aspASP 组件准则(英文)提供ASP 和组件之间的划分服务ASP 最常用于在服务器上创建供客户机使用的 HTML 或 XML 文件,因此我们主要讨论这种使用方案。这就引出了一个常见的问题,如果 ASP 页面在服务器上,那么它们是否属于业务层的一部分呢?在组件世界中,答案通常是否。虽然 ASP 确实在服务器上运行,而且可能与应用程序服务器在同一个空间,但是这不能使它成为业务逻辑的一部分。随着用户界面工具的发展或者随着启用更多

4、的业务对业务方案,拥有这种明确的区别将获得巨大的回报。话说到此,让我们来看一些最重要的业务层和表示层划分准则:令 UI 代码与业务逻辑分离。这包括编写与 UI 耦合的代码,例如使用 ASP 内部组件的 MTS 对象,让它与业务逻辑代码分离,如同在不同的 DLL 中。将事务与 ASP 页面分离。事务 ASP 在某些情况下非常好,但是组件和多层应用程序会改变这种情况。组件不应该依赖由客户机层来管理它们的事务和业务逻辑语义。将表示组件(使用请求和响应的组件)与 Web 服务器放在相同的机器和/或进程中。如果将使用 ASP 内部组件对象的对象放在远程机器上,那么对内部组件的所有调用将以回调形式发生。调

5、用 IIS 客户机的是 COM+服务器,它显著降低了性能并使安全配置复杂化。可以将这些调整对象放在标记为“库激活”的 COM+应用程序中。ASP 存在于服务器上,因此 ASP 页面必须符合资源共享规则,并且记住可伸缩性。请看下面的详细内容:在“会话”中,管理应尽量避免用户特定的状态。保持 ASP 无状态,并在可能的情况下允许资源池。操作方式在评价某个代码段是否属于业务逻辑或者表示层时,请问一下自己,“如果我必须用按键式电话应用程序代替我的 ASP 页面,那么该代码是否还有用?”如果答案为“是”,那么可以尝试将它划分为业务逻辑代码或者用户界面帮助器代码。如果改变了客户机后该代码不能用,或者如果它

6、是构造用户界面的帮助器,则该代码属于表示服务层。它在 ASP 页面中,或在使用 ASP 内部组件的组件中。它不属于业务对象组件。理解桌面与 ASP 客户机的区别ASP 是组件的特殊客户机,不同于桌面上的传统单线程 Win32 应用程序。主要区别概括如下。线程管理:ASP 是多线程客户机。这意味着可以有许多并发活动一起运行,也许在同一时刻处理不同的 ASP 页面。这说明不能使对象伪称它是唯一的使用者来独占系统。这样做可能有意外的反应,例如,养成一个坏习惯:将对象存储在 ASP 会话或者应用程序变量中。安全环境:ASP 是由 Web 站点中的 Internet Information Servic

7、es 5.0 执行的,有低、中、高三种隔离度。甚至这些 Web 站点可以有不同的安全设置、允许或拒绝匿名访问、验证客户等等。所有这些设置产生了大量的方案,即不同的用户帐户最终用的是您的对象。轻松增长:这不是技术问题,而是 Web 应用程序所提供设施的副效应。传统上,为桌面应用程序增加用户基,要求仔细计划好向已知数量客户机的转出。ASP 已经改变了该过程。在启动和运行后,ASP-Visual Basic 应用程序可以方便地打开,供当地的或世界范围的所有职员、所有业务伙伴和所有客户使用。可以用这种方式描述 拥有超链接的单个电子邮件可以使用户基成十倍地增长。您的应用程序为此作好准备了吗?唯一了解的方

8、式是对 Web 站点进行强度测试,以获得实际性能的预期值。关于强度测试的详细信息,请参阅“应用程序生命周期”一节。在 ASP 内应该如何使用 Visual Basic 对象?在页面范围内创建和取消您的对象。也就是说,尽可能使 ASP 页面无状态,只在暂时状态下依赖会话或应用程序变量。不要将对象存储在会话或应用程序变量中。这将 ASP 线程锁定到您的会话、取消所有可伸缩性的预期值。也就是说,Web 服务器处理的用户数不会超过几十个。如果需要在会话或应用程序中存储内容,请使之成为数据而不是对象。还有可以遵守的许多其他准则。我们建议您阅读 MSDN Voices 上 J.D.Meier 撰写的专栏“

9、Servin it Up”。该专栏包括了大量的技术、实践和技巧,有助于开发可扩展的、可靠的 ASP 和组件应用程序。参考asp#serverMSDN Voices:Servin it Up Column(英文)SeminarOnline:在 ASP 下使用自定义 COM 组件(英文)aspMSDN 杂志(英文)不要将引用存储在会话或应用程序中的 VB 对象中所有 Visual Basic 6.0 组件都是“单元线程”的,就是说它们都运行在 STA 单元中。这意味着如果在线程中创建对象,那么对该对象的所有调用都必须用同一线程服务。许多线程(来自并发 Web 站点用户)使用 STA 对象的同一实例

10、,会引起一连串的活动,有可能成为应用程序中的瓶颈。此外,在会话范围内存储用Server.CreateObject创建的STA 对象,可以有效地将执行线程联系到当前用户,从而将应用程序的最大并发用户数限制到默认的 20 xN(N=处理器数量)。操作方式如果您按照我们的建议使对象无状态,则不需要存储引用以供客户机复用,并在应用程序范围内存储它们。客户机将能够独立创建、使用和取消它们自己的对象。这就减少了保持会话特有对象的需要,原因是它们不保留会话特有的状态。推荐的方式是使对象无状态,它在需要时访问数据库或其他存储区(例如 cookies 和LDAP)。如果需要使用会话或应用程序范围的数据,请将数据

11、,而不是处理数据的对象,存储在此。您可以创建一个类,来封装对所需值的处理。参考asp 信息:不要在会话或应用程序中存储 STA 对象 (Q243543)(英文)PRB:将 STA COM 组件存储在会话中,会将会话锁定在单线程中(Q243815)(英文)信息:ASP 下的组件线程模型概要(Q243544)(英文)学习 IIS 5.0 中的新内容Internet Information Server 5.0 增加了许多新功能。这些改进均已写入 J.D.Meier 的 MSDN 文章中:asp/server02282000.asp沿用 IIS 5.0 中的 ASP(英文)。下面是该文中最重要改进的

12、概述。改进的、出色的性能Server.Transfer 和 Server.Execute 方法集中式错误处理改进的浏览器功能改进的脚本引擎正则表达式分析器与 ADO 记录集 XML 功能的集成新的安全性、缓冲、隔离和管理功能三、Asp及 Web 开发中的常见问题表格的折行处理.table style=TABLE-LAYOUT:fixed width=200 border=0 cellspacing=0 cellpadding=7 bgcolor=#f7f7f7trtd style=LEFT:0px;WIDTH:100%;WORD-WRAP:break-worddffadfdaqqqqqqqqq

13、qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqsfdffadfdasfdffadfdasfdffadfdasfdffadfdasfdffadfdasfd ffadfdasfdffadfdasfdffadfdasfdffadfdasf/td/tr/table 此处主要是用css 样式进行控制在table 标签中有个style=TABLE-LAYOUT:fixed,其说明如下语法:table-layout:auto|fixed 参数:auto:默认的自动算法。布局将基于各单元格的内容。表格在每一单元格读取计算之后才会显示出来。速度很慢fixed:固定布局的算法。在这算法

14、中,水平布局是仅仅基于表格的宽度,表格边框的宽度,单元格间距,列的宽度,而和表格内容无关,此时在 td 标签中如果没有WORD-WRAP:break-word样式,表格中的内容将只能显示一部份,具体看表格的宽度了.word-wrap说明如下:语法:word-wrap:normal|break-word 参数:normal:允许内容顶开指定的容器边界break-word:内容将在边界内换行。如果需要,词内换行(word-break)也会发生VBSCRIPT 标记索引基本运算+数字加法及字符串连接-数字减法*数字乘法/数字除法Mod 求余数 求商数&字符串连接 次方=相等不相等=大于或等于 大于=

15、小于或等于 小于Not 非And 且Or 或Xor 异或循环及决策if.then 若.则.if.then.else 若.则.非else if.非若select case.群组选择条件end select for.next 计数循环while.wend 条件循环(一)do while.loop 条件循环(二)do.loop while 条件循环(三)do until.loop 条件循环(四)do.loop until 条件循环(五)数学函数Abs 绝对值Sgn 正负号Hex 转换成十六进制Oct 转换成八进制Sqr 平方根Int 取整数Fix 取整数Round 取整数Log 以 e 为底的对数S

16、in 正弦函数Cos 余弦函数Tan 正切函数字符串处理函数Len 字符串长度Mid 取部分字符串Left 从字符串开头取部分字符串Right 从字符串结尾取部分字符串Lcase 转换成小写Ucase 转换成大写Trim 清除字符串开头及结尾的空格符Ltrim 清除字符串开头空格符Rtrim 清除字符串结尾空格符Replace 替换字符串部分字符Instr 判断是否包含于另一个字符串(从起始搜寻)InstrRev 判断是否包含于另一个字符串(从结尾搜寻)Space 任意字符数的空格符String 任意字符数的任一字符StrReverse 反转字符串Split 以某字符分割字符串数据类型转换函数

17、Cint 转换成整形Cstr 转换成字符串Clng 转换成常整数Cbool 转换成布尔函数Cdate 转换成日期函数CSng 转换成单精度CDbl 转换成双精度日期时间函数Date 现在日期Time 现在时间NOw 现在日期时间DateAdd 增加日期DateDiff 两日期差DateSerial 日期设定DateValue 日期设定Year 现在年份Month 现在月份Day 现在天Hour 现在时刻Minute 现在分钟Second 现在秒钟Timer 午夜距现在秒数TimeSerial 时间设定TimeValue 时间所属部分WeekDay 星期名称MonthName 月份名称其它函数A

18、rray 产生数组Asc 字符 ASCII 码Chr ASCII码字符Filter 过滤数组InputBox 输入窗口Join 合并数组中的元素MsgBox 信息窗口Lbound 数组下界Ubound 数组上界指令Const 设定常数Dim 定义变量或者数组Erase 清除数组ReDim 重新声明数组Randomize 起始随机数Rnd 取得随机数ASP对象Session 对象IsEmpty 测试 Session 变量是否存在TimeOut 设定 Session 变量生存周期Abandon 强制清除Session 变量Application对象IsEmpty 测试 Application变量是

19、否存在Lock 锁定 Application变量Unlock 解除 Lock 指令的锁定Cookies 对象Expires 设定 Cookies 变量的生存周期Connection对象Open 打开与数据库的连接Execute 打开 Recordset对象Close 关闭 Connection对象Recordset 对象movefirst 将记录指针移至第一条movelast 将记录指针移至最后一条movenext 将记录指针移至下一条moveprevious 将记录指针移至上一条bof 测试是否为recordset的起始eof 测试是否为recordset的结束open 打开 Recores

20、et 对象close 关闭 recordset对象fields 读取数据的子对象fileds.count 字段个数pagesize 每页记录条数absolutepage 设定为某页pagecount 总页数Absoluteposition 直接跳至某条记录MicrosoftVBscript运行时错误列表(10 进制表示)error#5 无效的过程调用或参数error#5 无效的过程调用或参数error#6 溢出error#7 内存不够error#9 下标越界error#10 该数组为定长的或临时被锁定error#11 被零除error#13 类型不匹配error#14 字符串空间不够error

21、#17 不能执行所需的操作error#28 堆栈溢出error#35 未定义过程或函数error#48 加载 DLL 时出错error#51 内部错误error#52 错误的文件名或号码error#53 文件未找到error#54 错误的文件模式error#55 文件已经打开error#57 设备 I/O 错误error#58 文件已存在error#61 磁盘已满error#62 输入超出了文件尾error#67 文件过多error#68 设备不可用error#70 没有权限error#71 磁盘没有准备好error#74 重命名时不能带有其他驱动器符号error#75 路径/文件访问错误er

22、ror#76 路径未找到error#91 对象变量未设置error#92 For 循环未初始化error#94 无效使用 Null error#322 不能创建必要的临时文件error#424 缺少对象error#429 ActiveX 部件不能创建对象error#430 类不支持 Automation 操作error#432 Automation 操作中文件名或类名未找到error#438 对象不支持此属性或方法error#440 Automation 操作错误error#445 对象不支持此操作error#446 对象不支持已命名参数error#447 对象不支持当前区域设置选项error

23、#448 未找到已命名参数error#449 参数是必选项error#450 错误的参数个数或无效的参数属性值error#451 对象不是一个集合error#453 未找到指定的 DLL 函数error#455 代码资源锁定错误error#457 此键已与该集合的一个元素关联error#458 变量使用了一个 VBScript 中不支持的 Automation 类型error#462 远程服务器不存在或不可用error#481 无效图片error#500 变量未定义error#501 非法赋值error#502 对象不能安全用 Script 编程error#503 对象不能安全初始化error

24、#504 对象不能安全创建error#505 无效的或无资格的引用error#506 类没有被定义error#507 出现一个意外错误error#1001 内存不够error#1002 语法错误error#1003 缺少 :error#1005 缺少 (error#1006 缺少 )error#1007 缺少 error#1010 缺少标识符error#1011 缺少 =error#1012 缺少 If error#1013 缺少 To error#1014 缺少 End error#1015 缺少 Function error#1016 缺少 Sub error#1017 缺少 Then e

25、rror#1018 缺少 Wend error#1019 缺少 Loop error#1020 缺少 Next error#1021 缺少 Case error#1022 缺少 Select error#1023 缺少表达式error#1024 缺少语句error#1025 语句未结束error#1026 缺少整型常数error#1027 缺少 While 或 Until error#1028 缺少 While 和 Until或语句未结束error#1029 缺少 With error#1030 标识符过长error#1031 无效数字error#1032 无效字符error#1033 未结束

26、的字符串常量error#1034 注释未结束error#1037 无效使用 Me 关键字error#1038 loop 语句缺少 do error#1039 无效的 exit 语句error#1040 循环控制变量 for 无效error#1041 名称重定义error#1042 必须是行中的第一个语句error#1043 不能为 non-ByVal 参数赋值error#1044 调用子程序时不能使用括号error#1045 缺少文字常数error#1046 缺少 In error#1047 缺少 Class error#1048 必须在一个类的内部定义error#1049 在属性声明中缺少

27、Let,Set 或 Get error#1050 缺少 Property error#1051 在所有属性的规范中,变量的数目必须一致error#1052 在一个类中不允许有多个缺省的属性/方法error#1053 类的初始化或终止程序没有变量error#1054 属性的 set 或 let 必须至少有一个变量error#1055 错误的 Next error#1056 Default 只能在 Property,Function 或 Sub 中指定error#1057 指定 Default 时必须同时指定 Public error#1058 只能在 Property Get 中指定 Defau

28、lt error#4096 Microsoft VBScript 编译器错误error#4097 Microsoft VBScript 运行时错误error#5016 缺少正则表达式对象error#5017 正则表达式语法错误error#5018 错误的数量词error#5019 正则表达式中缺少 error#5020 正则表达式中缺少)error#5021 字符集越界树形菜单:SCRIPT language=JavaScriptvar lastObj function expandIt(obj)if(lastObj!=null)if(obj=lastObj)if(obj.style.disp

29、lay=none)obj.style.display=;else obj.style.display=none else lastObj.style.display=none;obj.style.display=;else obj.style.display=;lastObj=obj /SCRIPT table width=100%border=0 cellspacing=0 cellpadding=0%dim id id=request(id)dim strsql,rs strsql=select*from p_type where slanguage=1 and typelevel=1 o

30、rder by typename set rs=fgetrslist(strsql)do while not rs.eof%trtd height=25 class=LEFTLINKSimg width=30 height=0 align=absmiddle/b%if rs(isleaf)=0 then%a href=#onClick=javascript:expandIt(kb%=rs(id)%);return false%else%a href=%=request.ServerVariables(SCRIPT_NAME)%?idtree=%=rs(idtree)%end if%=serve

31、r.HTMLEncode(right(rs(typename)&),len(rs(typename)&)-2)%/a/b/td/tr%IF clng(id)=clng(rs(id)then%tr id=kb%=rs(id)%else%tr id=kb%=rs(id)%style=display:none;%end if%tdtable%dim rs1 strsql=select*from p_type where parentid=&rs(id)&and slanguage=1 order by typename set rs1=fgetrslist(strsql)do while not r

32、s1.eof%tr td height=20 class=LEFTLINKSimg width=40 height=0 align=absmiddle/a href=%=request.ServerVariables(SCRIPT_NAME)%?idtree=%=rs1(idtree)%&id=%=rs(id)%=server.HTMLEncode(right(rs1(typename)&),len(rs1(typename)&)-2)%/a/td/tr%rs1.movenext loop rs1.close set rs1=nothing%/table/td/tr%rs.movenext l

33、oop rs.close set rs=nothing%/table 四、ASP 文件中的安全问题ASP中可能有哪些安全问题?ASP具有简单、易用、多功能,可扩充性等强大功能,但也存在一些问题。譬如,如果使用 ASP的话,可能会导致网络的安全性大大降低了!下面为大家举一个例子,请按照下面的步骤:(1)从 http:/ test.dll文件拷贝到c:windowssystem(如果你使用的是NT的话,请拷贝到相应的目录中);(2)接下来打开开始/运行 菜单输入 regsvr32 test.dll命令;(3)拷贝解压后的文件包中的那个index.asp到你的服务器目录(如果你使用的是PWS调试可以

34、拷贝到c:inetpubwwwroot,NT请拷贝到相应的目录);(4)换一台机器用IE 浏览 index.asp文件看一看(你看到的是出错代码,但是实际上程序已经运行了),你再返回你的机器看一看下面是不是多了一个文件?一个名为xuankong.dat的文件(其实如果我愿意,你的c:autoexec.bat文件页可以被我打开并写进去一些像 format c:/q/u等命令,那么等你下次重新启动的时候,结果就不言自明了)。ASP页面的安全问题是如何产生的?下面我们来看一下到底是怎么回事,你刚才拷贝的那些dll文件其实是我使用Visul Basic5 开发的一个主件,这个文件是通过以下步骤产生的:

35、(1)打开 VB5新建一个 ActiveX.dll文件,吧下面的代码输入进去:Private Declare Function ExitWindowsEx Lib user32_(ByVal uFlags As Long,ByVal dwReserved As Long)_As LongSub Xuankong()请不要加上 privatea$=InputBox(请输入你的姓名,如果你输入的是xuankong+Chr(13)+Chr(10)+则会在你的系统中生成一个xuankong 文件+Chr(10)+Chr(13)+否则你的机器可能会重起,请输入,xuankong)If a$=xuanko

36、ng ThenOpen c:xuankong.dat For Append As#Write#1,我的朋友,这是一个asp 主件测试程序#Write#1,hello world!this is a test#Write#1,如果你看到这个文件测试就成功!elseExitWindowsEx&H43,0使用 API 函数重新启动机器End ifClose#1End sub(2)把工程名改为dll,类模块改为test,然后把这个工程生成dll文件到c:windowssystem目录下面。(3)新建一个index.asp文件下面的代码输入进去:html /html(4)拷贝 index.asp到你的服

37、务器内,按照上面的方法调试!总结:上面所说的是ASP主件的安全问题!另外如果有些作者再写ASP主件的时候不小心留下系统 bug!那就更加不容易发现了!也可能会带来意想不到的问题。五、关于如何保障Winnt+asp+sql web站点的安全经验以下是我的一些经验,希望对你有用,但你要知道,绝对的安全是没有的。这才是一个网管存在的理由。所以。未雨绸缪是件好事。但亡羊补牢也不是下策。请看我的经验:1。多看看ms的安全公告,这是首选。订阅安全技术杂志。(MS免费的!)如果是正版的 nt,则会有最新的安全E-mail。保证及时更新。2。多大补丁,一定要注意顺序,如果安装了系统软件,则还要重补。(如后面加

38、上了smtp 服务,则还要重补sp1 等等,否则可能导致旧文件不会被覆盖)。3。提高安全策略,也可以用微软的安全模板。有一些很好的自动模板。可以根据需要自动加上。4。加大审核力度,审核权限比较大的操作。5。密码按时更改。必须符合策略。6。常上一些安全论坛。如:绿盟科技,妖狐站点。7。账号的级别一定要多分一些,如果可一实现功能,就不要给更大权限。8。去掉多余的服务。如:(ftp,smtp,nntp,telnet)多余的脚本,例子。如IIS 中好多的脚本库,都可以不要。9。去掉一些危险的命令。不要共享c 盘。10。常看看日志,事件。11。不要安装html 的远端管理。12。最好安装一些黑客工具,模

39、拟攻击。看看是否出了问题。13。安装端口扫描工具。看看是否有些不用的开放端口。14。安装一些防止窃听的工具,去除一些隐藏在端口的sniffer,防止密码数据被截获。15。远程管理时最好调试端管理。密码加密策略高一些。防止被截获。16。用注册表修改掉某些选项。如自动显示最后一个登录着的姓名。17。改掉 administrator的缺省姓名。这样可以多一级保护!18。密码策略19。密码的安全策略。多少位的密码是安全的。这个很怪。按照ms的加密算法。只有14 位以上的密码是可能安全的。但实际上很少有人能记住那么多位的密码。但14 位一下。7 位密码比较安全。(很怪吧。)微软工程师说有时7 位比 10

40、 位还要保险。呵呵,具体原因说起来比较复杂。我是给我老弟讲课的。省略吧。20。建议密码有字母。数字。大小写组成。最好加上一些如!#¥%()等的字符。也很难被猜到。21。用户名改掉缺省的admini.后,可以建一个14 位长的管理员名。可以全部用字母。这样就加大了一级保护。22。加大策略。防止用枚举法猜出账号名。23。加入防止5 次登录失败后,自动锁定账号20 分中。防止暴力法突破。24。建立分类的密码策略。不要用一些内置账号。如“sa”。25。将 sa 的密码加大。最好不要常用他。建一个另外的管理员账号。然后对每一个自建的数据库都建一个分类账号。asp 中最好用他来连接。这样就可以保障其他数据

41、库的安全。26。去掉一些权限。不允许普通用户用比较危险的存储过程。27。不允许除管理员外的账号远程连接。或是加上命名管道。27。asp 如果能用dsn,就不要用连接字符串。并采取包含文件的模式包含进来。六、Web程序中网页间数据传递方法小结介绍我们总是会遇到这样的情况,需要将数值从一个网页传递到另一个网页。在这篇文章中,向你展示了几种从一个网页向另一个网页传递数值的几种方法。在此例子中,创建的网页由一个文本控件和几个按钮控件组成。在文本框中输入的数据通过被标识在按钮控件中的不同方法从一个网页传递到另一个网页。Response.Redirect让我们首先看一看如何使用Response.Redir

42、ect方法传递数据。这是它们之中最简单的方法。在文本框中输入一些数据,并且当你输入完成数据后,按下“Respose.Redirect”按钮。我们会得到一个提示,有时我们想在catch 程序中传递另一个网页,意味着捕捉到例外程序并且向另一个网页传递。如果你试图这样做,它会给你一个System.Threading例外程序。因为你想遗留下一个线程向另一个网页传递数据,所以这个例外程序就会被抛出。Response.Redirect(WebForm5.aspx,false);这个语句告诉编译器定位到“WebForm5.aspx”,这里的“false”意味着在当前网页不能结束你正在做的事情。应该看一看线程

43、发布命令的System.Threading类。在下面,看一看按钮事件的C#代码。“txtName”文本控件的名字,文本框的内的值传递到一个叫做“WebForm5.aspx”的网页。在“?”之后的“Name”符号只是一个临时的响应变量,这个变量保持着文本的数值。private void Button1_Click(object sender,System.EventArgs e)/Value sent using HttpResponse Response.Redirect(WebForm5.aspx?Name=+txtName.Text);好的,到这种观点为止,你使用Response 发送了数

44、值。刚刚,在此我收集到了这些数值,所以在“WebForm5.aspx”page_Load事件中,写入这些代码。首先,我们检查到输入的值不为null。如果不是这样,我们只是简单地在网页上使用Label 控件显示数值。注意:如果你使用Response.Redirect方法来传递这些数值,所有这些数值在浏览器的URL中都是不可见的。你绝不能使用Response.Redirect来传递信用证号码和机密信息。if(Request.QueryStringName!=null)Label3.Text=Request.QueryStringName;Cookies接下来使用Cookies。Cookies 在服

45、务器端创建,但是客户端省略。在此“Cookies”按钮的 click事件中,写入以下代码:HttpCookie cName=new HttpCookie(Name);cName.Value=txtName.Text;Response.Cookies.Add(cName);Response.Redirect(WebForm5.aspx);首先,创建一个cookie 命名为“cName”。既然一个cookie 实例可以拥有许多数值,告诉编译器这个cookie 持有“Name”数值。我们将它赋值给TextBox 并且最结后将它加入Response 流,再使用Response.Redirect方法传递

46、给其它网页。让我们看一看如何得到被另一个网页传递的cookie 数值。if(Request.CookiesName!=null)Label3.Text=Request.CookiesName.Value;如你所看到的,象我们以前做一的一样正是使用同一种方法,刚刚我们在Request.QueryString之内,使用了Request.Cookies。记注一些浏览器不接收cookies。用文本+ASP打造新闻发布系统/图片上传SCRIPT RUNAT=SERVER LANGUAGE=VBSCRIPTFunction GetUpload(FormData)Dim DataStart,DivStr,D

47、ivLen,DataSize,FormFieldData 分隔标志串(+CRLF)DivStr=LeftB(FormData,InStrB(FormData,str2bin(VbCrLf)+1)分隔标志串长度DivLen=LenB(DivStr)PosOpenBoundary=InStrB(FormData,DivStr)PosCloseBoundary=InStrB(PosOpenBoundary+1,FormData,DivStr)Set Fields=CreateObject(Scripting.Dictionary)While PosOpenBoundary 0 And PosClos

48、eBoundary 0 name 起始位置(name=xxxxx),加 6 是因为 name=长度为 6 FieldNameStart=InStrB(PosOpenBoundary,FormData,str2bin(name=)+6 FieldNameSize=InStrB(FieldNameStart,FormData,ChrB(34)-FieldNameStart()的 ASC 值=34 FormFieldName=bin2str(MidB(FormData,FieldNameStart,FieldNameSize)filename 起始位置(filename=xxxxx)FieldFil

49、eNameStart=InStrB(PosOpenBoundary,FormData,str2bin(filename=)+10 If FieldFileNameStart PosCloseBoundary And FieldFileNameStart PosopenBoundary Then FieldFileNameSize=InStrB(FieldFileNameStart,FormData,ChrB(34)-FieldFileNameStart()的 ASC 值=34 FormFileName=bin2str(MidB(FormData,FieldFileNameStart,Field

50、FileNameSize)Else FormFileName=End If Content-Type起始位置(Content-Type:xxxxx)FieldFileCTStart=InStrB(PosOpenBoundary,FormData,str2bin(Content-Type:)+14 If FieldFileCTStart PosCloseBoundary And FieldFileCTStart PosOpenBoundary Then FieldFileCTSize=InStrB(FieldFileCTStart,FormData,str2bin(VbCrLf&VbCrLf)-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 工程图纸

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁