Top Banner
ASP.net ASP.net 企企企企企企企 企企企企企企企 信信信信信 信信信
29

ASP 企业级应用开发

Mar 19, 2016

Download

Documents

lainey

ASP.net 企业级应用开发. 信息工程系:罗明刚. 第六章. Application 、 Session 和 Cookie 对象. 回顾. 传递Form表单中的控件值用Request.Form 获取值,地址栏中传递的参数用 Request.QueryString获取 通常用HttpResponse 类的属性Buffer、Cache、Cookie 和 Expires来设置站点的一些特性 HttpResponse 类常用方法是 Write()、End() 和 Redirect() - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: ASP  企业级应用开发

ASP.net ASP.net 企业级应用开发企业级应用开发信息工程系:罗明刚

Page 2: ASP  企业级应用开发

第六章Application 、 Session和 Cookie 对象

Page 3: ASP  企业级应用开发

3

回顾传递 Form表单中的控件值用 Request.Form 获取值 ,地

址栏中传递的参数用 Request.QueryString获取通常用 HttpResponse 类的属性

Buffer、 Cache、 Cookie 和 Expires来设置站点的一些特性

HttpResponse 类常用方法是 Write()、 End() 和Redirect()

HttpServerUtility 类的 Execute()和 Transfer()的区别关键在于执行后控制权是否返回原先页面、 URLEncode()和HTMLEncode()主要用于对 HTML 标签和 URL进行编

码,对站点或程序的安全具有重要意思, MapPath()获取物理路径时需要注意是绝对路径还是相对路径

Page 4: ASP  企业级应用开发

4

目标 运用 Global.asax 文件 使用 Application 对象 创建并读取 Cookie 使用 Session 对象

Page 5: ASP  企业级应用开发

5

ASP.NET 中数值传递模型介绍

Page 6: ASP  企业级应用开发

6

Global.asax 2-1

“Global.asax”

存储所有事件的事件处理程序 存储在应用程序的根目录下 它的位置定义应用程序的限界

包含所有应用程序的配置设置

Page 7: ASP  企业级应用开发

7

Global.asax 2-2

httpApplication类实例

事件事件处理程序

Global.asax

配置设置存储于

文件事件 说明Application_Start

调用当前应用程序目录(或其子目录)下的第一个ASP.NET 页面时触发。

Application_End 应用程序的最后一个会话结束时触发。用 Internet 服务 管理器管理单元停止 Web 应用程序时也会触发

Application_BeginRequest

每次页面请求开始时触发(理想情况下是在页面加载或刷新时)Application_EndR

equest每次页面请求结束时(即每次在浏览器上执行页面时)触发

Session_Start 每次新的会话开始时触发Session_End 会话结束时触发。(关于会话可以采用何种方式结束,请参见会话对象)

Page 8: ASP  企业级应用开发

8

TestingGlobal.aspx 示例 4-1

<script language=“C#” runat=“server"> protected void Application_Start(Object sender, EventArgs e)

{}

protected void Session_Start(Object sender, EventArgs e)

