1 Session对象的特性 Session 状态对象 Session 对象常用的方法有: Session 对象常用的属性有:

Slides:



Advertisements
Similar presentations
模块五 动态网页技术 任务五 查询记录 任务一 表单设计制作 任务二 简单动态的 ASP 页面制作任务三 页面与数据库的集成任务四 添加记录 任务六 电商系统融入网站.
Advertisements

第14章 表单 在制作动态网页时,要实现信息交互,常常用到表单。 常见的表单有搜索表单、用户登录注册表单、调查表 单、留言簿表单等。本章节将和大家一起探讨在表单 的基本概念和各个元素,以及在Dreamweaver CS4中 如何创建表单,并通过实例掌握表单制作的方法。
本章要点: 掌握HttpRequest对象的应用。 掌握HttpResponse对象的应用。
动态网站开发 【HTTP与网络基础】 李博杰
动态Web开发技术--JSP.
Task #3 使用ASP.NET服务器控件创建页面.
动态网页制作 第1章 HTML语言1.
张孝祥IT课堂 -深入体验Java Web开发内幕
一指通《考勤报餐系统》标准版C/S介绍 一指通市场部2013年10月11日(宣).
MVC Servlet与MVC设计模式.
第七章 电子商务系统的运营与维护.
第13章 FTP檔案上傳、 自動傳送 報告人 M9153314 李育旻.
《ASP.NET数据库网站设计教程(C#版)》
第6章 HTML控件和Web服务器控件 本章讲述的主要内容 6.1 ASP.NET控件概述 6.2 标准服务器端控件 6.3 数据验证控件
Microsoft Application Center Test
《计算机网络技术》 asp.net 程序设计 文本类控件 笪静.
Chapter 7 網頁應用程式與狀態管理.
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
《ASP.NET数据库网站设计教程(C#版)》
Hello World 體驗實作第一個JSP程式.
Chapter 15 聊天室.
《ASP.NET数据库网站设计教程(C#版)》
第四章 網頁表單與資料傳遞.
Chapter 4 基本伺服器控制項.
PHP +MySQL快速入門 Lesson 4.
Ch11 檔案上傳及電子郵件 WEB程式設計.
ASP.NET 網頁製作教本 – 從基本語法學起
数据库操作示例 import java.sql.*; //导入java.sql包 public class JDBCDemo {
PHP 5 入門基礎 第一個PHP 程式 PHP 資料型態.
在 Web 应用中,导航是非常重要的。ASP
C# 的 Web 相關物件之使用 日期 : 2018/11/21.
電子商務網站建制技術與實習(II) 助教:江宜政 吳昇洋.
客戶端的檔案上傳 HtmlInputFile檔案控制項 上傳單一檔案 同時上傳多個檔案.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
Visual Studio IDE基本操作 建國科技大學 資管系 饒瑞佶.
進階 WWW 程式設計 -- PHP Regular Expression 靜宜大學資訊管理學系 蔡奇偉副教授 2004
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 18 章 Cookie和 Session.
【VA虚拟应用管理平台】专题培训 资源管理及个性化 陕西益和信息技术开发有限责任公司 2011年2月.
ASP.NET 網頁製作教本 – 從基本語法學起
讲课人:王璞 浙江工商职业技术学院.
5.1.1 使用 ExecuteReader()操作数据库
第14章 伺服器檔案、電子郵件處理與Ajax 14-1 資料夾與檔案操作 14-2 文字檔案的讀寫 14-3 電子郵件與附檔處理
1 创建SqlDataSouce控件 数据源控件(SqlDataSource)
第15章 豐富控制項.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
form1 卡拉OK pictureBox1 fish1.bmp pictureBox2 fish2.bmp label1 卡拉OK字幕機
Ajax網頁的危機與防禦術 王寧疆 MCAD.NET/MCSD.NET/MCT/MVP 資策會教育訓練處.
ASP.NET 網頁製作教本 – 從基本語法學起
快递单模板的制作.
第5章 .NET框架类 5.
張智星 台大資工系 多媒體檢索實驗室 第九章 小餅乾(Cookies) 張智星 台大資工系 多媒體檢索實驗室.
第 6 章 Application、Session 物件與Cookie
FormView 控件只能显示数据库中一行的数据,并且提供对数据的分页操作,FormView 控件可以以 一种不规则的外观来将数据呈现给用户。FormView 控件同样支持模板,以方便开发人员自定义 FormView 控件的 UI,FormView 控件支持的模板如下所示: ItemTemplate:用于在.
第4章 使用验证控件.
視窗程式設計 (Windows Programming)
主 讲 教 师:陆有军 Web技术与应用 第四章 内部对象 主 讲 教 师:陆有军
第3章 ASP.NET程序设计基础 3.
Cookie 存取Cookie Cookie有效時間 Session 存取Session session 函數
Web前端开发 第23章:网站发布 阮晓龙 / 河南中医药大学管理科学与工程学科
架站實做—AppServ
第4章 ASP.NET的HTTP物件、輸出入與Cookie處理
Ch09 在網頁之間傳遞資訊 網頁程式設計.
Ch04 VB.NET的流程控制 網頁程式設計.
【VA虚拟应用管理平台】专题培训 资源管理及个性化 陕西益和信息技术开发有限责任公司 2011年2月.
C# 基本語法、變數.
HTTP 1.1 Method OPTIONS GET HEAD POST PUT DELETE TRACE CONNECT
向导控件的样式 当创建了一个向导控件时,系统会自动生成向导控件的 HTML 代码,示例代码如下所示。
講師:梁家豪 動態網頁設計 ASP & 資料庫應用 講師:梁家豪
C# 匿名委派 + Lambda + Func 建國科技大學 資管系 饒瑞佶.
MenuStrip by Szeto CY Visual C# 2008.
Presentation transcript:

1 Session对象的特性 6.1.4 Session 状态对象 Session 对象常用的方法有: Session 对象常用的属性有: Add:创建一个 Session 对象。 Abandon:该方法用来结束当前会话并清除对话中的所有信息,如果用户重新访问页面,则可 以创建新会话。 Clear:此方法将清除全部的 Session 对象变量,但不结束会话。 IsNewSession:如果用户访问页面时是创建新会话,则此属性将返回 true,否则将返回 false。 TimeOut:传回或设置 Session 对象变量的有效时间,如果在有效时间内有没有任何客户端动作, 则会自动注销。 注意:Session 对象可以不需要 Add 方法进行创建,直接使用 Session[“变量名”]=变量值的语法也可 以进行 Session 对象的创建。 注意:如果不设置 TimeOut 属性,则系统默认的超时时间为 20 分钟。

2 Session对象的对象 6.1.4 Session 状态对象 protected void Button1_Click(object sender, EventArgs e) { Session["admin"] = "guojing"; Response.Redirect("Session.aspx"); } //新增 Session 对象 //页面跳转 当管理员单击注销按钮时,则会注销 Session 对象并提示再次登录,示例代码如下所示。 protected void Button2_Click(object sender, EventArgs e) { Session.Clear(); Response.Redirect("Session.aspx"); } //删除所有 Session 对象

6.1.4 Session 状态对象 在Page_Load方法中,可以判断是否已经存在Session对象,如果存在Session对象,则说明管理员 当前的权限是正常的,而如果不存在Session对象,则说明当前管理员的权限可能是错误的,或者是非法用户正在访问该页面,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) { if (Session["admin"] != null) if (String.IsNullOrEmpty(Session["admin"].ToString())) Button1.Visible = true; Button2.Visible = false; //Response.Redirect("admin_login.aspx"); } else Button1.Visible = false; Button2.Visible = true; //如果 Session[“admin”]不为空 //则判断是否为空字符串   //显式登录控件 //隐藏注销控件 //跳转到登录页面 //显式注销控件

6.1.4 Session 状态对象 上述代码当管理员没有登录时,则会出现登录按钮,如果登录了,存在 Session 对象,则登录按钮 被隐藏,只显示注销按钮。其 HTML 代码如下所示。 <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="登录" /> <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="注销" /> 上述代码运行后如图所示

1 Session对象的特性 6.1.5 Server 服务对象 MachineName:获取远程服务器的名称。 ScriptTimeout:获取和设置请求超时。 Server 对象的常用属性如右所示: 通过 Server 对象能够获取远程服务器的信息,示例代码如下所示 protected void Page_Load(object sender, EventArgs e) { Response.Write(Server.MachineName); } //输出服务器信息 上述代码运行后将会输出服务器名称,本例输出为“WIN-YXDGNGPG621”,这个输出结果根据 服务器的名称不同而不同。

2 Session对象的常用方法 6.1.5 Server 服务对象 Server 对象的常用方法如下所示。 CreatObject:创建 COM 对象的一个服务器实例。 Execute:使用另一个页面执行当前请求。 Transfer:终止当前页面的执行,并为当前请求开始执行新页面。 HtmlDecode:对已被编码的消除 Html 无效字符的字符串进行解码。 HtmlEncode:对要在浏览器中显示的字符串进行编码。 MapPath:返回与 Web 服务器上的执行虚拟路径相对应的物理文件路径。 UrlDecode:对字符串进行解码,该字符串为了进行 HTTP 传输而进行编码并在 URL 中发送到 服务器。 UrlEncode:编码字符串,以便通过 URL 从 Web 服务器到客户端浏览器的字符串传输。

6.1.5 Server 服务对象 在 ASP.NET 中,默认编码是 UTF-8,所以在使用 Session 和 Cookie 对象保存中文字符或者其他字 符集时经常会出现乱码,为了避免乱码的出现,可以使用 HtmlDecode 和 HtmlEncode 方法进行编码和解 码。HTML 页面代码如下所示。 <body> <form id="form1" runat="server"> <p> HtmlDecode: <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </p> HtmlEncode: <asp:Label ID="Label2" runat="server" Text="Label"></asp:Label> </form> </body>

6.1.5 Server 服务对象 上述代码使用了两个文本标签控件用来保存并呈现编码后和解码后的字符串,在 CS 页面可以对字 符串进行编码和解码操作,示例代码如下所示。 string str = "<p>(*^ ^*) 嘻嘻……</p>"; Label1.Text = Server.HtmlEncode(str); Label2.Text = Server.HtmlDecode(Label1.Text); //声明字符串 //字符串编码 //字符串解码 上述代码将 str 字符串进行编码并存放在 Label1 标签中,Label2 标签将读取 Label1 标签中的字符串 再进行解码,运行后如图所示。

在 Page_Load 方法中可以接收该字符串,示例代码如下所示 6.1.5 Server 服务对象 在使用了 HtmlEncode 方法后,编码后的 HTML 标注会被转换成相应的字符,如符号“<”会被转 换成字符“<”。在进行解码时,相应的字符会被转换回来,并呈现在客户端浏览器中。当需要让浏览器能够接受 HTML 字符时,URL 地址栏中对页面的参数的传递不能够包括空格,换行等符号,如果需要使用该符号,可以使用 UrlEncode 方法和 UrlDecode 方法进行变量的编码解码,示例代码如下所示。 protected void Button1_Click(object sender, EventArgs e) { string str = Server.UrlEncode("错误信息 \n 操作异常"); Response.Redirect("Server.aspx?str=" + str); } //使用 UrlEncode 进行编码 //页面跳转 在 Page_Load 方法中可以接收该字符串,示例代码如下所示 if (Request.QueryString["str"] != "") { Label3.Text = Server.UrlDecode(Request.QueryString["str"]); //使用 UrlDecode 进行解码 } 当长字符串跳转和密封的信息在页面中进行发送和传递时,可以使用 UrlEncode 方法和 UrlDecode方法进行变量的编码解码,以提高应用程序的安全性。

3 Server.MapPath 方法 6.1.5 Server 服务对象 在创建文件,删除文件或者读取文件类型的数据库时(如Access和SQLite),都需要指定文件的路径并显示的提供物理路径执行文件的操作,如 D:\Program Files。但是这样做却暴露了物理路径,如果有非法用户进行非法操作,很容易就显示了物理路径,这样就造成了安全问题。而如果在使用文件和创建文件时,如果非要为创建文件的保存地址设置一个物理路径,这样非常不便并且用户体验也不好。当用户需要上传文件时,用户不可能知道也不应该知道服务器路径。如果使用MapPath方法能够实现。MapPath方法以“/”开头,则返回Web应用程序的根目录所在的路径,若MapPath方法以“../”开头,则会从当前目录开始寻找上级目录,如图左所示,而其实际服务器路径如图右所示。

6.1.5 Server 服务对象 上图所示,其中论坛根目录为 root,在根目录下有一个文件夹为 file1,在 file1 中的文件可以 使用 MapPath 访问根目录中文件的方法有 Server.MapPath(“../文件名称”)或 Server.MapPath(“/文件名称”), 示例代码如下所示。 string FilePath = Server.MapPath("../Default.aspx"); string FileRootPath = Server.MapPath("/Default.aspx"); //设置路径 Server.MapPath 其实返回的是物理路径,但是通过 MapPath 的封装,通过代码无法看见真实的物理 路径,若需要知道真实的物理路径,只需输出 Server.MapPath 即可,示例代码如下所示。 Response.Write(Server.MapPath("../Default.aspx")); //输出路径 上述代码输出结果为 D:\ASP.NET 3.5\源代码\第 13 章\13-1\13-1\Default.aspx,该结果针对不同的物 理路径而不同。

1 Cookie对象 6.1.6 Cookie 状态对象 相比于 Session 和 Application 而言,Cookie的优点如下 不确定性:如果客户端配置禁用 Cookie 配置,则 Web 应用中使用的 Cookie 将被限制,客户端 将无法保存 Cookie。 安全风险:现在有很多的软件能够伪装 Cookie,这意味着保存在本地的 Cookie 并不安全,Cookie 能够通过程序修改为伪造,这会导致 Web 应用在认证用户权限时会出现错误。 Cookie 是一个轻量级的内置对象,Cookie 并不能将复杂和庞大的文本进行存储,在进行相应的信息 或状态的存储时,应该考虑 Cookie 的大小限制和不确定性。

2 Cookie对象的属性 3 Cookie对象的方法 6.1.6 Cookie 状态对象 Cookie 对象的属性如下所示: Name:获取或设置 Cookie 的名称。 Value:获取或设置 Cookie 的 Value。 Expires:获取或设置 Cookie 的过期的日期和事件。 Version:获取或设置 Cookie 的符合 HTTP 维护状态的版本。 Add:增加 Cookie 变量。 Clear:清除 Cookie 集合内的变量。 Get:通过变量名称或索引得到 Cookie 的变量值。 Remove:通过 Cookie 变量名称或索引删除 Cookie 对象。

4 创建Cookie对象 6.1.6 Cookie 状态对象 通过Add方法能够创建一个Cookie对象,并通过Expires属性设置Cookie对象在客户端中所持续 的时间,示例代码如下 HttpCookie MyCookie = new HttpCookie("MyCookie "); MyCookie.Value = Server.HtmlEncode(“我的 Cookie 应用程序”); //设置 Cookie 的值 MyCookie.Expires = DateTime.Now.AddDays(5); //设置 Cookie 过期时间 Response.AppendCookie(MyCookie); //新增 Cookie 上述代码创建了一个名称为 MyCookie 的 Cookies,上述代码通过使用 Response 对象的 AppendCookie方法进行 Cookie 对象的创建,与之相同,可以使用 Add 方法进行创建,示例代码如下所示。 Response.Cookies.Add(MyCookie); 上述代码同样能够创建一个 Cookie 对象,当创建了 Cookie 对象后,将会在客户端的Cookies目录 下建立文本文件,文本文件的内容如下所示。 My Cookie My Cookie 注意:Cookies 目录在 Windows 下是隐藏目录,并不能直接对 Cookies 文件夹进行访问,在该文件 夹中可能存在多个 Cookie 文本文件,这是由于在一些网站中进行登录保存了 Cookies 的原因。

5 获取Cookie对象 6.1.6 Cookie 状态对象 Web 应用在客户端浏览器创建 Cookie 对象之后,就可以通过 Cookie 的方法读取客户端中保存的Cookies信息,示例代码如下所示。 protected void Page_Load(object sender, EventArgs e) { try HttpCookie MyCookie = new HttpCookie("MyCookie "); MyCookie.Value = Server.HtmlEncode("我的 Cookie 应用程序"); MyCookie.Expires = DateTime.Now.AddDays(5); Response.AppendCookie(MyCookie); Response.Write("Cookies 创建成功"); Response.Write("<hr/>获取 Cookie 的值<hr/>"); HttpCookie GetCookie = Request.Cookies["MyCookie"]; Response.Write("Cookies 的值:" + GetCookie.Value.ToString() + "<br/>"); //创建 Cookie 对象 //Cookie 赋值 //Cookie 持续时间 //添加 Cookie //输出成功 //获取 Cookie //输出 Cookie 值 Response.Write("Cookies 的过期时间:" + GetCookie.Expires.ToString() + "<br/>"); } catch Response.Write("Cookies 创建失败"); //抛出异常

1 Cacha对象的属性 2 Cacha对象的方法 6.1.7 Cache 缓存对象 Count:获取存储在缓存中的 Cache 对象的项数。 Item:获取或设置指定外键的缓存项。 2 Cacha对象的方法 Add:将指定的项添加到 Cache 对象,该对象具有依赖项,过期和优先级策略,以及一个委托。 Get:从 Cache 对象检索指定项。 Remove:从应用程序的 Cache 对象移除指定项。 Insert:向 Cache 对象插入一个新项。

通过 Cache 的 Count 属性能够获取现有的 Cache 对象的项数,示例代码如下所示。 3 Cacha对象的使用 Cache 对象可以使用 Get 方法从相应的 Cache 对象中获取 Cache 对象的值,Get 方法能够通过 Cache对象的名称和索引来获取 Cache 对象的值,示例代码如下所示。 protected void Button1_Click(object sender, EventArgs e) { try Cache.Get("Label1.Text"); } catch Label2.Text = "获取 Cache 的值失败!"; //获取 Cache 对象的值 //捕获异常,同 try 使用   //输出错误异常信息 通过 Cache 的 Count 属性能够获取现有的 Cache 对象的项数,示例代码如下所示。 Response.Write("Cache 对象的项数有" + Cache.Count.ToString()); //输出 Cache 项数

1 创建Global.asax配置文件 6.1.7 Global.asax 配置 Global.asax 配置文件通常处理高级的应用程序事件,如 Application_Start 、 Application_End、 Session_Start 等,Global.asax 配置文件通常不为个别页面或事件进行请求相应。创建 Global.asax 配置文 件可以通过新建【全局应用程序类】文件来创建,如图 13-10 所示。 创建完成 Global.asax 配置文件,系统会自动创建一系列代码,开发人员只需要向相应的代码块中添 加事务处理程序即可。

2 应用域开始(Application_Start)和应用域结束( Application_End)事件 6.1.7 Global.asax 配置 2 应用域开始(Application_Start)和应用域结束( Application_End)事件 在Global.asax配置文件中,Application_Start 事件会在Application对象被创建时触发,通常Application_Start 对象能够对应用程序进行全局配置。在统计在线人数时,通过重写 Application_Start 方 法可以实现实时在线人数统计,示例代码如下所示。 protected void Application_Start(object sender, EventArgs e) { Application.Lock(); Application["start"] = "Application 对象被创建"; Application.UnLock(); } //锁定 Application 对象 //创建 Application 对象 //解锁 Application 对象 当用户使用Web应用时,就会触发Application_Start方法,而与之相反的是,Application_End事件在 Application 对象结束时被触发,示例代码如下所示。 protected void Application_End(object sender, EventArgs e) { Application.Lock(); Application["end"] = "Application 对象被销毁"; Application.UnLock(); } //锁定 Application 对象 //清除 Application 对象 //解锁 Application 对象

3 应用域错误(Application_Error)事件 6.1.7 Global.asax 配置 3 应用域错误(Application_Error)事件 Application_Error 事件在应用程序发送错误信息时被触发,通过重写该程序,可以控制 Web 应用程 序的错误信息或状态,示例代码如下所示。 protected void Application_Error(object sender, EventArgs e) { Application.Lock(); Application["error"] = "一个错误已经发生"; Application.UnLock(); } //锁定 Application 对象 //错误发生 //解锁 Application 对象

4 Session 开始(Session_Start)和 Session 结束(Session_End)事件 6.1.7 Global.asax 配置 4 Session 开始(Session_Start)和 Session 结束(Session_End)事件 与之相反的是 Session_End 事件,当 Session 对象结束时则会触发该事件,当使用 Session 对象统计 在线人数时,可以通过 Session_End 事件减少在线人数的统计数字,同时也可以对用户配置进行相关的 清理工作,示例代码如下所示。 Session_Start 事件在 Session 对象开始时被触发。通过 Session_Start 事件可以统计应用程序当前访问 的人数,同时也可以进行一些与用户配置相关的初始化工作,示例代码如下所示。 protected void Session_End(object sender, EventArgs e) { Session["count"] = null; Session.Clear(); } //设置 Session 为 null //清除 Session 对象 protected void Session_Start(object sender, EventArgs e) { Session["count"] = 1; } //Session 开始执行 注意:Session 对象和 Application 对象都能够进行应用程序中在线人数或应用程序统计的统计和计 算。在选择对象时,可以按照应用要求(特别是对象生命周期的要求)选择不同的内置对象。