1、目目 录录项目介绍1学习目标2学习指南3任务实施4 学习学习目标目标v v(2)拓展技能v 学会设计实现网站计数器的能力;v 学会设计实现用户访问计数器的能力;v 学会设计实现电子商务购物车的能力;v 学会设计实现聊天室的能力。项目介绍项目介绍 v5.1.1 项目实施背景vASP.NET是一种建立动态Web应用程序的技术,它是.NET Framework的一部分,可以使用任何.NET兼容的语言编写ASP.NET应用程序。但是使用诸如C#等语言,对ASP.NET页面(Web Forms)进行编译可以提供比脚本语言更出色的性能表现。在ASP.NET页面中,可以使用ASP.NET服务器端控件来建立常
2、用的用户接口元素,并对其进行编程;可以使用内建可重用组件和自定义组件快速建立Web Form,从而使代码大大简化。相对原有的Web技术而言,ASP.NET提供的编程模型和结构有助于快速、高效地建立灵活、安全和稳定的应用程序。项目介绍项目介绍v1ASP.NET的内置对象vASP.NET提供了许多内置对象,这些对象提供了许多功能。例如,可以在两个网页之间传递变量,输出数据,以及记录变量值等。这些对象在ASP时代已经存在,到了ASP.NET环境下,这些功能仍然可以使用,而且更强大。ASP.NET内置对象有Response、Request、Server、Application、Session和Cook
3、ie等,相对于ASP内置对象而言,它们的功能得到了显著增强。虽然由于服务器控件技术的使用大大降低了ASP.NET开发对其内置对象的依赖性,但是在某些场合这些对象仍然是非常重要的,使用ASP.NET内置对象实现网站建设中的某些常用功能是非常方便而有效的。项目介绍项目介绍v2电子商务网站中ASP.NET的典型应用v在电子商务网站中,我们经常用到网站的提交数据、访问计数、购物车和聊天室等功能,这些功能的实现必须用到ASP.NET 的内部对象。如通过Request对象和Response对象实现数据的提交,使用Application对象或Cookie对象实现网站的计数功能,使用Session对象实现网站
4、的购物车功能,使用Session对象、Application对象等实现聊天室功能我们不仅要学会这些典型应用,还要举一反三,拓展更多的应用,编写出更加出色的交互式网站。学习指南学习指南-网站计数器网站计数器v5.2.1 ASP.NET内置对象vASP.NET提供了许多内置对象,这些对象提供了许多功能。例如,可以在两个网页之间传递变量,输出数据,以及记录变量值等。这些对象在ASP时代已经存在,到了ASP.NET环境下,这些功能仍然可以使用,而且更强大。ASP.NET内置对象有Response、Request、Server、Application、Session和Cookie等,相对于ASP内置对象
5、而言,它们的功能得到了显著增强。虽然由于服务器控件技术的使用大大降低了ASP.NET开发对其内置对象的依赖性,但是在某些场合这些对象仍然是非常重要的,使用ASP.NET内置对象实现网站建设中的某些常用功能是非常方便而有效的。学习指南学习指南-网站计数器网站计数器v1.Response对象的属性和方法vResponse对象是HttpResponse类的一个案例,用于控制服务器发送给浏览器的信息,包括直接发送信息给浏览器,重定向浏览器到另一个URL,以及设置cookie的值。表6-1和表6-2分别列举了Response对象的常用属性和方法。学习指南学习指南-网站计数器网站计数器v2使用Respon
6、se对象vResponse对象可以输出信息到客户端,包括直接发送信息到浏览器,重定向浏览器到另一个URL,以及设置cookie的值。v(1)发送信息v向浏览器发送信息是Response对象最常用的功能,一般是通过其Write()方法实现。其语法形式为:vResponse.Write(value);学习指南学习指南-网站计数器网站计数器v【案例6-1】向网页中输出字符串。v 新建网站,进入设计视图,双击页面进入C#代码编辑器,然后在Page_Load事件中添加如下代码:v protected void Page_Load(object sender,EventArgs e)v Response.
7、Write();v for(int i=2;i 7;i+)v Response.Write();v Response.Write();v Response.Write(坚持就是胜利!);v Response.Write();v Response.Write();v v Response.Write();v v 运行结果如图6-1所示,通过循环使用Response.Write()方法输出多个字符串“坚持就是胜利!”,而且利用循环变量i和font标记控制了字体的大小。学习指南学习指南-网站计数器网站计数器v(2)重定向浏览器v在访问某个网站时,首先访问的是网站的主页,然后通过主页访问其他页面。如果
8、想跳过主页,通常是在浏览器的地址栏中直接输入某个功能页面的地址,除此之外没有更加简单的方法。一方面,网站设计者不希望这样;另一方面,只有具有特定权限的用户才可以访问某些页面。网站设计者可以使用Response对象的Redirect()方法来强制用户进入某个必须首先访问的页面,其语法格式为:vResponse.Redirect(Url);学习指南学习指南-网站计数器网站计数器v【案例6-2】使用Response.Redirect实现网页重定向。v 新建网站,进入设计视图,然后按图6-2设计界面。双击转向按钮进入C#代码编辑器,然后在按钮事件中添加如下代码:v protected void But
9、ton1_Click(object sender,EventArgs e)v Response.Redirect(http:/);v 需要添加的代码只有一句,就是Response.Redirect(http:/);,用于重定向到搜狐网,运行时单击按钮,就会重定向到搜狐网。在实际开发中,我们可以根据自己的需求让它重定向到指定的网页,无论是因特网上的网页还是本地的网页皆可。学习指南学习指南-网站计数器网站计数器v 2Request对象v Request对象是HttpRequest类的一个案例,其主要功能是从客户端获取数据。使用该对象可以访问任何HTTP请求传递的信息,包括使用POST方法或者GET
10、方法传递的参数、cookie和用户验证。由于Request对象是Page对象的成员,所以在程序中可以直接使用。v(1)Request对象的属性和方法v 使用Request对象的Form属性,可以在多个ASP.NET页面之间传递消息,它通过使用POST方法的表格检索传送到HTTP请求正文中表格元素的值。Form集合是按请求正文中参数的名称来索引的,Request.Form(element)的值就是请求正文中element的值。v 使用Request对象的QueryString属性,可以检索HTTP查询字符串中变量的值,通过发送表格数据或者由用户在其浏览器的地址栏中输入查询都可以生成HTTP查询字
11、符串。它与Form集合的区别是:使用QueryString集合检索HTTP查询字符串中变量的值时,变量和它的值是可见的。正因如此,不可以使用它来传递用户密码。另外,一般情况下也不使用它来传递数据量较大的信息。表6-3和表6-4分别列举了Request对象的属性和方法。学习指南学习指南-网站计数器网站计数器v(2)使用Request对象v 获取URL传递变量v使用Request对象的QueryString属性,可以获取URL地址中问号后面的数据,即URL附加信息。QueryString主要用于获取HTTP协议中GET请求发送的数据。如果某个请求事件中被请求的URL地址中出现了问号以及其后的数据,
12、那么该请求的方法为GET。GET方法是HTTP请求中的默认请求方法,也可以同时传递多个参数。学习指南学习指南-网站计数器网站计数器v3Server对象vServer对象提供了对服务器上方法和属性的访问。最常用的方法是创建ActiveX组件的案例,其他方法可用于将URL或HTML编码成字符串,或者将虚拟路径映射到物理路径以及设置脚本的超时时间等。v(1)Server对象的属性和方法vServer对象的属性和方法分别如表6-5和表6-6所示。学习指南学习指南-网站计数器网站计数器v(2)使用Server对象v Server对象的大多数方法和属性均作为实用程序的功能服务。例如,使用它们可以实现转变字
13、符串格式,创建捆绑对象,以及控制页面显示时间等。v 获取计算机名和脚本过期时间v 需要输出服务器的计算机名,此时只需使用Server对象的MachineName属性即可。可以在ASPX中添加这样的脚本:v v Server对象的SriptTimeOut属性用于设置脚本运行的最长时间,以限制脚本运行时间。脚本运行时间的最长限制有一个默认值,这是防止无限次循环的有效措施。不过,在一些特殊场合,你也许需要脚本运行时间大于默认值。例如,当生成一个十分巨大的主页时,我们肯定不希望主页显示到一半就过了限制时间,此时就可以利用Server对象的 ScriptTimeout属性来设定我们期望的限制时间。例如,
14、下面脚本将过期时间设为150秒。学习指南学习指南-网站计数器网站计数器vv需要注意的是,设置的ScriptTimeOut值要比IIS默认的设定值大才起作用。也就是说,如果我们设定ScriptTimeOut的值小于默认值,则过期时间还以默认值计。v 向浏览器输出HTML代码v向浏览器输出HTML代码要用到HtmlEncode()方法和HtmlDecode()方法。其中,HtmlEncode()方法对指定的字符串进行HTML编码,而HtmlDecode()方法对HtmlEncode()的编码进行解码。下面通过两个案例来说明它们的功能。学习指南学习指南-网站计数器网站计数器v【案例6-5】运用Ser
15、ver对象的HtmlEncode()方法向浏览器输出HTML代码。v 新建网站,然后在首页的ASPX文件中添加脚本,对一个含标记的字符串进行HtmlEncode编码输出并对比不编码输出内容。v v%Response.Write(Server.HtmlEncode(成功属于永不放弃的人!);v Response.Write(成功属于永不放弃的人!);%v v 运行结果如图6-10所示。用到Server对象HtmlEncode编码的字符串被原样输出,其中的标记语言也被输出,而没有编码的字符串中的标记语言被浏览器解释执行,只输出非标记文字内容。学习指南学习指南-网站计数器网站计数器v6.2.2 Ap
16、plication对象和网页计数器vApplication对象是运行在Web应用服务器上的虚拟目录及其子目录下所有文件、页面、模块和可执行代码的总和。一旦网站服务器被打开,它就自动创建了Application对象。所有用户共用一个Application对象并且可以对其进行修改。Application对象的这一特性,使得网站设计者可以方便地创建诸如聊天室和网站计数器等常用的Web应用程序。v1Application对象的属性和方法v表6-7是Application对象的属性,表6-8列出了Application对象的方法。学习指南学习指南-网站计数器网站计数器v2使用Application对象v
17、一个Application对象就是硬盘上的一组网页以及.aspx文件。数据可以在Application对象内部共享,因此可以覆盖多个用户。一个网站可以拥有多个Application对象,而且可以为特定的ASP.NET文件创建特定的Application文件。首先学习如何使用Application对象的自定义属性。v可以根据特定的需要为Application对象定义属性,用以存储一些公有的数据,语法形式为:vApplication属性名v这些存储数据可以被网页内的其他位置或其他网页访问。学习指南学习指南-网站计数器网站计数器v【案例6-7】运用Application对象在一个网页内传递值。v 新
18、建网站,然后进入首页的设计视图,添加部分脚本,定义3个Application属性,属性名分别是regardMorning、regardAfternoon和regardNight,分别用它们存储一些字符串,最后到网页的后面访问输出这些字符串。ASPX文件的内容如下:v v v v v v v v v 运行结果如图6-12所示。Application对象存储的值被顺利输出,说明3个属性的存储功能。学习指南学习指南-网站计数器网站计数器v3网页计数器的实现v网页计数器是指用来统计某网页被用户访问总次数的程序。实现网页计数器是Application对象的主要应用之一。由于Application对象是所
19、有用户共享的,因此可以用来存储计数器的值。当有新用户访问网页时,可以自动增加计数器的值。学习指南学习指南-网站计数器网站计数器v【案例6-8】运用Application对象实现网页计数器。v 新建网站,然后进入首页的HTML源代码,添加脚本。ASPX文件的内容如下:v v 用Application实现简单的网页计数器v v v 你是本站第位访客!v 主要脚本语言如下:v v 类似于常用的i=i+1,只是一种累加,并运用Application属性能存储值的特性,从而实现了简单的计数器功能。因为Application属性值类型是字符串,所以加1时先要转换类型为整数型才能相加。只要有用户访问这个网页
20、,它就会自动计数。程序运行结果如图6-13所示。学习指南学习指南-用户访问计数器用户访问计数器v 5.3.1 Cookie对象及用户访问计数器v 1 Cookie对象v 用户用浏览器访问一个网站,Web服务器并不知道是谁正在访问。但一般网站都希望能够知道访问者的一些信息,例如是不是第一次访问,访问者上次访问时是否有未做完的工作,这次是否为其继续工作提供方便等。Cookie为网站保存用户信息提供了一种有用的方法。支持Cookie的浏览器则允许网站将一小段文本信息存储到浏览器所在的计算机中,这样当用户下次访问该网站时,该网站就可以检索到以前保存的信息。v Cookie就是服务器暂存放在你的电脑里的
21、资料(.txt格式的文本文件),以便服务器用来辨认你的计算机。当你在浏览网站的时候,Web服务器会将一小段资料放在你的计算机上,Cookie 会帮你将在该网站上的某些操作记录下来。当你再次访问同一个网站时,Web服务器会事先查看有没有上次留下的Cookie资料,如果有,就会依据Cookie里的内容来判断使用者,随后给出特定的网页内容。学习指南学习指南-用户访问计数器用户访问计数器v 2Cookie对象的使用v Response对象和Request对象都有一个共同的属性Cookies,它是存放Cookies对象的集合,可以使用Response对象的Cookies属性设置Cookies信息,而使用
22、Request对象的Cookies属性读取Cookies信息。下面用一段代码演示Cookies的操作过程。v protected void Page_Load(object sender,EventArgs e)v /创建一个新Cookie,名称为userv HttpCookie myCookie=new HttpCookie(user);v myCookie.Value=It is your cookies;/为Cookie赋值v Response.Cookies.Add(myCookie);/用Response对象保存创建的新Cookiev Response.Write(Cookies的值
23、是:);Response.Write(Request.Cookiesuser.Value+);v /用Resquest.Cookie提取名称为user的Cookie值 v Cookie对象采用键/值对的方式来记录数据,如下语句:v myCookie.Expires=DateTime.Now.AddHours(1);v 指定Cookie中数据何时失效,这里是1小时后失效。如果不指定失效时间,则退出网页立即失效。学习指南学习指南-用户访问计数器用户访问计数器v【案例6-9】记录用户访问网站信息。v新建网站,进入设计视图,然后拖入一个标签,ID为默认的Label1。双击视图空白处,进入C#代码设计页
24、面,为页面的Page_Load事件添加代码,其内容及说明如下:vprotected void Page_Load(object sender,EventArgs e)v if(!Page.IsPostBack)v int Num=1;v HttpCookie myCookie=Request.CookiesVistNum;/取出Cookiesv DateTime now=DateTime.Now;/得到当前时间v if(myCookie!=null)/名称为VistNum的Cookies是否存在v Num=Convert.ToInt16(myCookie.Value);v Num+;v /如果
25、存在,取出Cookies存的值,加1v else/如果不存在,创建Cookiesv myCookie=new HttpCookie(VistNum);v myCookie.Value=Num.ToString();v myCookie.Expires=now.AddHours(48);/数据两天后无效v Response.Cookies.Add(myCookie);/Cookies中的值不能修改能覆盖v Label1.Text=您是第+Num.ToString()+次访问本站;v v运行结果如图6-14所示。学习指南学习指南-用户访问计数器用户访问计数器v6.3.2 Global.asax文件
26、及改进的用户访问记数器v1 Global.asax 文件vGlobal.asax文件也称ASP.NET 应用程序文件,它提供了一种在一个中心位置响应应用程序级或模块级事件的方法。你可以使用这个文件来实现应用程序的安全性以及其他一些任务。下面让我们详细看看如何在应用程序开发中使用这个文件。学习指南学习指南-用户访问计数器用户访问计数器v Global.asax文件中包含有多个事件,下面列出几个典型事件:v Application_Init:应用程序被案例化或第一次被调用时,该事件被触发。对于所有的HttpApplication对象案例,它都会被调用。v Application_Disposed:
27、应用程序被销毁之前触发,这是清除以前所用资源的理想时机。v Application_Error:当应用程序遇到一个未处理的异常时,该事件被触发。v Application_Start:当HttpApplication类的第一个案例被创建时,该事件被触发。v Application_End:当HttpApplication类的最后一个案例被销毁时,该事件被触发。在一个应用程序的生命周期内它只被触发一次。v Session_Start:当一个新用户访问应用程序Web站点时,该事件被触发。v Session_End:当一个用户会话超时、结束或离开应用程序Web站点时,该事件被触发。学习指南学习指南-
28、用户访问计数器用户访问计数器v 2改进的用户访问网站计数程序v【案例6-10】改进的用户访问网站计数程序。v 新建网站,添加Global.asax文件,并添加Session_Start事件代码。v Global.asax文件位于网站的根目录。每个网站都可以有一个唯一的Global.asax文件,该文件实际上是一个可选文件,使用VS2005创建网站并不包括该文件。v 选择“网站”“添加新项”菜单命令,出现“添加新项”对话框。从模板列表中选中“全局应用程序类”,然后单击“添加”按钮,将添加Global.asax文件,该文件中定义了一个运行在服务器端的代码块,其中已预定义了事件Session_Sta
29、rt、Session_End、Application_Start、Application_End、Application_BeginRequest和Application_EndRequest的处理函数。另外,还可以增加其他事件处理函数、变量和方法。v Global.asax文件的Session_Start代码如下:学习指南学习指南-用户访问计数器用户访问计数器v void Session_Start(object sender,EventArgs e)v /在新会话启动时运行的代码v int Num=1;v HttpCookie myCookie=Request.CookiesVistNum
30、;/取出Cookiesv DateTime now=DateTime.Now;/得到当前时间v if(myCookie!=null)/名称为VistNum的Cookies是否存在v Num=Convert.ToInt16(myCookie.Value);v Num+;v /如果存在,取出Cookies存的值,加1v else/如果不存在,创建Cookiesv myCookie=new HttpCookie(VistNum);v myCookie.Value=Num.ToString();v myCookie.Expires=now.AddHours(48);/数据两天后无效,否则退出网页失效
31、学习指南学习指南-用户访问计数器用户访问计数器v Response.Cookies.Add(myCookie);/Cookies中的值不能修改,只能覆盖 v 相应地对网页的Page_Load事件作修改,主要用于显示Cookies保存的计数值,内容如下:v protected void Page_Load(object sender,EventArgs e)v if(!Page.IsPostBack)v int Num=1;v HttpCookie myCookie=Request.CookiesVistNum;/取出Cookiesv if(myCookie!=null)/名称为VistNum的
32、Cookies是否存在v Num=Convert.ToInt16(myCookie.Value);v /如果存在,取出Cookies存的值v Label1.Text=您是第+Num.ToString()+次访问本站;学习指南学习指南-购物车购物车v 5.4.1 Session对象v 当浏览器从网站的一个网页链接到另一个网页,有时希望为这些被访问的网页中的数据建立某种联系。例如,一个网上商店的购物车,要记录用户在各个网页中所选的商品,此时用Session对象可以解决这类问题。当用户使用浏览器进入网站,访问网站中的第一个网页时,Web服务器将自动为该用户创建一个Session对象,在Session
33、对象中可以建立一些变量,这个Session对象以及Session对象中的变量只能被这个用户使用,其他用户不能使用。v 当用户浏览网站中的不同网页时,Session对象和存储在Session对象中的变量不会被清除,这些变量始终存在。当浏览器离开网站或超过一定时间与网站失去联系,Session对象被撤销,同时存储在Session中的变量也不存在了。使用在Session对象中建立的变量和方法,可以在网页之间传递数据。v 在ASP中,Session对象的功能本质上是用Cookie实现的,如果用户将浏览器上面的Cookies设置为禁用,那么Session就不能工作。但在ASP.NET中,只要在web.c
34、onfig文件中将设置为true,不使用Cookies,Session也会正常工作。学习指南学习指南-购物车购物车v 1Session对象的属性和方法v 属性TimeOut表示Session对象的超时时限(以分钟为单位)。如果用户在该超时时限之内不刷新或请求网页,则该用户的Session对象将终止。默认值是20分钟。v 方法Abandon()用以删除Session对象中所有的变量并释放Session对象的资源。如果未明确地调用Abandon()方法,一旦超过属性TimeOut指定时间,那么服务器将删除Session对象。v 创建一个Session变量string1并给它赋值:v Session
35、string1=test;v 方法RemoveAll()和Clear()用于清除Session中的所有变量。Session对象的属性和方法分别如表6-9和表6-10所示。学习指南学习指南-购物车购物车v 2使用Session对象v Session对象可以用来储存客户在浏览网页时的爱好,例如客户所喜欢的背景颜色,客户喜欢纯文本网页还是外观绚丽多彩的网页等都可以使用Session来跟踪。另外,还可以跟踪访问者从一个网页跳转到另一个网页。获取类似的信息有助于网站设计者对网站进行改进和完善。v(1)利用Session的自定义属性保存信息v 这是Session对象最基本的作用,其语法格式和使用方法与Ap
36、plication对象类似。与Application对象保存信息不同的是,Session对象只能针对一个用户,这些信息只有该用户能够访问、修改,而且有过期期限,过期后信息丢失。学习指南学习指南-购物车购物车v【案例6-11】利用Session的自定义属性保存信息。v新建网站,如图6-15所示。把首页Default.aspx设计成用户登录网页,然后拖入3个Web控件:两个TextBox控件(分别为输入用户名的TextBox1和输入密码的TextBox2)和一个Button控件(ID为Button1,提交按钮),TextBox2的TextMode属性选择Password,用于密码输入。Defaul
37、t.aspx文件的内容如下:vv 学习指南学习指南-购物车购物车v v v 用户登录 v 用户名:v 密 码:v v 学习指南学习指南-购物车购物车v 选择“网站”“添加新项”菜单命令,添加一个新的Web窗体,命名为Default1.aspx。这个文件用来接收从首页传来的数据,并验证用户名和密码,然后根据验证结果分别处理:验证正确就转向系统的主页;不正确则提示不合法,不允许进入系统。为了简便,这里的用户名和密码预设为“张三”和1234。Default1.aspx的内容如下:v v v 学习指南学习指南-购物车购物车v 6.4.2 利用Session对象实现电子商务的购物车v Session对象
38、的一个重要应用就是实现电子商务的购物车。v 早期在商务网站中的购物车实现,基本上是直接对数据库进行操作,这种实现方式很简单,但是在实际中应用则行不通,因为对数据库的频繁操作势必使数据库服务器的负担加重,当用户较多时还可能导致数据库服务器瘫痪,因此必须寻求一种新的解决方法,而使用Session对象实现购物车就是不错的选择。v 在ASP.NET中用Session实现购物车,其基本原理是:对用户的数据请求暂时存储在Session对象里面,并依据实际需求,对Session中的值进行修改。确认数据符合需求之后,再一次性向数据库提交数据,进行写入。它的实现大体包括以下步骤:v 向购物车中添加商品。v 从数
39、据库中查出对应的商品信息,修改购物车中的商品数量,且不允许大于数据库中商品数量。v 购物车中的商品信息显示,结账成功后清空购物车。学习指南学习指南-购物车购物车v【案例6-13】电子商务简易购物车的实现。v设计一个电子商务的简易购物车,可以选购彩电(海尔彩电、康佳彩电和长虹彩电,如图6-19所示)、鞋类(冰鞋、跑鞋和旅游鞋,如图6-20所示),要求每类物品都有专门网页,可以同时选购多类物品,选购后可以在购物车里查看所购物的状态,如图6-21所示 学习指南学习指南-购物车购物车v(1)界面设计v新建一个网站,然后在首页(即Default.aspx)设计视图中按图6-19进行布局。从工具箱中拖入3
40、个CheckBox控件、一个Button按钮和两个超链接,用于彩电销售。v 添加一个Web窗体,文件名为Default2.aspx,按图6-20所示设计界面。也拖入3个CheckBox控件、一个Button按钮和两个超链接,用于鞋类销售。其他物品的链接指向Default.aspx,图6-19中的其他物品链接指向Default2.aspx文件。v再添加一个Web窗体,文件名为Default3.aspx,用于购物车状态显示,其界面比较简单,如图6-21所示。输入两排用于提示信息的文字,即“购物车状态”和“购物情况显示”。前两个页面中的查看购物车链接都指向Default3.aspx。学习指南学习指南
41、-购物车购物车v(2)ASPX文件编写v 对于彩电销售页,打开Default.aspx文件,然后修改代码内容如下:v 彩电销售页:v v v v v 其他物品 查看购物车v v 对于鞋类销售页,打开Default2.aspx文件,然后修改代码内容如下:v 鞋类销售页v v v v v 其他物品 查看购物车v v对于购物状态显示页,打开Default3.aspx文件,再编写代码,内容如下:v 购物车状态v v 购物情况显示:v%int i;v string s=s1,s2,s3,s4,s5,s6;v
42、 for(i=0;i=5;i+)/去掉没有内容的Session显示,防止空行v if(Sessionsi!=null)v Response.Write(Sessionsi+);/显示选中的物品 v%学习指南学习指南-购物车购物车v(3)C#代码编写及调试v 本项目不需要单独编写C#代码,按钮的作用只起到刷新并发送页面。调试过程如下所示。v 单击“启动调试”按钮,然后在彩电销售页中选项彩电,再单击“提交”按钮。v 单击“其他物品”链接到鞋类销售页买鞋。在鞋类销售页的操作与彩电销售页一样,选好物品后单击“提交”按钮,确定选择。v 在两个物品销售页面中都可以单击“查看购物车”链接,查看购物状态,你选
43、择的所有物品都在该页显示出来,达到项目的要求。v 本项目并没有要求对购物数量计数,为了简化,都以购买一件计算。实际购物车需要统计购买数量并与数据库的存量作对比,而且购买后还有一个“付款”过程,这些内容希望大家思考如何实现。学习指南学习指南-聊天室聊天室v 5.5.1 项目实施背景v 该项目实现了一种简易的文本“聊天室”,具有“用户注册”、“用户登录”、“在线聊天”三大模块,实现了验证注册、验证登录、统计在线聊天人数、显示聊天内容等功能。后台使用SQL语言操控Access数据库,能进行数据的插入(insert)、查找(select)。本模块的叙述参照软件工程的规范,从简单文字聊天室的功能设计开始
44、,进行了数据库设计、详细设计,为学生提供了完整开发动态网站的基本流程。v 通过这个具有实用价值的综合性项目,激发了学生的学习兴趣,进一步熟悉了ASP.NET控件和对象的应用,掌握了数据库的建立、连接与数据的存取方法,煅炼了综合运用多种技能的能力,积累了初步经验,为以后的大、中型动态网站开发打下坚实基础。学习指南学习指南-聊天室聊天室v6.5.2 聊天室的功能设计和数据库设计v1.功能设计 学习指南学习指南-聊天室聊天室v2.数据库的设计v采用Access 2003创建数据库,数据库名为dl.mdb,库中含有名为use的数据表,数据表中一共有6个字段。分别为:ID(自动编号)、uname(文本类
45、型,用来存储用户名)、passwd(文本类型,用来存储用户密码)、age(文本类型,用来存储用户年龄)、email(文本类型,用来存储用户电子邮箱地址)。如图6-23所示。学习指南学习指南-聊天室聊天室v6.5.3系统的详细设计v1.用户注册页面(index.aspx)v此页面的主要功能是对于首次来聊天室的用户进行注册,注册成功后可以进行登录。v(1)界面设计 学习指南学习指南-聊天室聊天室v 如图6-24所示,这里主要用到了web控件中的文本框textbox和按钮(button)、Web服务器的验证控件。验证控件主要包括,对用户名文本框的验证:必填验证(RequiredFieldValida
46、tor,ErrorMessage属性值设为“必须输入用户名”)、正则验证(RegularExpressionValidator,ErrorMessage属性值为“必须是字母,且只能包含字母、数字和下划线”,正则表达式为“a-zA-Za-zA-Z0-9_0,”);对确认密码文本框的验证:必填验证(RequiredFieldValidator,ErrorMessage属性值设为“必须输入密码”),比较验证(CompareValidator,ErrorMessage属性值设为“密码和确认密码必须一致”);对用户年龄文本框的验证:必填验证(RequiredFieldValidator,ErrorMes
47、sage属性值设为“必须输入年龄”),范围验证(RangeValidator,ErrorMessage属性值设为“年龄应该在1-150之间”,设置整型数值范围最大值为150最小值为1);对电子邮箱文本框的验证:必填验证(RequiredFieldValidator,ErrorMessage属性值设为“必须输入E-mail地址”),正则验证(RegularExpressionValidator,ErrorMessage属性值为“输入正确的E-mail地址”,正则表达式为“.1,.1,.a-zA-Z2,3”。学习指南学习指南-聊天室聊天室v 本页面用到了web 服务器的四种验证控件:必填验证(Re
48、quiredFieldValidator)、比较验证(CompareValidator)、范围验证(RangeValidator)、正则验证(RegularExpressionValidator)。具体代码如下,要特别注意重要属性值的设置。v 用户名非空验证(其它的非空验证如此类同,略):v v 用户名合法验证:v 学习指南学习指南-聊天室聊天室v 核对两次输入密码是否一致的比较验证:v v 年龄的合法验证:v v 邮箱地址的合法性验证:v 学习指南学习指南-聊天室聊天室v(2)功能设计及数据库操作v按钮Button 的 OnClick事件中用Application对象实现了在线人数的统计(即
49、Application“num”属性),以及用Application获取用户登录时存储在Appication中的信息,然后用if 条件语句判断登录的用户是否注册过。v数据库的操作:数据库操作过程中,用到了SQL的Select语句,首先用Connection对象建立和数据库的连接,然后用Command对象的ExecuteReader()方法建立DataReader对象,从数据库获取数据。login.aspx.cs文件中的按钮单击事件C#代码如下所示。学习指南学习指南-聊天室聊天室v string myname=username.Text;v string mypass=password.Text
50、;v if(myname!=&mypass!=)v OleDbConnection conn=new OleDbConnection();v conn.ConnectionString=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=+Server.MapPath(App_Data/DL.mdb);v string strSql=select*from use where uname=+myname +and passwd=+mypass+;v conn.Open();v OleDbCommand cmd=new OleDbCommand(strSql