{Response.Write( “ 会话已开始 <br>");

} protected void Application_BeginRequest(Object sender, EventArgs e)

{ Response.Write(“<h1> 应用程序开始 </h1>");

Response.Write (“ 应用程序请求开始 <br>");}

Global.asax 文件

打开代码隐藏类文件 Global.asax.cs 。将代码分别添加到 Global.asax.cs 中的各个事件中

Page 9: ASP  企业级应用开发

9

TestingGlobal.aspx 示例 4-2

protected void Application_EndRequest(Object sender, EventArgs e){ Response.Write (“ 应用程序请求结束 <br>");}

protected void Session_End(Object sender, EventArgs e){

Response.Write(“ 会话已结束 ");}

protected void Application_End (Object sender, EventArgs e){}

</script>

Page 10: ASP  企业级应用开发

10

TestingGlobal.aspx 示例 4-3

private void Page_Load(object sender, System.EventArgs e){

Response.Write(“ 页面加载事件 <br>");}

将默认 ASP.NET 页面‘ WebForm1.aspx’ 重命名

为‘ TestingGlobal.aspx’ , 并添加给定的代码片段

Page 11: ASP  企业级应用开发

11

TestingGlobal.aspx 示例 4-4

会话尚未结束 输出结果

Page 12: ASP  企业级应用开发

12

Application 对象存储并维护应用程序级的数据

Application 对象

Application 状态HttpApplicationState

方法集合

Application 状态 由它们表示

Page 13: ASP  企业级应用开发

13

Application 变量变量用于在应用程序执行时存储数据

应用程序级会话级

string myname = “ 张三 ";Response.Write (“ 欢迎 " + myname);

Page 14: ASP  企业级应用开发

14

对象级变量 3-1

protected void Application_Start(Object sender, EventArgs e){

Application.Lock ();Application["UserNum"] =0;Application.UnLock();

}

protected void Session_Start(Object sender, EventArgs e){

Response.Write(" 调用 Session_Start :会话已开始 <br>");

Application.Lock();Application["UserNum"]=int.Parse(Application["UserNum"]

. ToString())+1;

Application.UnLock();}

protected void Session_End(Object sender, EventArgs e){ Response.Write(" 调用 Session_End :会话已结束 "); Application.Lock(); Application["UserNum"]=int.Parse(Application ["UserNum"].ToString())-1; Application.UnLock();}

Page 15: ASP  企业级应用开发

15

对象级变量 3-2

private void Page_Load(object sender, System.EventArgs e){

// 在此处放置用户代码以初始化页面Response.Write(" 你是第 "+ Application["UserNum"].ToString()

+ " 位访客 <BR>");}

Page 16: ASP  企业级应用开发

16

对象级变量 3-3

Page 17: ASP  企业级应用开发

17

Lock 和 Unlock 方法 Lock()

Lock() 用于防止用户更改 Application 对象的属性

Lock() 可用作 Application.Lock()

UnLock()

Unlock() 方法用于释放对应用程序变量的锁定

UnLock() 可用作Application.UnLock()

Page 18: ASP  企业级应用开发

18

向应用程序添加、更新和移除项 方法 说明

Add()

向 Application 状态添加新对象。例如,下列代码会向应用程序状态添加项: Application.Add(“Title”, article board) ;或 Application(“Title”) = “Article Board”;

Clear() 从 Application 状态中移除所有对象 Remove() 从 Application 集合中按名称移除项。例如,下列代

码移除 Title 项: Application.Remove("Title")

HttpApplicationState 方法

Application 对象还提供 Get() 和 Set() 方法,可用于按名称或索引获取对象,并相应地更新对象的值

Page 19: ASP  企业级应用开发

19

Cookies

Cookie 在客户端系统中维护客户的个人信息

会话 Cookie

持久性 Cookie

………

Page 20: ASP  企业级应用开发

20

创建和读取会话 Cookie

HttpCookie objHttpCookie = new HttpCookie(“UserName”, “ 张三 ");

Response.Cookies.Add(objHttpCookie);

新建 Cookie

将新 Cookie 添加到 Response 对象的 Cookie 集合中

创建 Cookie

读取 Cookie

Response.Write(Request.Cookies(“UserName").Value);

Value 属性将 Cookie 的值作为字符串返回

Page 21: ASP  企业级应用开发

21

创建和读取持久性 Cookie

读取 Cookie

HttpCookie objHttpCookie = new HttpCookie(“UserName”,“ 张三 ");

objHttpCookie.Expires = DateTime.Now.AddMinutes(2);Response.Cookies.Add(objHttpCookie);

新建 Cookie

用 Cookie 的 Expires 属性将 Cookie 的过期期限设置为两分钟

创建 Cookie

Response.Write(Request.Cookies(“UserName").Value);

Page 22: ASP  企业级应用开发

22

Session 对象Session 对象用于存储用户的信息 当新用户请求应用程序的网页时, Server 对象会检查用户是否有 SessionID

Session 对象包含特定于某个用户的信息在用户会话期间可以记录和监视特定于用户的信息当会话过期或终止时,服务器就会清除 Session 对象

优点

Page 23: ASP  企业级应用开发

23

Session 变量Session 变量与 application 变量不同Session 变量仅提供给会话中的特定用户Session 变量可用于存储在整个用户会话过程中都可以访问的值

Page 24: ASP  企业级应用开发

24

private void btnLogin_Click(object sender, System.EventArgs e){ if(this.txtName.Text.Trim()!="" || this.txtPwd.Text.Trim()!="") { if(this.txtName.Text==" 张三 " && this.txtPwd.Text== "123456") { Session["UserName"]=this.txtName.Text.Trim(); Response.Redirect("SessionVariableWelcome.aspx?pwd=" +this.txtPwd.Text ); } else { Session["UserName"]="";

RegisterStartupScript("Check","<Script language=‘JavaScript’>alert(‘ 用户名或密码不对,请检查! '); </Script>"); } } else { Session["UserName"]=""; }}

Page 25: ASP  企业级应用开发

25

使用示例 3-2

private void Page_Load(object sender, System.EventArgs e){

if(Session["UserName"].ToString().Trim()!=""){ Response.Write ("<Script

language=JavaScript>alert(' 欢迎 "+Session["UserName"] + " 光临 , 你的密码是: "+Request["pwd"].ToString()+"')</Script>");

}else{ Response.Redirect("SessionVariableNew.aspx");}

}

Page 26: ASP  企业级应用开发

26

使用示例 3-3

Page 27: ASP  企业级应用开发

27

Session 事件Session_Start

当新用户访问一个应用程序时会激活该事件Session_End

用户退出应用程序时,就会触发 Session_End 事件

Page 28: ASP  企业级应用开发

28

Session 属性

Session 事件Session_Start

Session_End

属性 说明SessionID 包含一个唯一的用户会话标识符。它用于在会话过程中跟踪用户的

信息。要检索 SessionID ,使用 Session.SessionID

TimeOut

设置用户超时,即它以分钟为单位指定 Session 对象在释放资源之前能够保持闲置的时间。用户可导航至另一个站点而不用关闭该应用程序。如果设定了超时属性,则无人操作的用户会话可被清除, 由此释放服务器的资源。默认值为 20 分钟。可通过在 ASPX 文件中赋值来更改此设置。例如, <% Session.Timeout = 10 %>

LCID 用于设定本地标志符 . 它可存储本地信息,如日期、货币和时间格 式。例如 Session.LCID = 0x040C 将本地标识符设定为法国本地标识符

IsNewSession 若该会话是由当前请求创建的,该属性将返回值 true

Item 获取或设置会话值的名称Count 获得会话状态集合中的项数

Page 29: ASP  企业级应用开发

29

总结Global.asax 文件包含常用的

Application_Start、 Application_End、 Session_Start、 Session_End等事件

Application 对象是存储于服务器的全局变量Cookie 存储信息于客户端Session 对象用于在服务器端存储用户的信息,在用户结束会话时被清除

新用户访问应用程序时会激活 Session_Start 事 件,而用户退出应用程序时会触发 Session_End

事件