相关文章:
- 在ASP中实现购物小车(2005-10-24 14:32:41)
- 用ASP构建音乐服务器(2005-10-24 14:24:45)
- 用ASP实现电子贺卡(2005-10-24 14:20:46)
- 用ASP和SQL实现基于Web的事件日历(2005-10-24 14:19:07)
- 用ASP开发试题库与在线考试系统(2005-10-24 14:13:26)
![]() |
新闻 | 体育 | 财经 | 娱乐 | 商业 | 科技 | 汽车 | 数码 | 女人 | 旅游 | 教育 | 文化 | 广州 | 军事 | 部落 评论 | NBA | 明星 | 证券 | 基金 | 探索 | 房产 | 手机 | 两性 | 健康 | 培训 | 电影 | 游戏 | 拍卖 | 论坛 |
| 科技首页 | 重磅报道 | 专题 | IT茶馆 | 技术趋势 | 科学 | 学院 | 游戏 | 病毒 | 下载 | 论坛 | ![]() |
用ASP编写虚拟社区、网上购物等程序时,Application和Session对象具有举足轻重的作用,能够灵活合理地运用这两个对象是提高程序质量的关键。下面让笔者根据自己在这方面的经验,向大家深入介绍一下ASP的这两个内建对象。
application("a")="a"
application("b")=128
application("c")=false
则有contents集合 application.contents(1)="a" '也可写为application.contents("a")="a"
application.contents(2)=128 '也可写为application.contents("b")=128
application.contents(3)=false '也可写为application.contents("c")=false
在此笔者推荐你在调用时使用类如application.contents("a")的方法,因为这样更为直观,如果用序号来表示的话则要考虑赋值的先后顺序。 application("a")="a"
application("b")=128
application("c")=false
response.write application.contents(1)&"<br>"
response.write application.contents(2)&"<br>"
response.write application.contents(3)&"<br>"
response.write "After Remove b:"
application.contents.remove("b")
response.write application.contents(1)&"<br>"
response.write application.contents(2)&"<br>"
执行结果: session("a")="a"
session("b")=128
session("c")=false
则有contents集合 session.contents(1)="a" '也可写为session.contents("a")="a"
session.contents(2)=128 '也可写为session.contents("b")=128
session.contents(3)=false '也可写为session.contents("c")=false
⒉Session对象的属性 ===global.asa===
<script LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
application("online")=0
End Sub
sub Application_OnEnd
nd Sub
Sub Session_OnStart
End Sub
Sub Session_OnEnd
if session.contents("pass") then '判断是否为登录用户的Session_OnEnd
application.lock
application("online")=application("online")-1
application.unlock
end if
End Sub
</script>
==============
===login.asp=== session("name")=rs("name")
session("id")=rs("id")
session("pass")=true
else
rs.close
conn.close
response.write "密码错误!"
response.end
end if
application.lock
application("online")=application("online")+1
conn.Execute ("update bbs set online=1 where id="&session("id"))'将用户的状态设为在线
application.unlock
rs.close
conn.close
response.redirect "index.asp" '初始化数据后跳转到社区首页
===========
===global.sas===
<script LANGUAGE="VBScript" RUNAT="Server">
Sub Application_OnStart
application("online")=0
set application("conn")=Server.CreateObject("ADODB.Connection")
application("db")=Server.MapPath("\bbs.mdb") '此处最好使用绝对路径\bbs.mdb,下文有详细介绍
End Sub
sub Application_OnEnd
set application("conn")=nothing
End Sub
Sub Session_OnStart
End Sub
Sub Session_OnEnd
if session.contents("pass") then '判断是否为登录用户的Session_OnEnd
application("con").open ="driver={Microsoft Access Driver (*.mdb)};dbq="&application("db")
application.lock
application("online")=application("online")-1
application("con").Execute ("update friends set online=0 where id="&session.contents("id"))
application.unlock
application("con").close
end if
End Sub
</script>
==============
if session.contents("pass") then 写成
if session("pass") then,
这样的话系统不会提示错误,但是永远也不会执行then后面的内容,这是因为在OnEnd事件里禁止使用Session对象,但是可以用Session对象的集合来调用session变量。因为IIS并没提示任何错误信息,所以笔者曾经在这上面浪费了很多时间。在此希望大家引以为鉴! application("db")=Server.MapPath("\bbs.mdb")改为:
application("db")=Server.MapPath("bbs.mdb")
然后在d:\inetpub\wwwroot\目录下建立一个test子目录,写一个temp.asp在test目录里。 ====test.asp====
<%response.write application("db")%>
================
再将temp.asp拷贝一份放在根目录下(d:\inetpub\wwwroot\)。用记事本打开global.asa,再打开两个浏览器,浏览器A输入地址http://localhost/temp.asp,按回车,将在浏览器上输出: d:\inetpub\wwwroot\bbs.mdb
然后,在记事本的窗口上点"文件"菜单,选"保存"(使global.asa的修改时间改变,从而使IIS重启动所有服务),再在浏览器B输入地址http://localhost/test/temp.asp,按回车,在浏览器上输出的是: d:\inetpub\wwwroot\test\bbs.mdb
global.asa文件虽然是放在站点根目录下,但是如果在server.mappath中使用的是相对地址,而触发Application_OnStart事件的用户第一次访问的页面又不是属于根目录的话,得到数据库的物理地址将不会是期望的结果,希望大家要特别小心。