第四章 Session 和 Application 对象

52
第第第 Session 第 Applicatio n 第第 Session 第第第第第 第第第第第第第第 第第第第第第第 一, 第第 Session 第第第第第 Application 第第第第第第第第第第第第第第第第第第

description

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

Transcript of 第四章 Session 和 Application 对象

Page 1: 第四章   Session 和 Application 对象

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

Page 2: 第四章   Session 和 Application 对象

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

Page 3: 第四章   Session 和 Application 对象

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

Page 4: 第四章   Session 和 Application 对象

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

Page 5: 第四章   Session 和 Application 对象

4.1.3 Session 用法示例<%

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

Page 6: 第四章   Session 和 Application 对象

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

Page 7: 第四章   Session 和 Application 对象
Page 8: 第四章   Session 和 Application 对象

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

Page 9: 第四章   Session 和 Application 对象

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>"

%>

Page 10: 第四章   Session 和 Application 对象

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>" %>

Page 11: 第四章   Session 和 Application 对象

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

Page 12: 第四章   Session 和 Application 对象

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

Page 13: 第四章   Session 和 Application 对象

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

Page 14: 第四章   Session 和 Application 对象

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

Page 15: 第四章   Session 和 Application 对象

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

Page 16: 第四章   Session 和 Application 对象

4.2.2 利用 Application 存储信息• 格式: Application(“ 名字” )= 变量 / 字符串• 例如:<%

Application.LockApplication.(“user_name”)=user_nameApplication.(“school”)=“ 清华大学”Application.Unlock

%>

Page 17: 第四章   Session 和 Application 对象

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.LockApplication("show")= request("pronunciation") & "<br>" & Application("show")Application.UnlockEnd ifResponse.Write Application("show") %>

Page 18: 第四章   Session 和 Application 对象

4.2.2 Application 用法示例

Page 19: 第四章   Session 和 Application 对象

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

Page 20: 第四章   Session 和 Application 对象

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

Page 21: 第四章   Session 和 Application 对象

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

Page 22: 第四章   Session 和 Application 对象

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

Page 23: 第四章   Session 和 Application 对象

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>

Page 24: 第四章   Session 和 Application 对象

Global.asa 示例:<SCRIPT language="VBScript" runat="server">

Sub Application_OnStartApplication.LockApplication("user_online")=0Application.Unlock

End SubSub Session_OnStart

Application.LockApplication("user_online")= Application("user_online")+1Application.Unlock

end subSub Session_OnEnd

Application.LockApplication("user_online")= Application("user_online")-1Application.Unlock

End Sub</SCRIPT>

Page 25: 第四章   Session 和 Application 对象

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>

Page 26: 第四章   Session 和 Application 对象

4.3.2 Global.asa 示例

Page 27: 第四章   Session 和 Application 对象

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

Page 28: 第四章   Session 和 Application 对象

5.1 数据库预备知识SQL Server

OracleAccess

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

Page 29: 第四章   Session 和 Application 对象

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

Page 30: 第四章   Session 和 Application 对象

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

Page 31: 第四章   Session 和 Application 对象

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

Page 32: 第四章   Session 和 Application 对象

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

Page 33: 第四章   Session 和 Application 对象

5.2.1 数据库连接方法 (续 )

<%Dim dbSet db=Server.Createobject(“ADODB.Connection”)db.Open “Dbq=”&Server.Mappath(“wwwlink.mdb”)&”;Driver={Microsoft Access Driver(*.mdb)}”>%

Page 34: 第四章   Session 和 Application 对象

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

Page 35: 第四章   Session 和 Application 对象

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

Page 36: 第四章   Session 和 Application 对象

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%>

Page 37: 第四章   Session 和 Application 对象

5.2.2 利用 Select语句查询记录例

Page 38: 第四章   Session 和 Application 对象

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

Page 39: 第四章   Session 和 Application 对象

<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>

Page 40: 第四章   Session 和 Application 对象

<% If Request("name")<>"" and Request("URL")<>"" and Request("intro")<>"" Thendim db set db=Server.Createobject("ADODB.Connection") db.Open "DBQ="&Server.Mappath("wwwaccess.mdb")&";DRIVER={Microsoft Access Driver (*.mdb)};" Dim strSql,varName,varURL,varIntrovarName=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 %>

Page 41: 第四章   Session 和 Application 对象

带有查错功能:Dim strSql,varName,varURL,varIntrovarName=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…

Page 42: 第四章   Session 和 Application 对象

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

Page 43: 第四章   Session 和 Application 对象

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,strSqlvarLink_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

Page 44: 第四章   Session 和 Application 对象

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

Page 45: 第四章   Session 和 Application 对象

<% '首先根据传入的 Link_ID 将原有数据显示在表单内Dim varLink_idvarLink_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>

Page 46: 第四章   Session 和 Application 对象

<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>

Page 47: 第四章   Session 和 Application 对象

<% ' 如果上面的信息填全了,就修改记录,否则给出错误信息If Request("name")<>"" AND Request("URL")<>"" AND Request("intro")<>"" Then

' 以下修改记录Dim varName,varUrl,varIntrovarName=Request(“name”) varURL=Request("URL") varIntro=Request("intro")StrSql="update link set name='" & varName & "',URL='" & varURL & "',intro='" & varIntro & "' where link_id=" & varLink_iddb.Execute(strSql) ' 这里利用 Execute 方法,修改记录Response.Redirect "6-1.asp" '修改完毕,返回首页 6-1.aspElseResponse.Write " 请将所有信息填写完整 "

End If%>

Page 48: 第四章   Session 和 Application 对象

5.3.1 存取 SQL 数据库 ( 一 )

<%Dim dbSet db=Server.Createobject(“ADODB.Connection”)Db.Open “wwwlink”,”myusername”,”mypassword”%>

Page 49: 第四章   Session 和 Application 对象

5.3.1 存取 SQL 数据库 (二 )

<%Dim dbSet db=Server.Createobject(“ADODB.Connection”)Db.Open “Database=wwwlink;Uid=myusername;Pwd=mypassword;Driver={SQL Derver}”%>

Page 50: 第四章   Session 和 Application 对象

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

Page 51: 第四章   Session 和 Application 对象

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

Page 52: 第四章   Session 和 Application 对象

<%‘以下建立 Recordset 对象实例 rsDim strSql,rsstrSql=“Select TA.student_id,TA.name,TB.age,TB.department From TA,TB Where TA.student_id=TB.student_id”Set rs=db.Execute(strSql)‘以下显示数据库查询结果Response.Write “ 学号” &rs(“student_id”)&”<br>”Response.Write “姓名” &rs(“name”)&”<br>”Response.Write “ 年龄” &rs(age”)&”<br>”Response.Write “系别” &rs(“department”)&”<br>”……%>