ASP 学生信息管理系统
通过前面的学习,对发送HTTP请求及处理服务器响应已有了初步认识。本练习将通过制作一个简单的学生信息管理系统,演示如何综合运用学到的这些东西。该系统包括添加和显示学生信息两大功能,这两个功能的实现,都通过XMLHttpRequest对象发送异步请求实现。具体步骤如下所示:
(1)首先为本练习设计数据库,保存为Student.mdb,该数据库只有一个学生信息表,表设计视图如表6-26所示,设计完成后把表名设置为Student保存。
表6-26 设计Student表的字段 字段名 id StudentNo GradeName ClassName StudentName sex age address 字段类型 自动编号 文本(50) 文本(50) 文本(50) 文本(50) 文本(50) 文本(50) 文本(50) 字段说明 主键,自增列 学号 年级 班级 姓名 性别 年龄 籍贯 (2)首先制作添加学生信息页面。新建一个名为add.htm的HTML文档,并添加文本框、按钮、超链接和
(4)单击“添加到数据库”按钮会触发addnew()函数,该函数向服务器端发送请求,通过参数addtodatabase表明将信息储存到数据库中。单击“添加到XML文档”按钮,同样会触发addnew()函数,通过参数addtoxml表明将信息储存到XML文档中。该JavaScript函数代码如下所示: function addnew(str) { var url = 'Server.asp?action='+str; url+=\ url+=\ url+=\ url+=\ url+=\ url+=\ url+=\ createXMLHttpRequest(); XmlHttp.onreadystatechange = handleStateChange; XmlHttp.open( %url, true ); XmlHttp.send( null ); } (5)上述函数将请求发送到服务器端,服务器端根据传递的参数,做出响应,并返回数据。首先创建名为“Server”的asp文件,并在其中添加如下代码,获得客户端通过form提交的数据。
<% response.Charset=\action = Request.QueryString(\studentno = Request.QueryString(\gradename = Request.QueryString(\classname = Request.QueryString(\studentname = Request.QueryString(\sex = Request.QueryString(\age = Request.QueryString(\address = Request.QueryString(\xmlpath=server.MapPath(\%>
上述代码中指定了输出的数据编码为“gb2312”。使用Ajax进行交互的过程中,汉字的传递,如果编码不正确,经常会出现乱码的现象。本 练习中add.htm文件的编码为“gb2312”,只有这样才能保证显示正常。有关编码的知识,可以参考编码相关书籍。
(6)然后判断客户端传递的参数action的值,根据这个值的不同,做出不同的响应,并返回一定的数据。先来看添加到数据库的操作,代码如下所示:
select case action t.mdb\ conn.ConnectionString=str conn.Open sql = \into Student (StudentNo,GradeName,ClassName,StudentName,sex,agcase \ Set conn=Server.CreateObject(\str=\Source=\& Server.MapPath(\e,address) values('\+ studentno + \+ gradename + \+ classname + \+ studentname + \+ sex + \+ age + \+ address + \ set rs=conn.execute(sql) if isnull(rs) then else response.Write(\执行成功\end if conn.close response.Write(\执行失败\end select (7)然后再来看添加到XML文档的操作,将如下代码添加到服务器端,判断客户端传递的action值。 case \ Set FSObject=Server.CreateObject(\if not FSObject.FileExists(xmlpath) then set objstream=FSObject.CreateTextFile(xmlpath) objstream.WriteLine(\version=\standalone=\objstream.WriteLine(\objstream.WriteLine(\ objstream.close set objstream=nothing set objfile=nothing end if Set XmlDoc = Server.CreateObject(\XmlDoc.ASYNC = False Flag = XmlDoc.Load(xmlpath) If Flag Then Set rootNode = XmlDoc.CreateElement(\Set newNode = XmlDoc.CreateElement(\newNode.Text = StudentNo rootNode.AppendChild(newNode) Set newNode = XmlDoc.CreateElement(\newNode.Text =GradeName rootNode.AppendChild(newNode) Set newNode = XmlDoc.CreateElement(\newNode.Text = ClassName rootNode.AppendChild(newNode) Set newNode = XmlDoc.CreateElement(\newNode.Text = StudentName rootNode.AppendChild(newNode) Set newNode = XmlDoc.CreateElement(\newNode.Text = sex rootNode.AppendChild(newNode) Set newNode = XmlDoc.CreateElement(\newNode.Text = age rootNode.AppendChild(newNode)