《《Web数据库技术》-第5章.ppt》由会员分享,可在线阅读,更多相关《《Web数据库技术》-第5章.ppt(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第5章章 ASP中的内建对象中的内建对象 lHTML中使用表单lASP内建对象的语法、属性、方法及事件lGlobal.asa文件的作用本章学习要点5.1 HTML中表单的使用中表单的使用 表单是与用户交互信息的主要手段,在HTML页面中起着重要作用。一个表单至少应该包括说明性文字、用户填写的表格、提交和重填按钮等内容。用户填写了所需的资料之后,按下“提交”按钮,所填资料就会通过专门的CGI接口传到Web服务器上。网页的设计者随后就能在Web服务器上看到用户填写的资料,从而完成了从用户到设计者之间的反馈和交流。lButton:普通按钮。lradio:单选按钮。lcheckbox:复选框。lse
2、lect:下拉式菜单。ltext:单行文本框。ltextarea:多行文本框。lsubmit:提交按钮。lreset:重填按钮。用HTML设计表单常用的标记是:、和等标记。表单中主要包括下列元素:表单标记表单标记 标记的主要作用是设定表单的起止位置,并指定处理表单数据程序的URL地址。基本语法如下:用于设定处理表单数据程序用于设定处理表单数据程序URL的地址的地址 指定数据传送到指定数据传送到服务器的方式服务器的方式 设定表单的名称设定表单的名称 按下相应的按钮之后要执行按下相应的按钮之后要执行的子程序的子程序 指定输入数据结果指定输入数据结果显示在哪个窗口显示在哪个窗口 表单输入标记表单输入
3、标记 用法如下:设定表单的对齐位置设定表单的对齐位置 设定当前设定当前变量名称变量名称 输入数据的类型输入数据的类型 设定输入默设定输入默认值认值 设定图像文件的地址设定图像文件的地址 此项被默认选中此项被默认选中 输入单行文本的最大输入字符数输入单行文本的最大输入字符数 输入多行文本的最大输入字符数输入多行文本的最大输入字符数。在按下输入时调用指定的子程序在按下输入时调用指定的子程序 当前项被选择时调用指定的子程序当前项被选择时调用指定的子程序 下拉菜单标记下拉菜单标记 用标记可以在表单中插入一个下拉菜单,它需与标记联用,因为下拉菜单中的每个选项要用标记来定义。标记的语法如下:设定下拉式菜单
4、的名称设定下拉式菜单的名称 设定菜单框的高度设定菜单框的高度 设定为可以进行多选设定为可以进行多选 选项标记选项标记 该标记为下拉菜单中一个选项,语法如下:表示当前项被默认选中表示当前项被默认选中 表示该项对应的值表示该项对应的值 多行文本输入标记多行文本输入标记 该标记为建立多行文本输入框的专用标记,其语法如下:文本框名称文本框名称 宽度宽度 高度高度 换行控制换行控制 表单实例代码可参见教材例sample5-01.asp,运行结果如下图所示:在面向对象编程中,对象就是指由作为完整实体的操作和数据组成的变量,是基于特定模型的。在对象中客户使用对象的服务,通过由一组方法或相关函数的接口访问对象
5、的数据,然后客户端调用这些方法执行某种操作。ASP提供了可在脚本中使用的内建对象。通过这些对象,用户更容易收集通过浏览器请求发送的信息,响应浏览器请求以及存储用户信息,从而使对象开发者摆脱很多烦琐的工作。5.2 Request 对象对象 Request对象是ASP编程中使用最频繁的对象之一。使用 Request 对象可以访问任何基于 HTTP 请求传递的所有信息,包括从 HTML 表格用POST方法或GET方法传递的参数、Cookie和用户认证等。通过Request 对象能够访问客户端发送给服务器的二进制数据。Request 的语法如下:Request.集合|属性|方法(变量)其中,集合可以被
6、指定为Form或者QueryString。变量为提交页面中使用的Form对象的变量名。Form集合 Form集合通过使用 POST 方法的表格检索发送到 HTTP 请求正文中的表格元素的值。语法:Request.Form(element)(index)|.Count指定集合要检索的指定集合要检索的表格元素的名称表格元素的名称 可选,可访问某参可选,可访问某参数中多个值中的一数中多个值中的一个个集合中元素的个数集合中元素的个数 集合按请求正文集合按请求正文中参数的名称来中参数的名称来索引索引 请填写你的爱好请填写你的爱好 足球足球 乒乓球乒乓球%For Each i In Request.For
7、m(hobby)Response.Write i&Next%程序程序5.2 sample5-02.aspQueryString集合 QueryString集合用来检索 HTTP 查询字符串中变量的值,HTTP查询字符串由问号(?)后的值指定。如string sample 生成值为 this is a sample 的变量名字符串。通过发送表格或由用户在其浏览器的地址框中键入查询也可以生成查询字符串。语法:Request.QueryString(variable)(index)|.Count QueryString集 合 可 以 用 名 称 来 检 索QUERY_STRING变量。Request
8、.QueryString(参数)的值是出现在QUERY_STRING中所有参数值的数组。通过调用Request.QueryString(parameter).Count 可以确定参数有多少个值。也可以使用QueryString来达到与前一个范例相同的功能。这时只需要将 Request.Form 部分作如下替换即可:%For Each i In Request.querystring(hobby)Response.Write i&Next%Cookie Cookie 是由 Internet 站点创建的、将信息存储在计算机上的文件,并且一旦将 Cookie 保存在计算机上,则只有创建该 Cooki
9、e 的网站才能读取它。每个Web站点的Cookie与其他所有站点的Cookie存在同一文件夹中的不同文件内(Windows 2000系统下,可以在 C:Documents and SettingsAdministratorCookies的目录下找到它们)。一个 Cookie 就是一个惟一标识客户的标记,Cookie可以包含在一个对话期或几个对话期之间某个Web站点的所有页面共享的信息,使用Cookie还可以在页面之间交换信息。Request提供的Cookies集合允许用户检索在HTTP请求中发送的Cookie的值。1什么是Cookie?语法:Request.Cookies(Cookie)(ke
10、y)|.attribute 其中:Cookie指定要检索其值的Cookie。key是可选参数,用于从Cookie字典中检索子关键字的值。attribute指定Cookie自身的有关信息。如:HasKeys只读,指定Cookie是否包含关键字。2Cookie的工作原理 Cookie通过HTTP Header从服务端返回到浏览器上。服务端首先在响应中利用Set-Cookie header来创建一个Cookie,在浏览器后面请求的Cookie Header中返回这个Cookie来完成浏览器的认证。3在ASP中创建和读取Cookie 当利用ASP创建了一个Cookie之后,就可以使用Response对
11、象的Cookie集合了。可以创建两种Cookie:一种是单值的;另一种可以认为是Cookie字典类型,即允许多个键值对的存在。创建单值的Cookie相对简单,如:下面是一个比较完整的例子:Path属性:用来更加严格地限定浏览器发送属性:用来更加严格地限定浏览器发送Cookie。Domain属性:限定了属性:限定了Cookie发送的网站,发送的网站,Secure属性:当该属性设为属性:当该属性设为True时,则传递中就实行了加密算法,时,则传递中就实行了加密算法,如果使用安全接口层,就可以使用这个属性。如果使用安全接口层,就可以使用这个属性。4创建多个Cookie 要创建多个Cookie,只需在
12、Response对象的Cookies集合中简单地定义多个名称即可。不过,许多浏览器对一个指定网站就限定了34个Cookie。创建多个Cookie还有一种选择,就是创建一个Cookie字典,一个Cookie字典中可以含有多个键值对,下面是一个字典的例子:接受这样的Cookie值,还可以利用以前的Response对象的Cookies集合,就可以将其全部显示,这样显示出的是没有经过解码的Header中的源代码,即Header中的信息,它们一般都用于调试,也可以按每一个键的相应名称显示相应值,如下例:5不利用Cookie传递信息(1)利用QueryString传递信息 A Href=/nextpage
13、.asp?点击这里点击这里A HREF=/thirdpage.asp?点击这里点击这里nextpage.asp这个脚本的优点是适用于所有浏览器,但是用这样的传递来保存信息实在太麻烦了,所有的连接都要考虑到,每一个ASP都必须作相应处理,而且用户很可能“一不小心”就溜出了这种跟踪之外。此外,修改起来也过于麻烦。另一个缺点是针对不同的浏览器必须考虑长度限制,而且安全性没有保证。(2)利用Form的hidden类型传递信息 INPUT Name=Username TYPE=hidden VALUE=input name=Username Type=hidden Value=nextpage.asp(
14、3)两种方法的结合 input name=Username Type=Hidden Value=a href=/nextpage.asp?点击这里点击这里 可以将这两种方法结合起来,而在接受时可以没有任何区别。这里需要补充的是,对于Response对象,可以不指定Form集合和QueryString集合来进行接受,这时系统会自动辨认。例如:ServerVariables 在浏览器中浏览网页的时候使用的传输协议是HTTP,在HTTP的标题文件中会记录一些客户端的信息,如:客户的IP地址等。有时服务器端需要根据不同的客户端 信 息 做 出 不 同 的 反 应,这 时 候 就 需 要 用 Serve
15、rVariables 集合获取所需信息。语法:Request.ServerVariables(服务器环境变量)可以使用以下脚本打印出所有的服务器环境变量。Server VariableValue ALL_HTTP客户端发送的所有HTTP标题文件CONTENT_LENGTH客户端发出内容的长度CONTENT_TYPE内容的数据类型。如:“text/html”。同附加信息的查询一起使用,如HTTP查询GET、POST和PUTLOCAL_ADDR返回接受请求的服务器地址。如果在绑定多个IP地址的多宿主机器上查找请求所使用的地址时,这条变量非常重要LOGON_USER用户登录WindowsNT的账号Q
16、UERY_STRING查询HTTP请求中问号(?)后的信息REMOTE_ADDR发出请求的远程主机(client)的IP地址REMOTE_HOST发出请求的主机(client)名称。如果服务器无此信息,它将设置为空的REMOTE_ADDR变量REQUEST_METHOD该方法用于提出请求。相当于用于HTTP的GET、HEAD、POST等SERVER_NAME出现在自引用URL中的服务器主机名、DNS或IP地址SERVER_PORT发送请求的端口号表表5-1 5-1 服务器环境变量服务器环境变量 5.3 Response对象 Request用于获取客户端HTTP信息,而Response对象则用来
17、控制发送给用户的信息,包括直接发送信息给浏览器、重定向浏览器到另一个URL或设置Cookie的值。语法:Response.collection|property|method Response属性(1)Buffer:指示是否缓冲页输出。(2)Charset:将字符集名称附加到 Response 对象中content-type标题的后面。对于不包含Response.Charset 属性的ASP页,content-type 标题将为:content-type:text/html。可以在.asp文件中指定content-type标题,如:将产生以下结果:content-type:text/html;
18、charset=gb2312 (3)ContentType:指定服务器响应的HTTP内容类型。如果未指定ContentType,默认为text/html。(4)Expires:指定了在浏览器上缓冲存储的页距过期还有多少时间。(5)ExpiresAbsolute:ExpiresAbsolute属性指定缓存于浏览器中的页面的确切到期日期和时间。Response方法(1)Clear方法:清除缓冲区中的所有HTML输出。(2)End方法:使Web服务器停止处理脚本并返回当前结果。(3)Flush方法:立即发送缓冲区中的输出。(4)Redirect方法:浏览器立即重定向到程序指定的URL。(5)Writ
19、e方法:将指定的字符串写到当前的HTTP输出。Response集合 Response对象只有一个集合Cookies。Cookies 集合设置Cookie的值。若指定的 Cookie不存在,则创建它;若存在,则设置新的值并且将旧值删去。语法:Response.Cookies(Cookie)(key)|.attribute=value attribute 参数可以是下列之一:Domain:若被指定,则Cookie将被发送到对该域的请求中去。Expires:指定Cookie的过期日期。为了在会话结束后将Cookie存储在客户端磁盘上,必须设置该日期。若此项属性的设置未超过当前日期,则在任务结束后,C
20、ookie也将到期。HasKeys:指定Cookie是否包含关键字。Path:若被指定,则Cookie将只发送到对该路径的请求中。如果未设置该属性,则使用应用程序的路径。5.4 Application和Session对象 Application对象 1属性属性 可以使用以下句法设置用户定义的属性,也可称为集合。Application(属性属性/集合名称集合名称)=值值 使用如下脚本声明并建立Application对象的属性:一旦分配了Application对象的属性,它就会持久地存在,直到关闭Web服务器服务,使Application停止为止。Application对象的属性特别适合在应用程序
21、的用户之间传递信息。2方法方法Application对象有两个方法,它们都是用于处理多个用户对存储在Application中的数据进行写入的问题。程序 sample5-06.asp(1)Lock 方法禁止其他用户修改Application对象的属性(2)Unlock 方法允许其 他 用 户 修 改Application对象的属性3事件事件(1)Application_OnStartApplication_OnStart 事 件 在 首 次 创 建 新 的 会 话 (即 Session_OnStart 事件)之前发生。当 Web 服务器启动并允许 对 应 用 程 序 所 包 含 的 文 件 进
22、行 请 求 时,触 发 Application_OnStart 事件。Application_OnStart 事件的处理过程必须写在Global.asa文件中。Application_OnStart 事件的语法如下:Sub Application_OnStartEnd Sub(2)Application_OnEnd Application_OnEnd事 件 在 应 用 程 序 退 出 时 于Session_OnEnd事件之后发生,Application_OnEnd 事件的处理过程也必须写在Global.asa文件中。使用 Application 对象时必须注意:l不能在Application
23、对象中存储ASP内建对象。l若将一个数组存储在Application对象中,请不要直接更改存储在数组中的元素。Session对象 与Application对象具有相近作用的另一个非常实用的ASP内建对象就是Session,使用 Session 对象可以存储特定的用户会话所需的信息。当用户在应用程序的页面之间跳转时,存储在Session对象中的变量不会清除,而用户在应用程序中访问页面时,这些变量始终存在。通过向客户程序发送惟一的Cookie可以管理服务器上的Session对象。Session对象最常见的作用就是存储用户的首选项。1Session的工作原理 Session其实是利用Cookie进行
24、信息处理的(参见前面有关Cookie的介绍)。当用户发出请求后,服务端就在用户浏览器上创建了一个Cookie,在这个Session结束时,意味着这个Cookie过期了。为这个用户创建的Cookie的名称是ASPSESSIONID,这个Cookie的惟一目的就是为每一个用户提供不同的身份认证。2Session属性(1)SessionID:返回用户的会话标识。(2)TimeOut:为应用程序的Session对象指定超时时限(以分钟为单位)。3方法 Session对象仅有一个方法Abandon。Abandon方法可以删除所有存储在Session对象中的对象并释放这些对象所占的资源。如果未明确地调用A
25、bandon方法,一旦会话超时,服务器将删除这些对象。当服务器处理完当前页时,释放会话状态。如:4事件事件 Session对象有两个事件,用于在Session对象的启动和释放。(1)Session_OnStart:该事件在服务器创建新会话时发生。服 务 器 在 执 行 请 求 的 页 之 前 先 处 理 该 脚 本。Session_OnStart事件是设置会话期变量的最佳时机,因为在访问任何页之前都会先设置它们。(2)Session_OnEnd事件该事件在会话超时或被放弃时发生。5.5 Global.asa文件的使用 Global.asa文件其实是一个可选文件,程序编写者可以在该文件中指定事件
26、脚本,并声明具有会话和应用程序作用域的对象。该文件的内容不是用来给用户显示的,而是用来存储事件信息和应用程序全局使用的对象。该文件的名称必须是Global.asa且必须存放在应用程序的根目录中。每个应用程序只能有一个Global.asa 文件。在Global.asa文件中,如果包含的脚本没有用标记封装,或定义的对象没有会话或应用程序作用域,则服务器将返回错误。在Global.asa文件中声明的过程只能从一个或多个与Application_OnStart、Application_OnEnd、Session_OnStart和Session_OnEnd事件相关的脚本中调用。Sub Applicati
27、on_OnStartVisitorCountFilename=Server.MapPath(/ex2)+VisitCount.txtSet FileObject=Server.CreateObject(Scripting.FileSystemObject)Set Out=FileObject.OpenTextFile(VisitorCountFilename,1,False,False)Application(visitors)=Out.ReadLineApplication(VisitorCountFilename)=VisitorCountFilenameEnd Sub=Sub Appli
28、cation_OnEndSet FileOutObject=Server.CreateObject(Scripting.FileSystemObject)Set Out=FileOutObject.CreateTextFile(Application(VisitorCountFilename),True,False)Out.WriteLine(application(visitors)End Sub=Sub Session_OnStartSession.Timeout=5Application(visitors)=Application(visitors)+1Session(ID)=Sessi
29、on.SessionIDEnd Sub标标准准的的Global.asa 文文件件:5.6 ASP内建对象Server Server 对象提供对服务器上的方法和属性的访问,其中大多数方法和属性是作为实用程序的功能服务的。有了Server对象,就可以在服务器上启动ActiveX对象例程,并使用 Active Server服务提供象HTML和URL编码这样的函数。语法:Server.property|method 属性属性 ScriptTimeout 超时值,表示在脚本运行超过这一时间之后即作超时处理。下面的代码指定服务器处理脚本在100 秒后超时。这 里 需 要 注 意 的 是,通 过 使 用 元
30、 数 据 库 中 的AspScriptTimeout属性可以为Web服务或 Web 服务器设置默认的ScriptTimeout值。ScriptTimeout属性不能设置为小于在元数据库中指定的值。例如,如果NumSeconds设置为60秒,而元数据库设置包含了默认值90秒,则脚本在90秒后超时。方法 1 1HTMLEncodeHTMLEncode方法:方法:允许对特定的字符串进行HTML编码。2 2URLEncodeURLEncode方方法法:可以根据URL规则对字符串进行正确编码,当字符串数据以URL 的形式传递到服务器时,在字符串中不允许出现空格,也不允许出现特殊字符。3 3MapPathMapPath方方法法:指定的相对或虚拟路径映射到服务器的相应物理目录上。语法:Server.MapPath(Path)4CreateObjectCreateObject方方法法:它用于创建已经注册到服务器上的 ActiveX 组件实例。语法:Server.CreateObject(Component Name)本章小结本章小结 本章详细介绍了表单的使用及ASP的5个常用而重要的内建对象的语法、属性、方法和事件。学完本章,读者应该能够自行编写出一定水平的ASP程序。