基于 .net 的 web 程序设计

38
基基 基基 .NET .NET Web Web 基基基基 基基基基

Upload: josiah-ward

Post on 30-Dec-2015

76 views

Category:

Documents


0 download

DESCRIPTION

基于 .NET 的 Web 程序设计. 学习内容. 响应用户操作 请求用户浏览器相关信息 访问服务器资源 系统被点击数的设计 系统会话 实现免登录系统的个性化设置. 销售管理信息系统的交互操作与页面处理. 4.1 响应用户操作 -Response. 将 http 信息封装后 , 从 ASP.NET 的服务器端发送到响应的用户客户端的浏览器上 , 其类名为 httpResponse 属性和方法 Write() 向客户端发送字符串信息 Redirect() 网页转向地址 End() 终止当前页的运行 BufferOutPut 属性是否使用缓存 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 基于 .NET 的 Web 程序设计

基于基于 .NET.NET的的WebWeb 程序程序设计设计

Page 2: 基于 .NET 的 Web 程序设计

2

销售管理信息系统的交互操作与页面处理销售管理信息系统的交互操作与页面处理

学习内容学习内容

• 响应用户操作• 请求用户浏览器相关信息• 访问服务器资源• 系统被点击数的设计• 系统会话• 实现免登录系统的个性化设置

Page 3: 基于 .NET 的 Web 程序设计

3

4.1 4.1 响应用户操作响应用户操作 -Response-Response 将将 httphttp 信息封装后信息封装后 ,,从从 ASP.NETASP.NET 的服务器端发的服务器端发

送到响应的用户客户端的浏览器上送到响应的用户客户端的浏览器上 ,, 其类名为其类名为httpResponsehttpResponse

属性和方法属性和方法 Write()Write() 向客户端发送字符串信息向客户端发送字符串信息 Redirect() Redirect() 网页转向地址网页转向地址 End()End() 终止当前页的运行终止当前页的运行 BufferOutPutBufferOutPut 属性属性 是否使用缓存是否使用缓存 Clear()Clear() 清除缓存清除缓存 Flush() Flush() 强制输出缓存的所有数据强制输出缓存的所有数据 WriteFile()WriteFile() 读取一个文件,并且写入客户端输出流读取一个文件,并且写入客户端输出流 (( 打开文件,打开文件,

并且输出到客户端并且输出到客户端 )) 。。

Page 4: 基于 .NET 的 Web 程序设计

4

向用户输出信息 向用户输出信息 - Write()- Write() 方法方法Response.Write("<Script language='Javascript'>alert('Response.Write("<Script language='Javascript'>alert(' 会员会员顾客的身份证号码不存在。顾客的身份证号码不存在。 ');</Script>");');</Script>");

Page 5: 基于 .NET 的 Web 程序设计

5

Page 6: 基于 .NET 的 Web 程序设计

6

BufferOutPutBufferOutPut 属性属性 功能 功能 - - 是否使用缓存是否使用缓存 例程例程

’ ’ 页面处理应用缓存页面处理应用缓存Response.BufferOutput = TrueResponse.BufferOutput = True

ClearClear 方法方法 功能 功能 - - 清除缓存清除缓存

FlushFlush 方法方法 功能 功能 - - 强制输出缓存的所有数据强制输出缓存的所有数据

Page 7: 基于 .NET 的 Web 程序设计

7

BufferOutPutBufferOutPut、、 ClearClear、、 FlushFlush 综合应综合应用用 请分析如下程序请分析如下程序

Response.BufferOutput = TrueResponse.BufferOutput = TrueResponse.Write("Response.Write(" 专业列表专业列表 ")")Response.Write("<ul>")Response.Write("<ul>")Response.Write("<li>Response.Write("<li> 计算机网络计算机网络 ")")Response.Write("<li>Response.Write("<li> 软件技术软件技术 ")")Response.Write("</ul>")Response.Write("</ul>")Response.Clear()Response.Clear()Response.Write("<script language=javascriptResponse.Write("<script language=javascript>alert('Welcome to learn asp.net')</script>")>alert('Welcome to learn asp.net')</script>")Response.Flush()Response.Flush()

