280 likes | 453 Views
第 7 章 网站应用架构和配置( 3 ). 1. 7. 内容回顾. Application 对象的理解 Application 对象的自定义属性 使用 Application 事件 对 Server 对象的理解. 内容提要. 对 Session 的理解 利用 Session 的自定义属性保存信息 Cookie 是怎样工作的 向浏览器输出 Cookie G lobal.asax 配置文件 ASP.NET 运行配置文件. Session 对象.
E N D
第7章网站应用架构和配置(3) 1 7
内容回顾 • Application对象的理解 • Application对象的自定义属性 • 使用Application事件 • 对Server对象的理解
内容提要 • 对Session的理解 • 利用Session的自定义属性保存信息 • Cookie是怎样工作的 • 向浏览器输出Cookie • Global.asax配置文件 • ASP.NET运行配置文件
Session对象 • 什么是Sessions?Session其实指的就是访问者从到达某个特定主页到离开为止的那段时间,每个访问者都会单独获得一个Session。 • Sessions可以用来储存访问者的一些喜好,例如:访问者是喜好绿色背景还是蓝色?访问者是否对分屏方式怀有敌意。以及访问者是否宁可浏览纯文本的站点,这些信息可以依据Sessions来跟踪。
对Session的理解 • Session自动为每一位用户分配一个ID 源程序:7-16.aspx <% @ Page Language="VB" %> <HTML> <BODY> <br>你的自动编号为:<%=Session.SessionID%> </BODY> </HTML>
Session的自定义属性保存信息 源程序:7-17.aspx <% @ Page Language="VB" %> <HTML> <HEAD><TITLE>Session示例</TITLE></HEAD> <BODY> <% Session("Greeting")="欢迎!" Response.Write(Session("Greeting")) %> </BODY> </HTML>
Session事件 • 和其他对象不同的是,Session对象中有事件(Event)。 • 一共两种:Session_OnStart事件,当一个Session开始时被触发。还有Session_OnEnd事件,当一个Session结束时被触发。 • 在一个脚本中你可以和其中一个并且只能和其中一个事件关联。我们在Global.asax文件中讲解。
利用Session 实现密码验证 源程序:session1.aspx <% @ Page Language="VB" %> <HTML> <HEAD><TITLE>用户名</TITLE></HEAD> <BODY> <% Session("name1")="ShiZhiGuo" Session("Mycompany")="jennyJiangli" %> </BODY> </HTML> • 当用户注册时,就将其信息保存到Session中,然后再在每个页面中检查这样的话可以防止非法用户浏览网页。
检查用户是否合法 源程序:session2.aspx <% @ Page Language="VB" %> <HTML> <HEAD><TITLE>用户名</TITLE></HEAD> <BODY> <% if (Session("name1")="ShiZhiGuo") then Response.Write("你是一位合法用户") else Response.Write ("不合法用户") End If %> </BODY> </HTML>
利用Session 实现购物车 源程序:session3.aspx <% @ Page Language="VB" %> <HTML> <HEAD><TITLE>用户名</TITLE></HEAD> <BODY> <% if(Request("B1")="提交") then Session("s1")=Request("c1") Session("s2")=Request("c2") Session("s3")=Request("c3") End if %> 各种肉大甩卖,一律十块: <form method="POST" action="session3.aspx"> <p></p> <p><input type="checkbox" name="c1" value="猪肉">猪肉</p> <p><input type="checkbox" name="c2" value="牛肉">牛肉</p> <p><input type="checkbox" name="c3" value="羊肉">羊肉</p> <p><input type="submit" value="提交" name="B1"> <input type="reset" value="全部重写" name="B2"> <a href="session4.aspx">买点别的</a> <a href="session5.aspx">查看购物车</a> </p> </form> </BODY>
利用Session 实现购物车 源程序:session4.aspx <% @ Page Language="VB" %> <HTML> <HEAD><TITLE>用户名</TITLE></HEAD> <BODY> <% if(Request("x1") ="提交") then Session("s4")=Request("b1") Session("s5")=Request("b2") Session("s6")=Request("b3") End If %> 各种球大甩卖,一律八块: <form method="POST" action="session4.aspx"> <p></p> <p><input type="checkbox" name="b1" value="篮球">篮球</p> <p><input type="checkbox" name="b2" value="足球">足球</p> <p><input type="checkbox" name="b3" value="排球">排球</p> <p><input type="submit" value="提交" name="x1"> <input type="reset" value="全部重写" name="B2"> <a href="session3.aspx">买点别的</a> <a href="session5.aspx">查看购物车</a> </p> </form> </BODY> </HTML>
利用Session 实现购物车 源程序:session5.aspx <% @ Page Language="VB" %> <HTML> <HEAD><TITLE>用户名</TITLE></HEAD> <BODY> 你选择的结果是: <div align="center"> <center> <% Response.Write(Session("s1") & "<br>") Response.Write(Session("s2") & "<br>") Response.Write(Session("s3") & "<br>") Response.Write(Session("s4") & "<br>") Response.Write(Session("s5") & "<br>") Response.Write(Session("s6") & "<br>") %> </center> </div>
Cookie集合 • Cookies将通过HTTP Headers来从服务端返回到浏览器上。 • 服务端首先在响应中利用Set-Cookie header来创建一个Cookie,浏览器后面的请求的cookie header中就会返回这个Cookie来完成浏览器的认证。
向浏览器输出Cookie 源程序:7-18.aspx <% @ Page Language="VB" %> <% dim MyCookie as new HttpCookie("user") MyCookie.Value = "春天真舒服!" Response.Cookies.Add(MyCookie) %> 写入Cookies
从浏览器读取Cookie 源程序:7-19.asp <% @ Page Language="VB" debug="true"%> <% dim mycook=Request.Cookies("user").Value Response.Write(mycook) Response.Write("<br>") %> 读出Cookies
Global.asax配置文件 • Global.asax 文件(也叫做 ASP.NET 应用程序文件)是一个可选的文件,该文件包含响应 ASP.NET 或 HTTP 模块引发的应用程序级别事件的代码。 • Global.asax 文件驻留在基于 ASP.NET 的应用程序的根目录中。 • 在运行时,分析 Global.asax 文件并将其编译到一个动态生成的 .NET 框架类,该类是从 HttpApplication 基类派生的。配置 Global.asax 文件自身,以便自动拒绝对该文件的任何直接 URL 请求;外部用户不能下载或查看在其中编写的代码。
利用Global.asax文件实现动态在线人数统计 • 当网站被第一个人访问时就会自动调用Global.asax 文件,但是需要注意的是:Global.asax文件必须放在网站的根目录下。 案例名称:在线人数统计主文件 源程序:countonline.aspx <% @ Page Language="VB" %> <%Response.Write( "现在有" & Application("whoson") & "人在线")%>
人数统计Global.asax文件 案例名称:在线人数统计Global.asax文件 源程序:global.asax <Script language="VB" runat="server"> Sub Session_OnStart() Application.Lock() Application("whoson")=Convert.ToInt32(Application("whoson"))+1 Application.UnLock() End Sub Sub Session_OnEnd() Application.Lock() Application("whoson")=Convert.ToInt32(Application("whoson"))-1 Application.UnLock() End Sub Sub Application_OnStart() Application.Lock() Application("whosOn")=0 Application.UnLock() End Sub </script>
ASP.NET运行配置文件 • 利用基于XML的配置文件,可以很容易地定制ASP.NET。通过在文本编辑器中编辑文件,这些文件可以用来配置ASP.NET中的任何组件。 • 两种类型的配置文件: • 机器的配置文件machine.config——用以机器范围内的设置 • 应用程序配置文件web.config——用以应用程序特定的设置 • 一般machine.config文件可以从下面的位置找到: • %SystemRoot%\Microsoft.NET\Framework\V版本号\CONFIG\machine.config
配置文件特点 • 初始化页面时,会先读取machine.config中的信息。如果读完了,ASP.NET就会进入下一个层次的级中,读取存储在web应用程序根目录中的web.config文件。 • 这些文件提供了其他的配置信息,来扩充或覆盖继承自machine.config的设置。 • 然后,ASP.NET会继续进入下一级,读取存储在应用程序的根目录下的子目录中的web.config文件。这些文件可以用来扩充或覆盖在machine.config中或者在web.config根文件中给出的信息。
配置文件结构 • 这部分的配置文件包含了通常的应用程序配置的设置,比如超时、请求最大长度以及在重定向页面时候是否使用完全限制的URL,都包含在<httpRuntime>标记中,配置的语法为: • <httpRuntime executionTimeout="180" maxRequestLength="8192" • 在ASP.NET取消请求之前,executionTimeout控制资源执行的时间,以秒为单位,90秒是默认值。maxRequestLength指定请求的最大长度,4MB是默认值。如果请求内容大于4M就需要增加这个值。
页面配置 • 页面设置可以控制ASP.NET页面的默认行为,比如在发送它之前是否要缓冲输出,或者是否可以在应用程序的页面使用会话状态。信息保存在配置文件的<pages>元素中。 • 语法为: • <pages buffer="true" enableSessionState="true"/> • buffer表明代码执行的处理模式。当它设置为true的时候,会在呈现页面中任何HTML数据之前执行所有的代码。enableSessionState表明是否可以使用服务器的会话变量。默认为true,就是可以使用
利用ASP.NET读取配置文件 • 将上面的配置文件,保存成一个文件,命名为web.config,和下面的readconfig.aspx保存到同一个目录中。 案例名称:配置文件 源程序:web.config <configuration> <appSettings> <add key="DSN" value="server=xueweimin;uid=sa;pwd=;database=pubs"/> </appSettings> </configuration>
读取配置文件 案例名称:读取配置文件 源程序:readconfig.aspx <% @ Page Language="VB" %> <% dim strData=ConfigurationSettings.AppSettings("DSN") Response.Write(strData) %>
习 题 • 1、_______,也叫做ASP.NET应用程序文件,在网站的根目录中,该文件是可选的,可以不定义该文件。 • 2、ASP.NET提供两种类型的配置文件:、______________——用以机器范围内的设置,,______________——用以应用程序特定的设置 • Global.asax文件 机器的配置文件machine.config 应用程序配置文件web.config
选择题 • 1、下面哪些语句可以写在global.asax文件中( AB ) • A Application_OnStart B Application_OnEnd • C Response.Write() D <body>标记 • 2、下面的说法中,正确的是( ABCD ) • A Global.asax文件中必须用<SCRIPT>标记来引用事件,不能用“<% %>”符号引用 • B初始化页面时,首先读取machine.config中的信息,然后读取存储在web应用程序根目录中的web.config文件,接着ASP.NET继续进入下一级,读取存储在应用程序根目录下的子目录中的web.config文件。 • C在ASP.NET取消请求之前,executionTimeout控制资源执行的时间,以秒为单位,90秒是默认值。 • D enableSessionState表明是否可以使用服务器的会话变量。默认为true,就是可以使用
本章总结 • 对Session的理解 • 利用Session的自定义属性保存信息 • Cookie是怎样工作的 • 向浏览器输出Cookie • Global.asax配置文件 • ASP.NET运行配置文件