1 / 52

第四章 Session 和 Application 对象

第四章 Session 和 Application 对象. • Session 对象记载某一特定的客户信息,不同的客户用不同的 Session 对象来记载 • Application 对象记载所有访问该应用程序的客户信息. 4.1 利用 Session 对象记载特定客户信息. • Session 对象记载某一特定的客户信息,不同的客户用不同的 Session 对象来记载 • Session 对象有效期:默认为 20 分钟,可设定

orsen
Download Presentation

第四章 Session 和 Application 对象

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第四章 Session和Application对象 • Session对象记载某一特定的客户信息,不同的客户用不同的Session对象来记载 • Application对象记载所有访问该应用程序的客户信息

  2. 4.1 利用Session对象记载特定客户信息 • Session对象记载某一特定的客户信息,不同的客户用不同的Session对象来记载 • Session对象有效期:默认为20分钟,可设定 • Session工作原理:在应用程序中,当客户端启动一个Session时,ASP会自动生成一个SessionID,并将该SessionID回送客户端浏览器,而浏览器则将该SessionID保存在Cookies中。当客户端再次向服务器发出HTTP请求时。ASP检查申请表头的该SessionID,并回应相应该SessionID的该Session信息。

  3. 4.1.1 Session对象简介 • Session对象的属性 SessionID:存储用户的SessionID Timeout: Session的有效期长度 • Session对象的方法 Abandon:清除Session对象 • Session对象的事件 Session_OnStart:该Session“开始前”所执行的程序 Session_OnEnd: 该Session“结束后”所执行的程序

  4. 4.1.2 利用Session存储信息 •格式: Session(“名字”)=变量/字符串 •例如: <% Session(“user_name”)=hisname Session(“age”)=20 Session(“college”)=“上海大学” %>

  5. 4.1.3 Session用法示例 <% Dim user_name,age user_name="卓云" age=22 Session("user_name")=user_name Session("age")=age Response.write "<a href='5-2.asp'>单击显示用户名</a>" %>

  6. <%Option Explicit %> <html> <head> <title>5-2.asp </title> </head> <body> <% Dim user_name user_name=Session("user_name") Response.Write user_name & "您好,欢迎您<br>" Response.Write "您的年龄是" & Session("Age") %> </body> </html>

  7. 4.1.4 利用Session存储数组信息 • Session存储数组与存储单个变量的方法基本上一样的,但Session将传入的数组视为一个整体,只能对整个数组进行整体存取,而不能对数组元素分别进行存取。 • 例如: <%Session(“arry”)(4)=“埔东新区”%> 是不可以的。

  8. 4.1.4 Session存储数组示例 <% Dim user_name() Redim user_name (5) user_name(0)="白芸" user_name(1)="赵敏" Session("arry_user_name")=user_name '传入数组到Session对象 Response.Write "<a href='5-4.asp'>单击显示数组信息</a>" %>

  9. 4.1.4 Session存储数组示例 <% Dim user_name ’注意声明方式,未加扩号 user_name=Session("arry_user_name") '返回Session数组元素 Response.Write user_name(0) & "您好,欢迎您<br>" Response.Write user_name(1) & "您好,欢迎您<br>" %>

  10. 4.1.5 Timeout属性 • 格式: Session.Timeout=<整数(分钟)> • 例如: <%Session.Timeout=30 %> 如设定值小于默认值20分钟,则仍以默认值为准。

  11. 4.1.6 Abandon属性 • 格式: Session. Abandon • 例如: <% Session(“user_name”)=“布什” Session. Abandon Response.Write Session(“user_name”) %>

  12. 4.2 利用Application对象记载所有客户信息 Session对象记载特定客户信息,而Application对象记载所有的客户信息。通过Application对象,所有的客户可以相互交流信息,典型的如聊天室,大家的发言均放在同一个Application对象中。这样一来,彼此就可以看到发言内容。

  13. 4.2.1 Application对象简介 • Application对象是所有客户一起使用的。通过该对象,所有客户均可存取Application定义的同一名称的参数。 • Application对象的有效期没有限制,直到应用程序停止。 • Application对象的方法与事件

  14. 4.2.1 Application对象简介 • Application对象的方法与事件 Lock:锁定Application对象 Unlock:解除锁定 Application_OnStart:该Application “开始前”所执行 的程序 Application_OnEnd:该Application “结束后”所执行 的程序

  15. 4.2.2 利用Application存储信息 •格式: Application(“名字”)=变量/字符串 •例如: <% Application.Lock Application.(“user_name”)=user_name Application.(“school”)=“清华大学” Application.Unlock %>

  16. 4.2.2 Application用法示例 <form action="" method="post" name="form1"> 请发言:<input type="text" name="pronunciation" size="30"> <input type="submit" VALUE=" 确 定 "> </form> <% If trim(request("pronunciation"))<>"" Then Application.Lock Application("show")= request("pronunciation") & "<br>" & Application("show") Application.Unlock End if Response.Write Application("show") %>

  17. 4.2.2 Application用法示例

  18. 4.2.2 Application用法示例 •计数器 <% Application.Lock Application(“counter”)= Application(“counter”)+1 Application.Unlock Response.Write “您是第”& Application(“counter”)&”访客” %>

  19. 4.2.3 利用Application存储数组信息 • 与利用Session存储数组类似,Application存储数组信息时也同样要将数组作为一个进行存取,而且要在存储前后使用Lock和Unlock。 • 读取: <% Dim user_name User_name=Application(“array_user_name”) Response.Write user_name(0)&”您好!<br>” %>

  20. 4.2.3 利用Application存储数组信息(续) • 存储: <% Dim user_name() Redim user_name(5) user_name(0)=“普京” Application.Lock Application(“array_user_name”)=user_name Application.Unlock %>

  21. 4.3 Global.asa文件 • Global.asa文件的功能是定义Session、Application对象事件所对应的程序。当Session或Application第一次被调用或结束时,将运行该文件中对应的程序。 • 注意 • 文件必须文本文件,文件名必须是Global.asa,且必须存放在应用程序的根目录下。 • 在Global.asa中,不能写成<%…%>格式。 • 在Global.asa中,不能包含任何输出语句。

  22. Global.asa文件格式 <Script language=“VBScript” runat=“server”> Sub Application_OnStart ‘子程序 End Sub Sub Application_OnEnd ‘子程序 End Sub Sub Session_OnStart ‘子程序 End Sub Sub Session_OnEnd ‘子程序 End Sub </Script>

  23. Global.asa示例: <SCRIPT language="VBScript" runat="server"> Sub Application_OnStart Application.Lock Application("user_online")=0 Application.Unlock End Sub Sub Session_OnStart Application.Lock Application("user_online")= Application("user_online")+1 Application.Unlock end sub Sub Session_OnEnd Application.Lock Application("user_online")= Application("user_online")-1 Application.Unlock End Sub </SCRIPT>

  24. 5-7.asp <% Option Explicit %> <html> <head> <title>显示网站在线人数</title> </head> <body> <h2 align="center">我的个人主页</h2> <% Response.Write "<p align='center'>当前共有" & Application("user_online") & "人在线" %> </body> </html>

  25. 4.3.2 Global.asa示例

  26. 第五章 ASP存取数据库 本章重点: • ASP与数据库连接的基本方法 • ASP对数据库的在线操作方法

  27. 5.1 数据库预备知识 SQL Server Oracle Access 由于使用标准SQL语言,存取Access数据库与存取SQL Server/Oracle数据库基本上是一样的,后台数据库的变化对ASP源程序没有什么影响,只需相应改变数据库的连接语句就可以了。

  28. 5.1.1 建立Access数据库 在Access数据库系统中示范

  29. 5.1.2 设置数据源 在Windows系统中示范

  30. 5.2 利用数据源存取组件存取数据库 ODBC,Open DataBase Connection ADO,ActiveX Data Objects, • 提供Web页面与数据库结合的数据库技术,可以将传统的数据库后台管理模式放到前台的Web页面上来进行,是得数据库的存取更新简单、方便。 • Connection、Command和Recordset 三个对象

  31. 5.2.1 数据库连接方法 <% Dim db Set db=Server.Createobject(“ADODB.Connection”) db.Open”WWWlink” ‘打开数据源WWWlink >% 注意:第三句打开的是数据源WWWlink,不是数据库WWWlink.bdb,数据源与数据库可以同名,也可以不同名。

  32. 5.2.1 数据库连接方法(续) <% Dim db Set db=Server.Createobject(“ADODB.Connection”) db.Open “Dbq=”&Server.Mappath(“wwwlink.mdb”)&”;Driver={Microsoft Access Driver(*.mdb)}” >%

  33. 5.2.2 利用Select语句查询记录 Select 字段列表 From 数据表列表 [Where 条件][Order By 字段] 例: Select name,URL,intro From link Select * From link Select * From link Where name=“新浪” Select * From link Order By link_id

  34. 5.2.2 利用Select语句查询记录例 <% '以下连上数据库,建立一个Connection对象实例db dim db set db=Server.Createobject("ADODB.Connection") db.Open "DBQ="&Server.Mappath("WWWAccess.mdb")&";DRIVER={Microsoft Access Driver (*.mdb)};" '以下建立Recordset对象实例rs dim strsql,rs strsql="select * from link order by link_id desc" set rs=db.Execute(strsql) %>

  35. 5.2.2 利用Select语句查询记录例 <% do while not rs.Eof '只要不是结尾就执行循环 %> <tr> <td><%=rs("Name")%></td> <td><aref="http://<%=rs("URL")%>"target="new">_ <%=rs("URL")%></a></td> <td><%=rs("Intro")%></td> <td><a href="6-3.asp?link_id=<%=rs("link_id")%>">删除</a></td> <td><a href="6-4.asp?link_id=<%=rs("link_id")%>">修改</a></td> </tr> <% rs.movenext '将记录集指针移动到下一条记录 loop %>

  36. 5.2.2 利用Select语句查询记录例

  37. 5.2.3 利用Insert语句添加记录 Insert Into 表名(字段1,字段2,…) Values(字段值1,字段值2,…) 例如: Insert Into link(name,URL,intro) Values(“中国教科网”,www.edu.cn,”中国教科网站”)

  38. <form action="" method="post" name="form1"> <tr> <td>网站名字</td><td><input type="text" name="name" size=20></td> </tr><tr> <td>网站网址</td><td><input type="text" name="URL" size=60></td> </tr><tr> <td>网站简介</td><td> <textarea name="Intro" rows="2" cols="60" wrap="soft"></textarea></td> </tr><tr> <td><input type="submit" value=" 确 定 "></td> </tr> </form>

  39. <% If Request("name")<>"" and Request("URL")<>"" and Request("intro")<>"" Then dim db set db=Server.Createobject("ADODB.Connection") db.Open "DBQ="&Server.Mappath("wwwaccess.mdb")&";DRIVER={Microsoft Access Driver (*.mdb)};" Dim strSql,varName,varURL,varIntro varName=Request("name") varURL=Request("URL") varIntro=Request("intro") StrSql="insert into link(name,URL, intro,submit_date) values('" &varName & "','" & varURL & "','" & varIntro & "','" & Date() & "')" %> <%=StrSql%> <% db.execute(strSql) Response.Redirect "6-1.asp" Else Response.Write "请将所有信息填写完整" End If %>

  40. 带有查错功能: Dim strSql,varName,varURL,varIntro varName=Request("name") varURL=Request("URL") varIntro=Request("intro") StrSql="insert into link(name” sValues= “values('" &varName & "‘” If varURL<>”” then strSql=strSql&”,URL” sValues= sValues& “,'" & varURL & "‘” End If …

  41. 5.2.4 利用Delete语句删除记录 Delete From 表名 [Where 条件] 例如: Delete From link Where name=“网易”

  42. 5.2.4 利用Delete语句删除记录例 dim db set db=Server.Createobject("ADODB.Connection") db.Open "DBQ="&Server.Mappath("WWWAccess.mdb")&";DRIVER={Microsoft Access Driver (*.mdb)};" '以下删除记录,注意这里是由6-1.asp传过来的要删除的记录的记录编号 Dim varLink_id,strSql varLink_id=Request.QueryString("link_id") strSql="delete from link where link_id=" & varLink_id db.Execute(strSql) '这里利用Execute方法,删除记录 Response.Redirect "6-1.asp" '删除完毕,返回首页6-1.asp

  43. 5.2.5 利用Update语句修改记录 Update 数据库表名 Set 字段1=值1,字段2=值2,… [Where 条件] 例如: Update link Set intro=“赢利网站” Where name=“新浪”

  44. <% '首先根据传入的Link_ID将原有数据显示在表单内 Dim varLink_id varLink_id=Request.QueryString("link_id") dim db set db=Server.Createobject("ADODB.Connection") db.Open "DBQ="&Server.Mappath("WWWAccess.mdb")&";DRIVER={Microsoft Access Driver (*.mdb)};" Dim strSql,rs strSql="select * from link where link_id=" & varLink_id 'varLink_id是传过来的 set rs=db.Execute(strSql) %> <center> <table border="1" width="90%"> <form action="" method="post" name="form1"> <tr> <td>网站名字</td><td><input type="text" name="name" size=20 value="<%=rs("Name")%>"></td> </tr>

  45. <tr> <td>网站网址</td><td><input type="text" name="URL" size=60 value="<%=rs("URL")%>"></td> </tr><tr> <td>网站简介</td><td> <textarea name="Intro" rows="2" cols="60" wrap="soft"><%=rs("Intro")%></textarea></td> </tr><tr> <td><input type="submit" value=" 确 定 "></td> </tr> </form> </table> </center>

  46. <% '如果上面的信息填全了,就修改记录,否则给出错误信息 If Request("name")<>"" AND Request("URL")<>"" AND Request("intro")<>"" Then '以下修改记录 Dim varName,varUrl,varIntro varName=Request(“name”) varURL=Request("URL") varIntro=Request("intro") StrSql="update link set name='" & varName & "',URL='" & varURL & "',intro='" & varIntro & "' where link_id=" & varLink_id db.Execute(strSql) '这里利用Execute方法,修改记录 Response.Redirect "6-1.asp" '修改完毕,返回首页6-1.asp Else Response.Write "请将所有信息填写完整" End If %>

  47. 5.3.1 存取SQL数据库(一) <% Dim db Set db=Server.Createobject(“ADODB.Connection”) Db.Open “wwwlink”,”myusername”,”mypassword” %>

  48. 5.3.1 存取SQL数据库(二) <% Dim db Set db=Server.Createobject(“ADODB.Connection”) Db.Open “Database=wwwlink;Uid=myusername;Pwd=mypassword;Driver={SQL Derver}” %>

  49. 5.3.2 对多个数据库进行操作 • 基本情况表TA: student_id, password, name • 详细情况表TB: student_id, department, age • 组合查询 显示学生的学号、姓名、年龄、系别

More Related