Page 8: 基于 .NET 的 Web 程序设计

8

Response.BufferOutput=True Response.BufferOutput=FalseResponse.BufferOutput=True Response.BufferOutput=False

缓存设置为缓存设置为 TrueTrue 的运行结果的运行结果 缓存设置为缓存设置为 FalseFalse 的运行结果的运行结果

Page 9: 基于 .NET 的 Web 程序设计

9

EndEnd 方法方法 功能 功能 -- 终止当前页的运行终止当前页的运行 分析如下例程分析如下例程

Response.BufferOutput = TrueResponse.BufferOutput = TrueResponse.Write("Response.Write(" 专业列表专业列表 ")")Response.Write("<ul>")Response.Write("<ul>")Response.Write("<li>Response.Write("<li> 计算机网络计算机网络 ")")Response.Write("<li>Response.Write("<li> 软件技术软件技术 ")")Response.Write("</ul>")Response.Write("</ul>")Response.End()Response.End()Response.Write("<script language=javascriptResponse.Write("<script language=javascript>alert('Welcome to learn asp.net')</script>")>alert('Welcome to learn asp.net')</script>")

Page 10: 基于 .NET 的 Web 程序设计

10

RedirectRedirect 方法方法 功能 功能 - - 定向链接定向链接

当需要连结到其他网页的时候可以使用当需要连结到其他网页的时候可以使用Response.RedirectResponse.Redirect 方法重新定向方法重新定向 ..

//// 删除身份认证票,注销销售系统的登录状态删除身份认证票,注销销售系统的登录状态

System.Web.Security.FormsAuthentication.SignOut();System.Web.Security.FormsAuthentication.SignOut();

//// 系统界面跳转至首页系统界面跳转至首页

Response.Redirect("default.aspx");Response.Redirect("default.aspx");

Page 11: 基于 .NET 的 Web 程序设计

11

WriteFileWriteFile 方法方法 功能 功能 - - 向浏览器输出文件向浏览器输出文件 例程例程

Response.WriteFile(string FileName)Response.WriteFile(string FileName)其中其中 FileNameFileName 指代需输出的文件的文件名指代需输出的文件的文件名

//// 向页面输出修饰菜单外观的向页面输出修饰菜单外观的 csscss 样式文件样式文件

Response.WriteFile(“menustyle.css");Response.WriteFile(“menustyle.css");

Page 12: 基于 .NET 的 Web 程序设计

12

4.2 4.2 请求用户浏览器相关信息 请求用户浏览器相关信息 - - RequestRequest RequestRequest 对象的主要功能是让服务器取得当客对象的主要功能是让服务器取得当客

户端请求户端请求 WebWeb 服务时提交的相关数据(如表服务时提交的相关数据(如表单、单、 URLURL 等)。等)。

Page 13: 基于 .NET 的 Web 程序设计

13

注意:请求注意:请求 (Request)(Request) 与响应与响应 (Response)(Response)的区别的区别

服务器

服务器域名

URL ,资源的名称

www.google.com

响应

这是 HTTP 请求

这是 HTTP 响应

Page 14: 基于 .NET 的 Web 程序设计

14

RequestRequest 对象的常用属性对象的常用属性

属性名称属性名称 说明说明

Form Form 获得网页中定义的窗体变量的集合获得网页中定义的窗体变量的集合

QueryStringQueryString 获得以名获得以名 // 值对表示的 值对表示的 HTTP HTTP 查询字符串变查询字符串变量的集合量的集合

Page 15: 基于 .NET 的 Web 程序设计

15

Request.FormRequest.Form 属性属性 功能功能

读取读取 <Form><Form>至至 </Form></Form> 之间的表单数据之间的表单数据 .. 注意:表单的提交方式须设置为“注意:表单的提交方式须设置为“ Post”Post” 。。 用途举例用途举例

