aspnet基于用户兴趣的个性化网页动态实—计算机毕业设计(论文)内容摘要:

= select count(*) from users where。 sql+= userName=39。 + + 39。 sql+= and pwd=39。 + + 39。 OleDbCommand myCmd = new OleDbCommand(sql, oleConnection)。 OleDbCommand 对象 的特点在于对数据源执行命令的方法 有多种,使用时可以根据执行的 SQL 语句和查询结果的特殊要求而灵活选择 :  ExecuteReader() 执行返回行的命令。 如果用 ExecuteReader 来执行 SQL SET 语句等命令,则可能达不到 预期的效果。  ExecuteNonQuery() 执行 SQL INSERT、 DELETE、 UPDATE 和 SET 语句等命令。  ExecuteScalar() 从数据库中检索单个值 通常是查询结果的第一列处的第一个值。 三、创建数据对象 中的数据对象通常保存的是查询结果,常用的是 DataSet、DataTable 和 DataReader。 对于 OledbCommand 调用 ExecuteReader()方法时, 返回一个 数据源读取数据行的只进流 ,要进一步获取数据中的行 或列,就需要用到 OleDbDataReader 对象。 创建 OleDbDataReader,必须调用 OleDbCommand 对象的 ExecuteReader 方法: OleDbDataReader reader = ()。 这条语句创建并打开了一个 OleDbDataReader 对象 ,其中 myCmd 为上面创建 数据访问对象, sql是一个字串,代表一条标准的 SQL 语句。 四、操作数据库 链接到数据库以后 ,进行的操作有查询、插入、删除等操作。 在上一步中 构造了 OleDbDataReader 对象 reader 后,就能逐行遍历数据表 ,进行数据处理 了 ,例如输出查询结果第一个字段中的所有值: while (()) { (reader[0].ToString())。 } 此外,我们通过调用 数据访问对象 的 ExecuteNonQuery() 方法来进行插入、删除、建表等操作。 例如: //执行插入操作 sql=“INSERT INTO users( ID, username , pwd ) VALUES(1,’test’,’test’)” ( )。 //创建一个 Table sql = create table + TableName。 sql += (BehaviorID int not null,。 sql += ClickID smallint not null,。 sql += Topic varchar(250) ,。 sql += Title varchar(250) )。 ( )。 五、关闭 数据对象和链接对象 在使用了 对象之后要关闭它,因为它使用了一定的服务器资源。 通过调用方法 Close 实现关闭,然后再释放它。 //关闭创建的链接对象 ()。 oleConn = null。 与 CGI 的比较 CGI(Common Gateway Interface,通用网关接口 )也是 Inter 上一种功能强大的 Web 页面技术,其工作方式有别于 ASP。 我们现对二者进行比较。 Active Server Pages 开发 Web 应用程序的特点: 1. 完全嵌入 HTML,与 HTML、 Script 语言完美结合。 2. 无须手动编译和链接程序。 3. 面向对象,并可扩展 ActiveX Server 组件功能。 4. 使用脚本语言( JavaScript、 VBScript 或 PERL)编写。 5. 存取数据库轻松容易(使用 ADO 组件)。 6. 可使用任何语言编写自己的 ActiveX Server 组件。 7. 无浏览器兼容问题。 8. 程序代码隐藏,客户端仅能看到 ASP 输出的 HTML 文件。 9. 缩短 Web 开发时间。 相比之下,使用 CGI 开发 Web 应用程序具有以下缺点: 1. 不易与 HTML 文件集成。 2. 须使用其他较复杂 的语言来开发 CGI 程序。 3. 程序开发时间较长。 4. 存取数据库不容易。 5. 每个 CGI 程序被不同用户执行时都得重新执行一次,并占去 Server 的一个端口( Port),降低 Server 效率。 可见, ASP 在数据库访问、与 HTML 的集成、提高服务器的效率等诸多方面都优于 CGI,更适应 Web 应用程序开发的需要,因此本文选择了 ASP 作为个性化页面生成器的开发工具。 第四章 个性化页面生成器系统的实现 本次毕业设计中 ,在 WindowsXP 环境下,利用 IIS+ 技术实现了个性化页面系统的 Web 服务器端各功能模块。 具体 开发工具为 Microsoft Visual Studio 2020,数据库采用 Microsoft Access 数据库。 该服务器端生成器系统主要包括: 1. 用户注册 /登陆 2. 用户点击序列记录 3. 根据用户规则表动态生成个性化页面 以下介绍了各功能模块的实现方法及一些特殊技术问题的解决。 与数据库的链接 由于各模块频繁地与数据库打交道,如何与数据库链接就显得十分重要。 前面我们已经提到采用 技术访问数据库, 允许多个访问共享一个链接,即仅需要一个 Connection 对象与数据 库链接,就可重复不断地利用它访问一个数据库。 本文仅用到一个数据库,名为 ,而且在第一个用户登陆时就要进行数据库操作,因此我们希望服务器开始便和数据库链接,所有对数据库的访问都使用这一链接,这样有利于提高服务器的效率。 我们采用如下方法,首先在 WinNT 的控制面板的 ODBC 数据源选项中将 WebsiteDB 库设置为系统 ODBC 数据源,再在本应用程序的 文件中建立与 WebsiteDB 库的链接,即加入以下语句: void Application_Start(object sender, EventArgs e) { Application[g_strConn] = Provider=。 + Data source=+(./App_Data/)。 Application[g_dbConnection] = new OleDbConnection(Application[g_strConn])。 Application[g_dbConnection].Open()。 } void Application_End(object sender, EventArgs e) { Application[g_dbConnection].Close()。 } 其中, Application_Start 表示 Application 的开始事件, Application_End(表示Application 的结束事件。 这样,在服务器被提出第一个 ASP 请求而建立Application 对 象 时 , 就 会 去 执 行 , 从 而 建 立 链 接 对 象Application(g_dbConnection),并打开与 数据库的链接。 以后对数据库的所有操作都是基于此链接。 该链接关闭于服务器停止运行(由 Application_ End 程序段决定)。 用户注册 /登陆系统 要实现用户页面的个性化,首先要做的显然是弄清登陆的用户是谁。 作者原先的构想是根据用户计算机的 Cookie 信息判断用户身份,这样,只要用户打开该站点首页,无须填入身份验证信息,服务器便能得知其身份。 但是,现在有的用户并不是在固定的计算机上上网,而且有的用户经常删除 Cookie 信息,这样,利用 Cookie 信息来识别用户的可靠性并不高。 所以我们还是采用注册 /登陆的方式来识别用户。 新用户注册时需要填入的是 UserName( 用户名 ),Password( 密码 ),ConfirmPassword(效验密码 )三个信息。 当用 户点击“ OK”按钮或按回车后,服务器将判断用户填入信息是否完整、该 UserName 是否有人使用以及 Password与 ConfirmPassword 是否相同,若输入无误则将新用户资料加入 UserInfo 表,生成该用户的 Behavior 表。 整个处理注册的过程由名为 的 程序实现。 UserInfo 表是系统事先生成的用于保存各用户资料的表。 它的格 如下所示: 表 UserInfo 表 UserName UserID Password test 1 test lile i 2 abcd „„ „„ „„ 其中, UserName 字段设置为系统自动生成的递增的整数,用于标识一个用户。 因为以后将频繁地用到它,所以将 UserName 保存在用户的 Session 中,命名为 Session(UserName)。 用户的 Behavior 表 用于记录一个用户的点击序列,其名称形式为UserName+“ _Behavior” ,例如: Test__Behavior。 表格式如下所示: 表 Test_Behavior 表 BehaviorID ClickID TopicName 1 1 News 1 2 Papers 1 3 Publications 2 1 Papers 2 2 Papers of 1999 „„ „„ „„ 其中, BehaviorID 表示用户第几次上站, ClickID 表示用户一次上站过程中第几次点击, TopicName 为点击的主题。 当然,用户注册时生成的是空表。 生成用户 Behavior 表的语句为: string sql = create table + TableName。 sql += (BehaviorID int not null,。 sql += ClickID smallint not null,。 sql += Topic varchar(250) ,。 sql += Title varchar(250) )。 oleDbCommand mcmd = new oleDbCommand( )。 = Application[g_dbConnection]。 = sql。 ()。 其中,先定义 SQL 语句字符串 sql,再通过数据库链接对象application(g_dbConnection)的 ExecuteNonQuery 方法执行该 SQL 语句。 本文中均采用此方法进行数据库操作。 已经注册的用户登陆时只须输入 UserName 和 Password,系统根据UserName 查找 UserInfo 数据表,将查找到的 Password 与用户输入 Password 比较,若相同则做相关初始化操作,允许用户进入网站,否则给出提示信息。 这些过程由 程序 实现。 初始化操作包括 查找用户的 UserName 和设置此次行为的 BehaviorID 值。 其中,设置 BehaviorID 的过程如下: string sql = select BehaviorID from + UserName + _Behavior + order by BehaviorID DESC。 oleDbCommand mcmd = new oleDbCommand( )。 = Application[g_dbConnection]。 = sql。 ()。 object objResult = ()。 if (objResult == null) { Session[BehaviorID] = 1。 } else { Session[BehaviorID] = (objResult) + 1。 } 其含义为:在用户的 Behavior 表中查找所有 BehaviorID,并以降序排列,这样 , ExecuteScalar()返回的第一行第一列 objResult 就是 用户该用户以前最后一次访问系统的 BehaviorID;如果 objResult=null 则表示用户第一次上站,设 BehaviorID 为 1,否则将( objResult+1)作为本次登陆的 BehaviorID,并保存到用户 Session 中。 这样便能保证 BehaviorID 随着用户上站次数而递增。 注 册 和 登 陆 过 程 中 所 进 行 的 数 据 库 操 作 都 利 用 了 Application(g_dbConnection)链接对象,通过型如 () 和 () 的语句查询数据或插入数据。 记录用户点击序列 我们采用记录用户上站后的点击序列来跟踪用户的访问情况。 怎样才能让服务器得知用户点击了哪一个链接呢,普通的链接只能直接引导用户浏览器至另一。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。