1、ASP.NETASP.NET应用开发教程应用开发教程案例9 制作网站计数器授课课时:授课课时:4 4课时(课时(180180分钟)分钟)主编:刘志成主编:刘志成29.1 案例描述 网站访问计数器是许多网站用来统计访问量的一种工具,实现网站访网站访问计数器是许多网站用来统计访问量的一种工具,实现网站访问计数器要用到问计数器要用到Application对象、对象、Session对象和对象和Server对象对象。网站访网站访问量统计计数器运行结果如图所示。记录同一台机器是第几次登录的计数问量统计计数器运行结果如图所示。记录同一台机器是第几次登录的计数器运行结果如图所示。器运行结果如图所示。案例描述案
2、例描述 39.2 案例完成步骤9.2.19.2.1创建新项目与页面创建新项目与页面 1创建项目创建项目在在Microsoft Visual Studio 2019中创建名称为中创建名称为“ch09”的网站的操作步的网站的操作步骤如下:骤如下:(1)选择)选择“开始开始”“程序程序”“Microsoft Visual Studio 2019”“Microsoft Visual Studio 2019”命令,启动命令,启动Microsoft Visual Studio 2019,进入,进入.NET集成开发环境。集成开发环境。(2)在)在Microsoft Visual Studio 2019集成开
3、发环境中,选择集成开发环境中,选择“文文件件”|“新建新建”|“网站网站”命令,打开命令,打开“新建网站新建网站”对话框。对话框。(3)在)在“新建网站新建网站”对话框中,网站名为对话框中,网站名为“ch09”,至此,一个名为,至此,一个名为“ch09”的网站便创建成功。的网站便创建成功。49.2 案例完成步骤9.2.19.2.1创建新项目与页面创建新项目与页面 2添加页面与设计页面添加页面与设计页面(1)在)在Default.aspx页面添加一个页面添加一个Label控件,用于显示网站访问次数,控件,用于显示网站访问次数,其页面设计如图所示。其页面设计如图所示。(2)在项目中添加一个新的窗体
4、)在项目中添加一个新的窗体“Cookie_Count.aspx”。使用。使用Cookie对象统计同一台机器访问本网站的次数。对象统计同一台机器访问本网站的次数。59.2 案例完成步骤9.2.2 9.2.2 实现网站计数器功能实现网站计数器功能 1使用文本文件来保存网站访问次数使用文本文件来保存网站访问次数。(1)创建保存次数的文本文件)创建保存次数的文本文件在项目在项目“ch09”文件夹中创建一个命名为文件夹中创建一个命名为count.txt的文本文件,输入一的文本文件,输入一个数字个数字“20”。(2)编写编写Page对象对象Load事件过程的程序代码事件过程的程序代码69.2 案例完成步骤
5、9.2.2 9.2.2 实现网站计数器功能实现网站计数器功能(3)编写)编写Page对象对象Unload事件过程的程序代码事件过程的程序代码 79.2 案例完成步骤9.2.2 9.2.2 实现网站计数器功能实现网站计数器功能 2使用使用Cookie对象来保存网站访问次数对象来保存网站访问次数(1)Cookie对象的写操作对象的写操作将将Cookie对象的值写入到客户端的机器上保存,有效期为对象的值写入到客户端的机器上保存,有效期为30天。天。页面页面的初始化代码如下。的初始化代码如下。89.2 案例完成步骤9.2.2 9.2.2 实现网站计数器功能实现网站计数器功能 登录登录”按钮代码(即写按
6、钮代码(即写Cookie代码)如下。代码)如下。99.2 案例完成步骤9.2.2 9.2.2 实现网站计数器功能实现网站计数器功能(3)使用)使用Cookie对象记录用户访问网站次数对象记录用户访问网站次数当网站想记录每一个用户访问本网站的次数时,可以使用当网站想记录每一个用户访问本网站的次数时,可以使用Cookie对象对象来实现。使用来实现。使用Cookie对象来实现记录用户访问网站的次数思路如下。对象来实现记录用户访问网站的次数思路如下。第一步第一步:判断用户是否关闭了:判断用户是否关闭了Cookie。第二步第二步:使用:使用Request对象读对象读Cookie对象。对象。第三步第三步:
7、判断:判断Cookie对象是否为空,若为空则对对象是否为空,若为空则对Cookie对象进行写操对象进行写操作,若不为空则在读取的值上加作,若不为空则在读取的值上加1来实现记录用户访问次数。来实现记录用户访问次数。“Cookie_Count.aspx”页面的页面的Page_Load事件代码如下所示。事件代码如下所示。109.2 案例完成步骤9.2.2 9.2.2 实现网站计数器功能实现网站计数器功能 119.2 案例完成步骤9.2.2 9.2.2 实现网站计数器功能实现网站计数器功能 程序第一次运行的结果如图所示。程序第一次运行的结果如图所示。第二次访问的结果如图所示。第二次访问的结果如图所示。
8、129.3 知识链接9.3.1 Server9.3.1 Server对象对象 Server对象提供了一种处理对象提供了一种处理HTTP连接请求连接请求的方法。的方法。Server对象所对对象所对应的类是应的类是HttpServerUtility类。类。Server对象用来处理与对象用来处理与HTTP连接请连接请求相关的事件,最典型的应用是使用求相关的事件,最典型的应用是使用MapPath方法取得相对路径在方法取得相对路径在服务器上对应的绝对路径,以及使用服务器上对应的绝对路径,以及使用HtmlEncode和和HtmlDecode方方法对法对Html文本进行处理等。文本进行处理等。1HTML的解
9、码与编码的解码与编码Server对象的对象的HtmlDecode与与HtmlEncode属性可对网页上的输出内属性可对网页上的输出内容进行容进行HTML的编、解码动作。的编、解码动作。139.3 知识链接9.3.1 Server9.3.1 Server对象对象 Server对象的常用属性和常用方法如表所示。对象的常用属性和常用方法如表所示。149.3 知识链接9.3.1 Server9.3.1 Server对象对象 2URL的解码与编码的解码与编码Server对象的对象的UrlDecode与与UrlEncode属性也是进行解码与编码,只是属性也是进行解码与编码,只是它的对象是它的对象是URL,
10、也是存在于网址中的信息。这些编、解码的动作是为,也是存在于网址中的信息。这些编、解码的动作是为了让一些无法读取或者特殊的字符了让一些无法读取或者特殊的字符(例例如如、#、&、等等)也能顺利地解也能顺利地解读出来。读出来。3文本文件的操作文本文件的操作文件操作中的重点是文件的读写操作,文件操作中的重点是文件的读写操作,System.IO命名空间提供了许多命名空间提供了许多文件读写操作类,常见的对文件进行操作的方式有两种:文本模式与二文件读写操作类,常见的对文件进行操作的方式有两种:文本模式与二进制模式。进制模式。文本模式常用文本模式常用StreamWriter类来处理,类来处理,StreamWr
11、iter类是专门用来处类是专门用来处理文本文件的类,可以方便的向文本文件中写入字符串。同时也负责重理文本文件的类,可以方便的向文本文件中写入字符串。同时也负责重要的转换和处理向要的转换和处理向FileStream对象写入工作。对象写入工作。159.3 知识链接9.3.1 Server9.3.1 Server对象对象 System.IO命名空间中的类如表所示。命名空间中的类如表所示。169.3 知识链接9.3.1 Server9.3.1 Server对象对象 179.3 知识链接9.3.1 Server9.3.1 Server对象对象 文本文件的打开、读取,文本文件原来的内容如图所示。文本文件的
12、打开、读取,文本文件原来的内容如图所示。189.3 知识链接9.3.1 Server9.3.1 Server对象对象 文本文件的读操作,文本文件原来的内容如图所示。文本文件的读操作,文本文件原来的内容如图所示。页面的初始化代码如下。页面的初始化代码如下。199.3 知识链接9.3.1 Server9.3.1 Server对象对象 文本文件的写操作。页面的初始化代码如下。文本文件的写操作。页面的初始化代码如下。209.3 知识链接9.3.2 Request 9.3.2 Request 对象对象 1取得网页浏览者的机器信息取得网页浏览者的机器信息可以利用可以利用Request对象取得客户端的机器信
13、息,例如对象取得客户端的机器信息,例如IP地址、数据流量地址、数据流量及内容类型等,常用属性见下表。及内容类型等,常用属性见下表。219.3 知识链接9.3.2 Request 9.3.2 Request 对象对象 利用利用Request对象取得客户端机器的相关信息。页面的初始化代码如下。对象取得客户端机器的相关信息。页面的初始化代码如下。229.3 知识链接9.3.2 Request 9.3.2 Request 对象对象 2取得目前浏览网页的路径取得目前浏览网页的路径 Request对象提供了对象提供了MapPath方法与方法与Path属性,供服务器来了解目属性,供服务器来了解目前被浏览网页
14、的路径。前被浏览网页的路径。利用利用Path属性可让服务器端得知目前被浏览网页的路径属性可让服务器端得知目前被浏览网页的路径(默认浏览默认浏览文件夹以下的路径文件夹以下的路径),而,而MapPath方法不但可以得知目前网页的完整路方法不但可以得知目前网页的完整路径,还可结合一个字符串,这个字符串可以是文件名称,这样便可产生径,还可结合一个字符串,这个字符串可以是文件名称,这样便可产生一个新的文件路径。一个新的文件路径。3取得网页浏览者的浏览器信息取得网页浏览者的浏览器信息 除了网页浏览者向服务器端提供信息外,服务器端也能靠除了网页浏览者向服务器端提供信息外,服务器端也能靠Request对象中的
15、对象中的Browser属性,取得网页浏览者的浏览器信息。属性,取得网页浏览者的浏览器信息。若使用了非若使用了非Request.Browser的成员,则会出现错误信息,这表示可的成员,则会出现错误信息,这表示可以使用以使用HttpbrwserCapabilities类下面的属性来显示浏览器的各种信息,类下面的属性来显示浏览器的各种信息,常用属性及说明见下表。常用属性及说明见下表。239.3 知识链接9.3.2 Request 9.3.2 Request 对象对象 249.3 知识链接9.3.2 Request 9.3.2 Request 对象对象 取得网页浏览者的浏览器信息的页面的初始化代码如下
16、。取得网页浏览者的浏览器信息的页面的初始化代码如下。259.3 知识链接9.3.2 Request 9.3.2 Request 对象对象 4取得服务器端提供的信息取得服务器端提供的信息 Request对象有一个对象有一个ServerVariables属性,可以让我们知道服务属性,可以让我们知道服务器端所提供的数据集合,其使用方法为:器端所提供的数据集合,其使用方法为:Request.ServerVariables(“关键字关键字”)。关键字决定所要表示的服务器。关键字决定所要表示的服务器端数据,包括浏览器信息、机器的端数据,包括浏览器信息、机器的IP地址、网页路径等。当需要列出名地址、网页路径
17、等。当需要列出名称内容时,可运用称内容时,可运用ASP.NET中的中的NameValueCollection类,它可返回类,它可返回一个多字符串的集合。一个多字符串的集合。269.3 知识链接9.3.3 Cookie9.3.3 Cookie对象对象 1Cookie对象的属性与方法对象的属性与方法 279.4 拓展提高选择题选择题 1.利用利用Request对象的对象的()方法可以得目前所浏览网页在服务器端的相方法可以得目前所浏览网页在服务器端的相对地址。对地址。A.PhysicalPathB.FilePathC.PhysicalApplicationPathD.RawUrl2.在在Server
18、对象方法中,下面对象方法中,下面()方法可以取得目前网页的实际路径。方法可以取得目前网页的实际路径。.UrlEncode .Transfer.HtmlDecode D.MapPath3.下面下面()选项可以获得客户端的选项可以获得客户端的IP地址。地址。.Request.UserHostName.Request.UserHostAddress.Request.URL D.Request.FilePath)4.下面哪一个属性可以判断客户端是否禁用下面哪一个属性可以判断客户端是否禁用Cookies()。A.TimeStampB.IsCookielessC.ExpiresD.Discard、289.4 拓展提高操作题操作题 1操作要求操作要求(1)仿照投票网站,限定一台机器一天只能投一票,完成此功能的程序。)仿照投票网站,限定一台机器一天只能投一票,完成此功能的程序。(2)仿照论坛网站,显示当前在线总人数,游客人数,访问者的)仿照论坛网站,显示当前在线总人数,游客人数,访问者的IP,完,完成此功能的程序。成此功能的程序。2操作说明操作说明(1)通过在客户端写)通过在客户端写Cookie对象来记录机器的访问信息。对象来记录机器的访问信息。(2)游客人数就是没有登录的浏览者。)游客人数就是没有登录的浏览者。、