读取用户密码登录的表单数据。读取用户密码登录的表单数据。

Page 16: 基于 .NET 的 Web 程序设计

16

Request.QueryStringRequest.QueryString 属性属性 功能 功能 - - 可以读取可以读取 URLURL 地址参数地址参数 注意:提交方式要设置为“注意:提交方式要设置为“ Get”Get” 。。

Page 17: 基于 .NET 的 Web 程序设计

17

简化简化 RequestRequest 操作操作 问题问题

Request.FormRequest.Form 用于表单提交方式为用于表单提交方式为 PostPost 的情况,的情况,而而 Request.QueryStringRequest.QueryString 用于表单提交方式为用于表单提交方式为 GetGet的情况,如果用错,则获取不到数据。的情况,如果用错,则获取不到数据。

解决解决利用利用 Request(“Request(“ 元素名元素名”” )) 来简化操作。来简化操作。

Page 18: 基于 .NET 的 Web 程序设计

18

4.34.3 访问服务器资源 - ServerServer

ServerServer 对象提供了与服务器相关的实用功能对象提供了与服务器相关的实用功能

Execute 方法和 Transfer 方法

Execute 方法和 Transfer 方法

HTML 编码方法HTML

编码方法MapPath

方法MapPath

方法URLEncode

方法URLEncode

方法

方法方法

Server 对象提供处理 Web 请求的方法

Page 19: 基于 .NET 的 Web 程序设计

19

HTMLEncodeHTMLEncode与与 HTMLDecodeHTMLDecode 方法方法 为了确保所有浏览器均能在 为了确保所有浏览器均能在 URL URL 字符串中正确地字符串中正确地

传送文本,需要使用 传送文本,需要使用 HTML HTML 编编码。码。 HTMLEncode HTMLEncode 方法正是起这个作用的方法正是起这个作用的

例如,如果输入文本包含 “例如,如果输入文本包含 “ <”<” 和“和“ >”>” 字符,此方字符,此方法会将这些字符转换为其对等的 法会将这些字符转换为其对等的 HTML HTML 字符,即字符,即分别为 分别为 &lt &lt 和 和 &gt&gt ,以便浏览器将这些字符正确,以便浏览器将这些字符正确地显示为“地显示为“ <” <” 和“和“ >”>”

HTMLDecodeHTMLDecode 方法与方法与 HTMLEncodeHTMLEncode 刚好相反,对刚好相反,对已编码的字符串进行解码。已编码的字符串进行解码。

Page 20: 基于 .NET 的 Web 程序设计

20

URLEncodeURLEncode与与 URLDecodeURLDecode 方法方法 在 在 HTML HTML 编码中,将文本编码成相应的 编码中,将文本编码成相应的 HTML HTML 是为了在是为了在

浏览器中正确地显示 浏览器中正确地显示 如果是要求可靠的 如果是要求可靠的 HTTP HTTP 传输通过 传输通过 URL URL 将编码文本从 将编码文本从

Web Web 服务器传送到客户端,该怎么办? 服务器传送到客户端,该怎么办? 可使用 可使用 URLEncode URLEncode 方法实现此目的。它将文本编码以便方法实现此目的。它将文本编码以便

于通过 于通过 HTTP HTTP 进行可靠的传输进行可靠的传输

Page 21: 基于 .NET 的 Web 程序设计

21

实例实例 - - 利用利用 ServerServer 对象进行对象进行 URLURL 编码与解码编码与解码dim Str as stringdim Str as stringStr=“<b>URLStr=“<b>URL 字符串字符串 <br><br> 编码解码演示编码解码演示 </b>“</b>“Response.Write(”Response.Write(” 原始字符串:原始字符串:” ” & Str & “<br>”)& Str & “<br>”)Str = Server.URLEncode(Str)Str = Server.URLEncode(Str)Response.Write(“Response.Write(“ 编码后的结果:编码后的结果:” ” & Str & “<br>”)& Str & “<br>”)Str=Server.URLDecode(Str)Str=Server.URLDecode(Str)Response.Write(“Response.Write(“ 解码后的结果:解码后的结果:” ” & Str & “<br>”)& Str & “<br>”)

