收稿日期:2006—01—10
作者简介:王丽芝(1959-),女(满族),辽宁开原市人,讲师,主要从事计算机应用技术研究.
【学术研究】
基于ASP 的网站设计与实现
王丽芝
(铁岭师专,辽宁铁岭112000)
摘 要:介绍一个用Active Server Pages 制作网站的实例,并给出了具体实现中的一些关键技术.
关键词:ASP ;数据库;网上图书管理
中图分类号:TP311152 文献标识码:A 文章编号:1008-5688(2006)02-0020-03
建设有自己特色、多功能的网站不仅需要功能强大的网站开发软件,还需要开发人员具有新颖的构思、独特的设计和应用软件的相关技术.本文以铁岭北方旅游管理学校网站的设计与实现为例介绍运用ASP 软件制作有自己特色、多功能的网站.
1 开发工具的选用及介绍
目前,开发网站的软件很多,并且都各有所长,之所以选择ASP 是因为它独有的特点.“ASP ”是Active Server Pages :“动态服务器网页”的简称,其主要特点在于所产生的执行结果都是标准的HTML 格式,而且这些程序是在网络服务端执行,使用一般的浏览器(如IE 或Netscape )都可以正确地获得ASP 的“执行”结果,并且ASP 执行的结果可以直接在浏览器中“浏览”.不仅如此,ASP 还具有如下特点:(1)ASP 程序是在网络服务器端执行,执行结果所产生的HTML 文件适用于不同的浏览器.(2)语言相容性高,ASP 与所有的ActiveX Script 语言都相容,除了可结合HTML 、VBScript 、Java Script 、Active X 服务器组件来设计外,并可经由plug -In (外挂组件模组)的方式,使用其他厂商(Third Party )所提供的语言.(3)隐密安全性高,在浏览器中查看网页的原始代码时只能看到HTML 文件,原始的ASP 程序代码是看不到的.
(4)易于操控数据库,ASP 可以轻易地通过ODBC (Open Database Conne ctivity )驱动程序连接各种不同的数据库,例如:Access 、Foxpro 、dBase 、Oracle 等等,另外,ASP 亦可将“文本文件”或是“Excel ”文件当成数据运用.(5)面向对象学习容易,ASP 具备有面向对象(Object -Oriented )功能,学习容易,ASP 提供了五种既方便且功能强大的内建对象:Request 、Response 、Sever 、Application 以及Session ,同时,若使用ASP 内
建的“Application ”对象或“Session ”对象所撰写出
来的ASP 程序可以在多个网页之间暂时保存必要的信
息.
基于ASP 的上述特点,所以选择了ASP 结合
Frontpage 组建铁岭北方旅游管理学校网站.
2 网站总体结构的设计
以铁岭北方旅游管理学校网站的设计为例.网站主页设置为学校概况、专业介绍、校园风貌、课外生
活、实习基地、招生就业、对外交流、升入高校、学
校公告、信息服务10个栏目,全方位展示学校情况.
此外还设有“网上图书馆”、“留言板”和“在线查
询”三个服务性栏目,通过这些栏目可将信息查询、
考试查分、家校联系、图书借阅等在网上实现.
主页以静、动相结合的方式,即静态的主画面和
动态的图片相结合,体现学校的特色与风貌,在信息
发布与查询等方面,采用ASP 与数据库结合的技术建
立数据库查询管理系统,以交互式的动态的web 画面
来实现.主页结构图如图1所示.
3 网站的数据库设计与程序代码
网站中所使用的数据库均采用Microsoft Access 数据
库,拟建立teach 1mdb 库文件,包含如下几个表文件:
allmessage 留言信息表;Libbooks 图书信息表;
Libcategories 图书类别信息表;Libemps 图书馆用户信息
表;stud 学生信息表.
下面主要介绍“网上图书馆管理系统”和“在线查
询系统”的数据库设计与程序代码.
311 网上图书馆管理系统制作
31111 网上图书馆功能
网上图书馆的功能主要有:图书的出借和归还;按
照多种字段对图书进行查找;浏览某个种类的所有图
书.网上图书馆不仅方便了学生与教职员工使用图书馆
的资源,还为图书馆管理员提供了一种简便地管理图书
馆的方法.
31112 图书馆系统的层次结构图书馆系统的层次结构图如图2所示.
图2中的每个方框代表校园图书馆网站中的一个页面.除了只包含HTML 的Search 页面外,其他的均为ASP 页面.因为每个图书的页面都不同,所以大多数的页面实际上都是多页面.
31113 图书馆数据库设计
第8卷第2期2006年6月 辽宁师专学报Journal of Liaoning T eachers College V ol 18N o 12Jun 12006
本系统共使用3个数据表:LibBooks 表、LibCategories 表、LibEmps 表.LibBooks 表包含与图书有关的所有数据.该表中的字段内容为图书的通用信息.另外,对于已经出借
的图书,该表中还包含借阅该图书的用户的ID 号,以及图书的状态.表视图如表1所示.LibCategories 表包含Library 中的所有类别,在
访问者浏览图书列表时将会用到这些类别.每个类别都可以作为另外类别的父类别.有一个特殊的类别Top -Level ,没有出现在类别列表中,但是可以作为
其他任何类别的父类别.表视图如表2所示.
表1
字段名意义字段类型字段名意义字段类型bookid 书号(主键)数字(no null )status 状态文本title 书名文本checkedoutto 用户id 数字author 著者文本reservedby 用户学号数字Subject 主题文本description 描述文本Isbn Isbn 号文本keywords 关键字文本LibEmps 表包含可以访问图书馆网站的用户信息.该表包含一些通用的信息字段,比如用于进入图书馆的用户密码等.表视图如表3所示.
表2字段名意义字段类型
Categoryname 类别文本(noll )parentcategory 父类别文本(noll ) 表3
字段名意义字段类型字段名意义字段类型empid 用户id 数字password 用户密码文本Empname 用户姓名文本manager 管理员代号数字
emailaddress 用户邮箱文本
在图书馆数据库的数据关系中,LibEmps 表和LibCategories 表与LibBooks 表之间都是一对多的关系.每个雇员都可以借阅多本图书,每个类别都可以包含多本图书.
31114 页面设计与重点代码的设计
网上图书馆系统有两种用户,一是管理员,另一种是只允许使用图书馆系统,而没有管理功能的一般用户.访问者进入网站,首先要进行登录.在登录页面(index 1asp )访问者输入E -mail 地址和密码来登录,然后单击“登录”按钮.输入的数据提交后与数据库中的用户表进行匹配.因此需要创建一个记录来保存基于访问者登录的用户信息.
set RSFindEmp =conn 1Execute (″select Emp ID ,Manager from LibEmps where ″—
&″EmailAddress = &Request 1Form (″EmailAddress ″)& and ″—
&″Password = &Request 1Form (″Password ″)& ″
)if RSFindEmp 1EOF then
TheMessage =″密码或email 地址不对.″
else Session (″Emp ID ″)=RSFindEmp (″Emp ID ″
)Session (″Manager ″)=RSFindEmp (″Manager ″)Response 1Redirect ″11/yk 1htm ″endif 表单域EmailAddress 和Password 用于Where 语句中来获取一个记录.如果访问者输入了一个无效的用户名,则记录集中将不会返回匹配的记录.可以通过查看EOF 标记来判断一个记录集是否为空.为空,则访问者将被拒绝进入该系统.不为空,则访问者的EmpID 值和Manager 值将从记录集中返回,写入Session 变量,变量将在整个网站的所有网页中都是有效的.这些变量的存在与否及其取值将用于确定是否允许进入一个特定的网页,同时也用于访问者进行书目的归还和借阅操作.
(1)图书馆菜单页面的设计.图书馆菜单页面包含指向其他4个页面的链接:管理页面、搜索页面、图书列表页面和主页面.还有一个可显示用户所借书籍的按钮.如果访问者是图书馆管理员,则访问者的界面上有指向管理员菜单页面的链接.如果访问者不是图书馆管理员,访问者的界面上没有指向管理员菜单页面的链接.
实现办法:访问者登录时在登录页面上的创建的会话变量Session 用于从数据库中获取访问者的有关信息,表示他是否是管理员.如果值为1,就表明访问者是一个管理员,则用如下代码写入一个指向管理员页面的链接:
<%If Session (″Manager ″)=1then %>管理员菜单
<%end if %>
通过按纽B1是否为空来判断要不要显示用户所借图书,利用一个记录集来获取访问者已经借出了的所有图书的列表.
if NO T isempty (Request 1Form (″B1″))then set RSBooks =conn 1Exzecute (″select BookID ,Title from LibBooks where ″—
&″CheckedOut To =″&Session (″Emp ID ″
))end if
再用循环语句将所借书以表格形式显示出来.
<%Response 1Write RSBooks (″Title ″ )%> |
循环将遍历Rsbooks 记录集中的每个记录,直到该记录集结束.
该网站中的所有ASP 页面都会在访问者访问之前对其进行登录检查.这样就可以避免访问者通过输入某个页面地址然后在没有登录的情况下就直接进入该页面的情况发生.此外,每个管理页面都要确认访问者是管理员.
(2)管理菜单页面的设计.管理菜单页面有一个HTML 表单,根据选择的按钮的不同,可以进行5种不同的操作:图书的归还、图书的编辑、图书的删除、图书的添加和类别的添加.不管选择了哪一个按钮,该表单都提交管理人员进行处理.
要进行图书的归还、图书的编辑、图书的删除三种操作,须先进行搜索,找到该书后,由图书Book 1asp 返回一个链接:
<%If Session (″Manager ″)=1then %>&BOO KID =<%response 1write RSBooks (″BOO KID ″)%″>管
理员菜单
<%endif %>
而管理者页面通过下列语句:
<%=request 1querystring (″title ″)%> request 1querystring (″BOO KID ″ )%>> 这样就将所找到的书的书号BookID 、书名Title 传递到管理者页面,再进行所需操作.共有3个不同的按纽,可以进行3种操作.若单击“修改”按钮则重定向到编辑图书页面,同时把Bookid 传递给该页面. Response 1Redirect ″1/edit —book 1asp ?BOO KID =″&request (″BOO KID1″ )将其他的情况建立到数据库的连接代码为: set conn =server 1createobject (″adodb 1connection ″)Conn 1Open (″FIL EDSN =c :\Program Files \Common Files \ODBC 王丽芝基于ASP 的网站设计与实现21 \Data Sources \ms access database 1dsn ″)if NO T isempty (Request 1Form (″Delete ″))and request (″BOO KID1″)<>″″then conn 1Execute ″delete from LibBooks where BOO KID =″&request (″BOO KID1″)end if if (NO T isempty (Request 1Form (″checkin ″)))and request (″BOO KID1″ )<>″″then conn 1Execute ″update LibBooks set checkedoutto =0,status =′Available ′where BookID =″&Request (″BOO KID1″ )end if 页面中的添加新的种类部分包含一个文本控件和一个选择控件.其中选择控件是用所有已经存在的类别列表进行填充的,包括特殊类别Top level ,该类别表明当前类别是处于类别层次结构中的最顶层.代码如下: set RSCategories =conn 1Execute (″select CategoryName from LibCategories order by CategoryName ″)再用下列循环语句: <%Do Until RSCategories 1EOF %> )%><% RSCategories 1MoveNext Loop %> 遍历RSCategories 记录集中的每个记录,并作为一个选项添加到列表中,而记录集中CategoryName 同时作为显示值和传递值. 本页面还包含一个指向添加图书页面的链接. (3)搜索结果页面的设计.搜索页面的代码获取与访问者查找规则相匹配的图书,然后将这些图书显示给访问者.搜索页面上的表单包含一个选择控件和一个文本控件.选择控件中的选项是用可搜索的字段填充的,需要用一个记录集来保存与访问者的查找规则相匹配的记录: set RSBooks =conn 1Execute (″select BookID ,Author ,Title ,Subject from LibBooks where ″—&Request 1Form (″ SearchField ″)&″Like ′%″&Request 1From (″SearchCriteria ″)&″% ) 符号%表示的是一个广义搜索,这一点类似于ACCESS 中的符号3. 然后将所找到的书以表格形式显示出来.代码如下: <%Do Until RSBooks 1EOF %> Response 1Write RSBooks (″Author ″ )%> Response 1Write RSBooks (″Subject ″ )%> Loop %> (4)图书页面的设计.图书页面的代码显示图书的有关信息,以及管理图书的出借操作.该页面通过Querystring 传递BookID. if isempty (Request 1QueryString (″BookID ″))then Response 1Redirect ″1/search 1html ″ end if 如果其中不存在,则访问者将被重新定向到搜索页面,如果同时传递表单中包含的变量Action 不为空,则表明访问者正借阅该图书: if Not isempty (Request 1QueryString (″Action ″ ))then 在这种情况下,需要将图书状态改为Checkout ,同时需要将Checkedoutto 字段修改为该访问者: conn 1Execute ″update LibBooks set Status =′Checked Out ′,″— &″CheckedOut To =″&Session (″Emp ID ″)&″where BookID =″— &Request 1QueryString (″BookID ″ )Response 1Redirect ″1/library —menu 1asp ″end if 然后将该访问者重新定向到图书馆菜单页面,利用图书的状态来确定不同的链接,图书未借出时链接如下: if RSBooks (″status ″)=″Available ″then LinkText =″ &Request 1QueryString (″BookID ″)& >借这本书 如果图书已经借出,就创建一个不同的消息,并将链接设置为指向Library menu 页面: LinkText =″图书已出借,返回主菜单.″ 最后根据是否是管理员,显示管理员菜单链接. <%if Session (″Manager ″)=1then %> )%>&BOO KID =<%response 1write RSBooks (″BOO KID ″)%>″>管理员菜单 312 在线查询系统制作 在线查询系统可以使考生在网上通过输入准考证编号来查询考试的结果. 该模块需要查询者输入准考证号后查看结果.若ID1不为空时,表示有表单输入,开始查询数据库.使用SEL ECT 的SQL 指令查询数 据库的数据.先设定SQL 指令,查询ID 符合准考证编号Request 1Form (″ID1″ )的数据,下个“Execute ”指令,即可开始执行存取、查询数据的动作了.并将查询结果储存到Recordsets 组件RS 中. IF RF ″ID1″)<>″″THEN Set Conn =Server 1CreateObject (″ADODB 1Connection ″)Conn 1Open (″FIL EDSN =c :\Program Files \Common Files \Data Sources \ms access database 1dsn ″ )SQL =″SEL ECT name ,id ,score FROM stud WHERE id = & Request 1Form (″ID1″)& Set RS =Conn 1Execute (SQL ) 若考试通过,则显示考试的结果,包括姓名、准考证编号、总分和考试结果,分别由RecordSets 组件的RS (0)、RS (1)、RS (2)、RS (3)得到. FS 1Field 1Count 表示RecordSets 组件的域的总数,由“for I =0to RS 1Fields 1count -1”取得RS (Ⅰ )各域的数据.配合 4 结束语 通过对校园网站的设计与制作,从ASP 软件实际应用中体会到该软件具有简单、易学、多功能和可扩充性等良好的功能并具有很强的实 用性,但在数据库的安全性能和防病毒入侵、抗击黑客袭击等功能上还有待进一步完善.(责任编辑 李树东,王 巍) (上接12页)设物理情景,事先提出难度适当的问题,引导学生根据已学过的知识和生活经验进行猜想,再让学生通过各种途径,阅读教材及其教材以外的其它资料,进行必要的观察实验等,然后通过讨论,互相交流、互相启发,集思广益,取长补短,从不同的角度来认识事物、现象,达到深入、全面地理解所学知识的目的.还要结合中小学教学实际,重视物理知识在生产生活中的应用.用简捷、精炼的语言,解释大自然中的物理现象,凡中小学教材中涉及到的物理知识,都应作出准确的答案,并讲清内涵和外延,让学生积累将来从教的知识资本. 总之,在物理教学过程中,应使学生在愉快的气氛中,把物理智力活动由最初发生兴趣,引向热情而紧张的思考,由饱满的学习情绪引向自觉学习的意志,让内驱力充分发挥出推动学习、提高学习效率的巨大作用. (责任编辑 王立俊,王 巍)22 辽宁师专学报2006年第2期书名:″><%Response 1Write RSBooks (″Title ″)%> 著者:<% 主题:<% <%RSBooks 1Movenext表格的HTML 语法,将结果填入表格的各单元格中.若还有下一个数据,就使用RS 1Movenext 移到下一个位置.