第10章 项目实践用户留言簿系统.docx
- 文档编号:7459873
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:78
- 大小:1.92MB
第10章 项目实践用户留言簿系统.docx
《第10章 项目实践用户留言簿系统.docx》由会员分享,可在线阅读,更多相关《第10章 项目实践用户留言簿系统.docx(78页珍藏版)》请在冰豆网上搜索。
第10章项目实践用户留言簿系统
第10章用户留言簿系统项目实践
本章要点
项目分析与设计
用户及角色管理
使用母版页
用户登录系列控件
安全管理
三层架构的建立
在本章中,将带领读者进入项目实战阶段,通过项目设计与实践来学习和巩固基础知识,并随着项目的不断展开,深入学习更多的ASP.NET建站技术。
表10-1、项目概述
项目简介
项目名称
用户留言簿系统
时间安排
共20课时,讲授8,上机12
代码量
2100行
项目难度
★★☆☆☆
项目特点
当前,许多企事业单位网站或门户网站都提供了留言、回复及浏览的基本功能;留言簿的业务逻辑虽然简单,但麻雀虽小,五脏俱全;通过实现留言簿的基本功能,学习和掌握建立一个三层技术的ASP.NET网站所需的基本技术。
项目目的
通过此项目,学习相关控件的使用,深入了解和掌握ASP.NET建设网站的基本技术,为下一步的学习打下基础。
涉及主要技术
HTML
ASP.NET服务器控件
母版页
网站安全配置
数据集、表适配器
三层结构
数据库
SqlServer2005Express
编程环境
MicrosoftVisualStudio2008或VisualWebDeveloper2008
项目特点
基于HTTP协议的B/S的Web应用程序
技术重点
母版页
ADO.NET
三层结构
技术难点
数据访问层的建立
业务逻辑层的建立
10.1需求分析
.1.1项目定义
当前,许多企事业单位或门户网站都提供了留言簿功能,用于信息交流和反馈。
由于留言簿业务逻辑简单,初学者在学习实践时可以将更多精力用于学习技术,而不是熟悉和了解业务。
因此,我们力求给出一个最简化的只具有基本功能的留言簿网站定义:
只有注册用户可以浏览、发表留言及对留言进行回复,也可以删除自己所发表的留言。
匿名用户只有在注册成为网站成员后,才能享有注册用户的权利。
注册用户分为普通用户和管理员两种类型,管理员除具有普通用户的权利外,还具有删除用户、任何用户留言或回复的权利。
为简化业务,用户修改自己发表信息等功能未包括在内,在项目完成后,读者可以根据已经学习和掌握的方法、技术对系统进行补充和完善。
.1.2需求描述
匿名用户只能访问网站主页,可以自由注册,但注册用户名称不能与现有用户名重复。
用户登录前,除进行用户注册外不能使用网站的任何功能。
注册用户在登录系统后,可以浏览全部留言主题,并可以选择浏览某一留言的详细信息及该留言的所有回复内容,可以删除自己所发表的留言,可以修改自己的基本信息(包括修改密码等)。
具有管理员身份的用户可以删除任何注册用户,任何用户的留言或回复。
注意,不论何种情况下,当删除一条留言后,该留言所对应的所有回复信息均被自动删除。
.1.3用户角色分析
1.需求中涉及到的用户类型
◆普通用户
◆管理员
◆前台浏览用户(匿名)
2.不同类型用户所进行的操作
◆普通用户:
浏览留言,可以根据标题选择浏览用户留言内容
发表留言,填写留言标题及内容
回复留言,针对当前留言发表回复内容
删除留言,浏览留言标题时,可以删除自己所发表的留言及该留言的所有回复记录
修改个人信息(包括密码)
◆管理员:
浏览留言,可以根据标题选择浏览用户留言内容
发表留言,填写留言标题及内容
回复留言,针对当前留言发表回复内容
删除留言及回复,可删除当前选择的留言及该留言的所有回复记录
删除系统注册用户
修改个人信息或密码
◆浏览用户(匿名)
浏览主页,选择注册成为网站成员
3.分析结果
通过分析上面的需求,可以得到相应角色的功能权限范围,使用系统的人可以分为两种,分别为:
系统管理员和普通注册用户,而匿名用户除使用系统的注册功能外不能使用网站提供的任何其他服务。
.1.4系统用例图
图10-1系统用例图
.1.5模块划分
整个留言簿系统分为六个模块,分别为:
“用户注册”,用于匿名用户注册到网站;“用户管理”,管理员对所有注册用户进行管理,可以删除用户账户;“用户留言”,注册用户发表留言信息;“查看留言”,注册用户浏览所有留言列表;“回复留言”,查看留言详细内容及回复内容时,可以为该条留言添加回复;“删除留言”,管理员可以删除任何用户留言及回复,普通用户可以删除自己所发表的留言。
如图10-2所示。
图10-2功能模块
10.2系统设计
10.2.1架构分析
系统采用分层实现的思想,整个网站的层次分为:
表现层、业务逻辑层、数据访问层。
以下分别是各层在系统架构中的作用:
●表现层(PresentationLayer,PL):
用于与用户的交互
●业务逻辑层(BusinessLogicLayer,BLL):
业务逻辑的实现方法
●数据访问层(DataAccessLayer,DAL):
数据库表的实体映射,使用表适配器生成读写数据的方法。
表现层使用业务逻辑层定义的对象或调用其方法,业务逻辑层调用数据访问层的方法,数据访问层直接与数据库联系存取数据。
各层间调用关系如下图所示(以用户留言模块为例):
图10-3、层之间的调用关系
10.2.2三层架构带来的变化和好处
在三层架构的应用程序中,表现层用来显示数据并与用户进行交互;业务逻辑层处理所有的业务逻辑;数据访问层用来访问数据库服务器进行数据存取的操作。
三层架构具有十分突出的优点:
1.独立性强:
每一层实现一种逻辑上独立的功能,在应用程序需要修改时,可以只修改其中的某一层,而其他层完全不受影响。
每一层通过特定的方式与其他层进行通信,并只对其他层提供的服务感兴趣,而不关心这种服务是如何实现的。
举例来说,如果系统数据库由SQLServer更换为Oracle,则修改数据存取层的部分内容就可以了,其他层并不关心底层使用得是那一种数据库。
2.维护简易性:
用户需求或业务逻辑发生变化时,只需要修改业务逻辑层中对应的类就可以了。
而不会发生“牵一发而动全身”的情况,去对整个系统进行修改。
3.扩展性
基于新一代的组件对象模型,对于组件性能的增强,功能的增加非常方便。
10.2.3系统架构设计
留言簿系统分为三层,表现层主要由aspx页面组成,业务逻辑层由类文件组成,数据访问层是一个XML文件“LWDataSet.xsd”,其中包含DataTable和TableAdapter对象类。
系统包含的主要文件分属于各层,如图10-4所示。
图10-4系统构架设计图
10.3数据库设计
保存用户资料和角色信息的数据库表共有4个,分别是:
aspnet_Users、aspnet_Membership、aspnet_Roles、aspnet_UsersInRoles;这4个表是系统自动生成的,其方法是使用MicrosoftVisualWebDeveloper2008(简称为VWD2008)开发工具的“ASP.NET配置”功能,在创建用户和角色时自动生成用户和角色信息表。
我们只使用了表中的部分字段,分别用粗体标示。
表10-1用户信息表1
表名
aspnet_Users(用户信息表1)
列名
类型
说明
ApplicationId
uniqueidentifier
应用程序ID,系统中不使用
UserId
uniqueidentifier
用户的标识,为一个16字节的2进制数,全局唯一
UserName
nvarchar(256)
用户名
LoweredUserName
nvarchar(256)
用户名小写
MobileAlias
nvarchar(16)
电话
IsAnonymous
bit
是否为匿名用户
LastActivityDate
datetime
上次活跃日期
表10-2用户信息表2
表名
aspnet_Membership(用户信息表2)
列名
类型
说明
ApplicationId
uniqueidentifier
应用程序ID,系统中不使用
UserId
uniqueidentifier
用户的标识,为一个16字节的2进制数,全局唯一
Password
nvarchar(128)
用户密码
PasswordFormat
int
PasswordSalt
nvarchar(128)
MobilePIN
nvarchar(16)
nvarchar(256)
邮件地址
CreateDate
datetime
创建时间
LastLoginDate
datetime
最后登录时间
LoweredEmail
nvarchar(256)
PasswordQuestion
nvarchar(256)
PasswordAnswer
nvarchar(128)
其它字段略……
略
表10-3角色表
表名
aspnet_Roles(角色表)
列名
类型
说明
ApplicationId
uniqueidentifier
应用程序ID,系统不使用
RoleId
uniqueidentifier
角色的标识,为一个16字节的2进制数,全局唯一
RoleName
nvarchar(256)
角色名称
LoweredRoleName
nvarchar(256)
角色名称小写
Description
nvarchar(256)
描述
在用户角色对照表(见表10-4)中,只有UserId和RoleId字段,如果一个用户拥有多个角色,则在表中存在多条UserId相同而RoleId不同的记录。
表10-4用户角色对照表
表名
aspnet_UsersInRoles(用户角色对照表)
列名
类型
说明
UserId
uniqueidentifier
用户的标识
RoleId
uniqueidentifier
角色的标识
用户的留言信息和回复信息分别保存在LeaveWord和ReplyWord两个表中,为了使用VisualWebDeveloper2008开发环境提供的自动生成SQL语句功能,需要以显式的方式为两个表设置主键(粗体表示)。
表的具体结构见表10-5及表10-6。
表10-5用户留言表
表名
LeaveWord(留言表)
列名
类型
长度
是否可空
说明
Id
Int
4
否
主键(自动编号)
UserId
uniqueidentifier
16
否
留言人UserId
Subject
nvarchar
50
否
留言主题
LWContent
nvarchar
500
是
留言内容(不能超过500字)
LWDateTime
datetime
8
否
留言时间
IP
nvarchar
20
是
IP地址
表10-6留言回复表
表名
ReplyWord(留言回复表)
列名
类型
长度
是否可空
说明
Id
Int
4
否
主键(自动编号)
UserId
uniqueidentifier
16
否
留言人UserId
ReplyID
int
4
否
回复留言主题的ID号
ReplyContent
nvarchar
500
是
回复内容(不能超过500字)
ReplyDateTime
datetime
8
否
回复时间
IP
nvarchar
20
是
IP地址
10.4系统开发与编码实现
首先新建一个ASP.NET网站,选择“文件”菜单的“新建网站”项,在“新建网站”对话框中,“模板”选择“ASP.NET网站”,“位置”选项选择“文件系统”,并设置保存网站的目录为:
“D:
\LeaveWord”,语言选择“VisualC#”,如图10-5所示。
图10-5新建ASP.NET网站
10.4.1使用网站管理工具建立用户及角色
单击“网站”菜单,在出现的下拉菜单中选择“ASP.NET配置(T)”菜单命令,如图10-6所示,单击后,在浏览器中打开“ASP.NET网站管理工具”网页,如图10-7所示。
图10-6、ASP.NET配置
图10-7、ASP.NET网站管理工具
在图10-7中单击“安全”选项,则进入“安全”设置画面,如图10-8所示。
图10-8、“安全”选项设置
在图10-8中,单击选择“使用安全设置向导按部就班地配置安全性”选项,进入到“安全设置向导”页面,页面左侧列出设置的七个步骤,右侧给出如何通过向导帮助设置网站安全性的概要说明。
单击【下一步】按钮,继续进行设置。
出现如图10-9页面。
图10-9、选择访问方法
在图10-9中所示页面中,选择“通过Internet”选项,然后单击【下一步】按钮,进入“数据存储区”设置页面,直接单击【下一步】按钮,进入“定义角色”页面,单击选择“为此网站启用角色”复选框后,单击【下一步】按钮,出现页面如图10-10所示。
图10-10、为网站添加角色
在图10-10所示页面中,为该网站添加“teacher”和“student”角色,其中“teacher”是管理员角色,“student”是普通用户角色;添加角色成功后,在“现有角色”栏目中列出新添加的全部角色选项。
此时,单击【下一步】按钮,进入“添加新用户”页面,出现页面如图10-11所示。
图10-11、创建新用户
如图10-11中,我们创建一个新的账户,用户名称为:
hdb,密码为:
123456*,在所有资料添加完毕后,单击【创建用户】按钮。
注意,密码必须大于7位,并且包含一位非字母和阿拉伯数字的字符;另外,还需选择“活动账户”复选框。
创建用户完毕后,单击【下一步】按钮,进入“添加新访问规则”画面,此时我们不添加规则,直接单击【下一步】按钮,进入到“完成安全设置向导”页面,单击【完成】按钮退出设置,返回到如图10-8所示“安全”管理页面。
此时,点击“管理用户”选项,进入用户管理界面,如图10-12所示。
图10-12、用户管理
在图10-12中,通过“用户名”搜索,查找到名为“hdb”的用户,点击“编辑角色”后对该用户赋予“teacher”角色;然后单击【创建新用户】链接按钮,创建一个学生(普通用户)账户,名称为“stu”,密码为:
123456*,如图10-13所示。
图10-13、创建新用户并选择角色
在图10-13所示页面中,创建学生账号的同时为其选择角色“student”。
注意左下角的复选框“活动用户”要进行选择;最后,在所有资料添加完毕后,单击【创建用户】按钮,完成该账户的创建。
此时,我们已经为当前网站创建了两个角色和两个账户,我们选择和输入的信息存入了相应的数据表中,这些表已经保存到默认的数据库中,数据库文件名为:
ASPNETDB.MDF。
下面我们来查看一下,在“解决方案资源管理器”中,刷新App_Data文件夹,我们会发现在该文件夹下出现一个新的数据文件:
ASPNETDB.MDF。
如图10-14所示。
图10-14、查看生成数据库文件
10.4.2尝试建立登录页面
在添加了用户和角色之后,特别是VWD2008为我们建立了数据库及数据表,并添加了记录,为什么不马上验证一下呢?
单击“网站”菜单,在弹出的下拉菜单中选择“添加新项”菜单命令,出现“添加新项”对话框,在该对话框中,模板选择“Web窗体”,文件名称为:
LoginSys.aspx,语言选择VisualC#,选择“将代码放在单独的文件中”复选框。
如图10-15所示。
图10-15、添加登录页面
建立页面后,在LoginSys窗体上添加“Login控件”,如图10-16所示:
图10-16、添加登录控件
在登录控件上单击右键,在弹出的快捷菜单中选择“属性”菜单命令,对该登录控件的属性进行设置,如图10-17所示,设置属性项DestinationPageUrl值为:
“~/Default.aspx”,意为:
当登录成功后,转向网站根目录下的Default.aspx页面。
设置完成后,点击“全部保存”按钮,然后运行,登录系统。
输入用户名和密码后,如果顺利登录,则转向该空白网页Default.aspx。
测试成功后,从网站中删除这个LoginSys网页文件。
10.4.3母版页的建立
为了给网站的访问者一致的感受,需要为网站设置统一的风格,例如整个网站具有类似的布局和色彩主题,相同的网页头尾部分、导航栏、功能条等。
使用ASP.NET母版页可以为应用程序中的页创建一致的布局,单个母版页可以为应用程序中的所有页(或一组页)定义所需的外观和标准行为。
然后可以创建包含要显示的内容的各个内容页。
当用户请求内容页时,这些内容页与母版页合并以将母版页的布局与内容页的内容组合在一起输出。
开发人员可以利用母版页功能创建一个布局网页,然后将其应用到其他内容页中。
这样做带来了许多好处,例如:
1.有利于站点修改和维护,降低开发人员的工作强度。
因为公共部分内容集中在母版页中,因此,只要修改母版页,就同时修改了所有利用该母版页的内容网页,这在很大程度上提高了工作效率。
2.有利于实现页面布局。
母版页中的设置的ContentPlaceHolder控件起到了占位的作用,这在很大程度上,有利于进行页面布局等工作。
3.提供高效的内容整合能力。
在母版页中,允许添加文字、图片、控件等Web标签,于此同时,还可以为母版页中的Web标签添加相应事件处理程序。
例如,只需要在母版页中添加一个服务器控件的事件处理程序,那么站点内所有引用该母版页的内容网页,都可以访问事件处理程序,从而获得同样的应用效果。
下面我们将为网站创建一个母版页,单击“网站”菜单,在弹出的下拉菜单中选择“添加新项”菜单命令,出现“添加新项”对话框,如图10-18所示。
图10-18添加母版页
在图10-18所示“添加新项”对话框中,模板选择“母版页”,文件名为:
MasterPage.master,语言选择VisualC#。
复选框“将代码放在单独的文件中”在默认情况下处于选中状态,在这里保持其默认选中状态。
单击【添加】按钮,在创建MasterPage.master文件之后,就可以开始编辑该文件了。
具体源代码如下所示:
<%@MasterLanguage="C#"AutoEventWireup="true"CodeFile="MasterPage.master.cs"Inherits="MasterPage"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http:
//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
//www.w3.org/1999/xhtml">
ContentPlaceHolderid="head"runat="server">
ContentPlaceHolder>
ContentPlaceHolderid="ContentPlaceHolder1"runat="server">
ContentPlaceHolder>