Page 22: 基于 .NET 的 Web 程序设计

22

MapPathMapPath 方法方法 Web Web 应用程序位于 应用程序位于 IIS IIS 根目录下的虚拟目录中根目录下的虚拟目录中 因此,我们请求网页时,引用称为“虚拟路径”的虚拟因此,我们请求网页时,引用称为“虚拟路径”的虚拟目录路径。但是经常需要得到 目录路径。但是经常需要得到 Web Web 服务器上的 服务器上的 Web Web 资源的实际物理路径资源的实际物理路径

用 用 MapPath MapPath 方法,我们可从其虚拟路径得到 方法,我们可从其虚拟路径得到 Web Web 资资源(如 源(如 .aspx .aspx 页面)的物理路径页面)的物理路径

MapPath(string path)Web 服务器上的指定虚拟路径对于的物理路径

Page 23: 基于 .NET 的 Web 程序设计

23

语句语句 Server.MapPath(“HTTPServer.MapPath(“HTTP 路径”路径” ))

实例 实例 – – 获取数据库文件存储路径获取数据库文件存储路径string FilePath;string FilePath;FilePath = Server.MapPath(“/data.mdb”)FilePath = Server.MapPath(“/data.mdb”)

Page 24: 基于 .NET 的 Web 程序设计

24

4.4 4.4 系统被点击数的设计 系统被点击数的设计 - - ApplicationApplication

Page 25: 基于 .NET 的 Web 程序设计

25

关于关于 ApplicationApplication 对象对象 客户端第一次从某个特定的客户端第一次从某个特定的 .NET Web.NET Web 应用程序虚拟目录应用程序虚拟目录

中请求任何 中请求任何 URL URL 资源时创建资源时创建 AApplicationpplication 对象。对于对象。对于 WeWebb 服务器上的每个服务器上的每个 .NET .NET WebWeb 应用程序都要创建一个应用程序都要创建一个 AppliApplicationcation 对象。对象。

Page 26: 基于 .NET 的 Web 程序设计

26

ApplicationApplication 对象的用途对象的用途 通常用于存储为所有客户端共享的全局数据通常用于存储为所有客户端共享的全局数据

如:利用如:利用 ApplicationApplication 对象存储站点访问计数器对象存储站点访问计数器

Page 27: 基于 .NET 的 Web 程序设计

27

使用使用 ApplicationApplication 对象存储信息对象存储信息Application(“Application(“ 键名”键名” ) = ) = 值值

或或Application(“Application(“ 键名”,值键名”,值 ))

获取获取 ApplicationApplication 对象信息对象信息变量名 变量名 = Application(“= Application(“ 键名”键名” ))或:变量名 或:变量名 = Application.Item(“= Application.Item(“ 键名”键名” ))或:变量名 或:变量名 = Application.Get(“= Application.Get(“ 键名”键名” ))

Page 28: 基于 .NET 的 Web 程序设计

28

更新更新 ApplicationApplication 对象的值对象的值Application.Set(“Application.Set(“ 键名”键名” , , 值值 ))

删除一个键删除一个键Application.Remove(“Application.Remove(“ 键名”键名” , , 值值 ))

删除所有键删除所有键Application.RemoveAll()Application.RemoveAll()或或Application.Clear()Application.Clear()

Page 29: 基于 .NET 的 Web 程序设计

29

• Lock Lock 和 和 Unlock Unlock 方法 方法

Lock()

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

Lock() 可用作 Application.Lock()

UnLock()

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

UnLock() 可用作Application.UnLock()

Page 30: 基于 .NET 的 Web 程序设计

30

使用使用 ApplicationApplication 事件事件 Application_StartApplication_Start

WebWeb 应用程序启动时触发本事件应用程序启动时触发本事件 Application_BeginRequestApplication_BeginRequest

WebWeb 程序被客户端请求时触发本事件程序被客户端请求时触发本事件 Application_AuthenticateRequestApplication_AuthenticateRequest

出现身份认证事件时触发本事件出现身份认证事件时触发本事件 Application_ErrorApplication_Error

出现错误时触发本事件出现错误时触发本事件 Application_EndApplication_End

WebWeb 服务结束时触发本事件服务结束时触发本事件

Page 31: 基于 .NET 的 Web 程序设计

31

4.5 4.5 系统会话 系统会话 - Session- Session 什么是什么是 SessionSession

SessionSession 对象包含特定于当前用户的信息对象包含特定于当前用户的信息 在当前用户会话期间可以记录和监视特定该用户的信息在当前用户会话期间可以记录和监视特定该用户的信息 当会话过期或终止时,服务器即清除当会话过期或终止时,服务器即清除 SessionSession 对象对象 SessionSession 可用于存储在当前用户的整个会话过程中都可以可用于存储在当前用户的整个会话过程中都可以访问的值访问的值

SessionSession 对象当中存储的数据仅供当前用户访问,各用户对象当中存储的数据仅供当前用户访问,各用户的的 SessionSession 数据互不干扰。而数据互不干扰。而 ApplicationApplication 对象存储的数据对象存储的数据可在所有会话用户中共享。可在所有会话用户中共享。

Page 32: 基于 .NET 的 Web 程序设计

32

使用使用 SessionSession 对象存储信息对象存储信息 Session(“Session(“ 键名”键名” ) = ) = 值值

或 或 Session(“Session(“ 键名”,值键名”,值 ))

获取获取 SessionSession 对象信息对象信息 变量名 变量名 = Session(“= Session(“ 键名”键名” )) 或:变量名 或:变量名 = Session.Item(“= Session.Item(“ 键名”键名” )) 或:变量名 或:变量名 = Session.Get(“= Session.Get(“ 键名”键名” ))

Page 33: 基于 .NET 的 Web 程序设计

33

SessionSession 对象的生命周期对象的生命周期 超时结束当前会话超时结束当前会话若浏览器在设定的期限内对网页提出请求或者刷新若浏览器在设定的期限内对网页提出请求或者刷新页面,那么就强制关闭该用户的页面,那么就强制关闭该用户的 SessionSession 对象。对象。

主动结束当前会话主动结束当前会话通过调用通过调用 Session.Abandon()Session.Abandon() 方法可主动结束当前方法可主动结束当前会话。会话。

Page 34: 基于 .NET 的 Web 程序设计

34

4.64.6 实现免登录系统的个性化设置 - CookieCookie 什么是什么是 CookieCookie

CookieCookie是是 WebWeb 服务器存储在客户端磁盘上面的一段文本服务器存储在客户端磁盘上面的一段文本信息。信息。

CookieCookie 主要应用于存储客户的配置信息(如根据用户个性主要应用于存储客户的配置信息(如根据用户个性化要求定制网站频道,通过存储登录帐户信息实现免登化要求定制网站频道,通过存储登录帐户信息实现免登录)录)

Page 35: 基于 .NET 的 Web 程序设计

35

案例案例

可将销售管理信息系统的帐户信息存储到可将销售管理信息系统的帐户信息存储到 CookiesCookies 当中,实现免当中,实现免输入登录输入登录 IDID 、登录密码进行系统登录的个性化设置、登录密码进行系统登录的个性化设置

Page 36: 基于 .NET 的 Web 程序设计

36

• 案例案例

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

会话 Cookie

持久性 Cookie

………

Page 37: 基于 .NET 的 Web 程序设计

37

• 创建和读取会话 创建和读取会话 CookieCookie

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

Response.Cookies.Add(objHttpCookie);

新建 Cookie

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

创建 Cookie

读取 Cookie

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

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

Page 38: 基于 .NET 的 Web 程序设计

38

• 创建和读取持久性 创建和读取持久性 CookieCookie

读取 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);