第六章 网络编程基础.doc
第六章 网络编程基础一、网络编程基础【例6-1】设计一个VBScript程序,能比较边长为5厘米的正方形和半径为5厘米的圆形哪个面积比较大,如果圆形比较大,就显示“True”,若正方形比较大,就显示“False”。【参考代码】<html><head><title>比较大小</title><script language=""VBScript"">a=5msgbox a*a*3.14 > a*a</script></head><body></body></html>【例6-2】设计一个VBScript程序,计算出边长为5厘米的正方形和半径为5厘米的圆形的面积差,并显示出来。【参考代码】<html><head><title>面积差</title><script language=""VBScript"">a=5msgbox (a*a*3.14) - (a*a) &""公分""</script></head><body></body></html>【例6-3】设计一个VBScript程序,依用户在对话框内输入的身高判断所需购买票的种类 (身高160cm以上需购买全票,140159cm买半票,139cm以下儿童票)。【参考代码】<script language=""VBScript"">a=inputbox(""请问您的身高"")if a>=160 thenmsgbox ""您必须购买全票""elseif a<160 and a>=140 thenmsgbox ""您只要购买半票""elsemsgbox ""儿童票""end if</script>【例6-4】设计一个VBScript程序,能显示出今天是星期几 (使用WeekDay(now) 函数)。【参考代码】<script language=""VBScript"">a=weekday(now)select case acase 1msgbox ""礼拜日""case 2msgbox ""礼拜一""case 3msgbox ""礼拜二""case 4msgbox ""礼拜三""case 5msgbox ""礼拜四""case 6msgbox ""礼拜五""case 7msgbox ""礼拜六""end select</script>【例6-5】设计一个VBScript程序,如果是白天(6点至18点之间)进入网页就会显示“早安您好”,如果晚上就会显示“晚安”。【参考代码】<html> <head><title>早安</title> <script language=""VBScript""> if hour(now) >=6 and hour(now)<=18 thenmsgbox ""早安您好"" else msgbox ""晚安"" end if </script> </head> <body> </body></html>【例6-6】设计一个程序,在用户离开网页时会显示“玩得愉快吗”的对话框,并且可让用户按下“是”、“否”按钮。提示:离开的事件名为“Window_onUnload”。【参考代码】<HTML> <HEAD><TITLE>离开</TITLE> <SCRIPT LANGUAGE=""VBSCRIPT""> <!- SUB WINDOW_ONUNLOAD A=MSGBOX(""小毛驴,玩得愉快吗"",vbYesNo+vbQuestion) IF A=VBNO THEN MSGBOX ""对不起,下次会改进的"" END IF END SUB -> </SCRIPT> <BODY> </BODY></HTML>【例6-7】编写一个ASP程序打开Sample1.txt文件,可自行建立文本文件,然后一次读取一行,写入另一个新的文本文件 Sample2.txt。 【参考代码】<HTML><BODY><% Dim objFSO, objTS1, objTS2, ALine Set objFSO = Server.CreateObject(""Scripting.FileSystemObject"") Set objTS1 = objFSO.OpenTextFile(Server.MapPath(""Sample1.txt""), 1) Set objTS2 = objFSO.CreateTextFile(Server.MapPath(""Sample2.txt"") Do While Not objTS1.AtEndOfStream ALine = objTS1.ReadLine objTS2.WriteLine(ALine) Loop objTS1.Close objTS2.Close Set objTS1 = Nothing Set objTS2 = Nothing Set objFSO = Nothing %> </BODY></HTML>二、动态网页设计例6-8,使用Form方法获取表单上的信息。在“银行登录-填表单(6-8a.asp)”页面上输入信息后,鼠标单击“确定”按钮,页面砖到“银行登录-反馈信息(6-8b.asp)”页面中。 【参考代码】银行登录-填表单(6-8a.asp):<html><head> <title>银行登录-填表单</title></head><body> <form name="test" method="post" action="6-8b.asp"> 请如实填写下面信息:<br> 姓名<input type="text" name="name"><br> 性别<input type="text" name="sex"><br> 职务<input type="text" name="work"><br> 收入<input type="text" name="salary"><br> <p> <input type="submit" value="确定"> </from></body></html>银行登录-反馈信息(6-8b.asp):<html><head> <title>银行登录-反馈信息</title></head><body> <% dim a,b,c,d a=request.Form("name") & " " b=request.Form("sex") & " " c=request.Form("work") & " " d=request.Form("salary") & " " %></body></html>例6-9,使用Response对象输出数据1-50(6-9.asp)。 【参考代码】<% response.buffer=true %><html><head><title>response应用示例<title></head><body><h3>使用response对象</h3><hr><%for i=1 to 50 '循环 response.write i & " " '输出I值 if i mod 10=0 then response.write "<br>" '当I能被10整除时,换行输出 response.flush '立即发送缓冲区输出 if i=50 then response.clear '当i=50清除缓冲区输出 'if i=45 then response.end '当i=45,停止输出 next%></body></html>例6-10,Server对象的HTMLEncode方法和属性Scripttimeout的应用(6-10.asp)。 【参考代码】<%server.ScriptTimeout=60%><html><head> <title>Server对象</title></head><body> <p>Server对象应用<p> <% response.write "由属性ScriptTimeout设定页面运行的最长时间是" response.write Server.scriptTimeout '输出页面运行的最长时间 response.write "秒" %> <p> <% response.write "<a href=''>网易邮箱</a>" response.write "<b>" response.write Server.HTMLEncode("方法HTMLEncode的作用是将字符串中的HTML标记字符转换为字符字体<a href=''></a>") %></body></html>例6-11,请用Application变量来实现网页计数效果(6-11.asp)。 【参考代码】<%server.ScriptTimeout=60%><html><head> <title>网页访问记录</title></head><body> <img src=./pic/corect.gif> <font color="#ff0090" size="5" face="方正姚体">welcome to 音乐动感网站</font> <hr> <% counter=Application("counter")+1 '用Application变量计数赋值给counter Application("counter")=counter '创建Application变量并赋值 %> <font size=6 face=隶书 color=blue>欢迎,您是第<%=counter%>位来访者</font></font></body></html>例6-12,使用Session变量计数(6-12.asp)。 【参考代码】<html><head> <title>网页访问记录</title></head><body> <img src=./pic/corect.gif><font color="#ff0090" size="5" face="方正姚体">welcome to 音乐动感网站</font> <hr> <% session("counter")=session("counter")+1 '创建session,并给session赋值 %> <font size=6 face=隶书 color=blue>欢迎,您是第<%=session("counter")%>位来访者</font> '输出session变量的值</font></body></html>例6-13 ASP数据库综合操作,设计一个网站导航程序,实现查询、记录、记录、删除记录的功能。具体包括:Index.asp:网站导航程序。首先在网站主页上列出所有网站的名称,也就是实现查询记录的功能,然后通过超链接的方法接到添加、更新、删除记录的页面。Insert_form.asp:插入记录的表单,可由用户直接在网页上添加。Insert.asp:提取用户填入表单的数据,将其插入到数据库中。Delete.asp:将网站中一些记录删除。Update_form.asp:更新网站内容的表单,可由用户直接在网页上更新、修改。Update.asp:提取更新表单中的内容,修改数据库内容。说明:如果在windows2000或windows xp系统修改数据库,一定要将数据库的属性设成任何人有完全控制的权利,否则程序运行时会出现不可预知的错误。 【参考代码】Index.asp代码:<html><head> <title>查询所有记录</title></head><body> <% dim db set db=server.createobject("adodb.connection") db.open "web.mdb" '利用数据源连接数据库 dim strsql,rs strsql="select * from web" set rs=db.execute(strsql) '建立rs记录集 %><center><a href="insert_form.asp">插入记录</a><table width=80% border=1><tr bgcolor=yellow><td>名称</td><td>网址</td><td>说明</td><td>删除</td><td>更新</td></tr><% do while not rs.eof%><tr bgcolor=yellow><td><%=rs("name")%></td><td><a href="http:/<%=rs("url")%>"target="_blank"><%=rs("url")%></a></td><td><%=rs("text")%></td><td><a href="delete.asp?id=<%=rs("id")%>">删除</a></td><td><a href="update_form.asp?id=<%=rs("id")%>">更新</a></td></tr><%rs.movenext '将记录指针移到下一条记录loop%></table></center></body></html>Insert_form.asp代码:<center><table width=80% border=1><form name="form1" method="post" action="insert.asp"><tr><td>网站名称</td><td><input type="text" name="name" size=40></td></tr><tr><td>网站网址</td><td><input type="text" name="url" size=40></td></tr><tr><td>网站说明</td><td><textarea name="text1" rows=2 cols=40 wrasp="soft"></textarea></td></tr><tr> <td></td><input type="submit" value="确定"></td></tr></form></table></center></body></html>Delete.asp代码:<% option explicit %><% dim db '定义变量 set db=server.createobject("adodb.connection") db.open "web" '利用数据源连接数据库 dim strsql,var_id '声明变量 var_id=request.querystring("id") strsql="delete from web where id="& var_id" db.execute(strsql) response.redirect "index.asp"%>Update_form.asp代码:<% option explicit %><html> <head><title>更新记录的表单程序</title></head><body><% dim var_id var_id=request.querystring("id") session("id")=var_id dim db set db=server.createobject("adodb.connection") db.open "web" '以下打开记录 dim strsql,rs strsql="select * from web where id="& var_id" set rs=db.execute(strsql)%><center><table width=80% border=1><form name="form1" method="post" action="insert.asp"><tr><td>网站名称</td><td><input type="text" name="name" size=40></td></tr><tr><td>网站网址</td><td><input type="text" name="url" size=40></td></tr><tr><td>网站说明</td><td><textarea name="text1" rows=2 cols=40 wrasp="soft"></textarea></td></tr><tr> <td></td><input type="submit" value="确定"></td></tr></form></table></center></body></html>Update.asp代码:<% option explicit %><% dim var_id var_id=session("id")if request.form("name")<>"" and request.form("url")<>"" and request.form("text1")<>"" then dim db set db=server.createobject("adodb.connection") db.open "web" '利用数据源连接数据库 dim strsql,varname,varurl,vartext varname=request.form("name") varurl=request.form("url") vartext=request.form("text") strsql="update web set name='" & varname & "',url='" & varurl "',text1='" & vartext &"' where id="& var_id db.execute(strsql) '建立rs记录集 response.redirect "index.asp"else response.write "将所有信息填写完整" response.write "<a href='index.asp'>重新更新</a>"end if%>下面是有关使用JSP进行编程的例题。例6-14,比较两数的大小comparetwo.java 【参考代码】public class CompareTwopublic static void main(String args)double d1=23.4;double d2=35.1;if (d2>=d1) System.out.println(d2+">="+d1);Else System.out.println(d1+">="+d2); 例6-15,四则运算(Calculator.java),设x=10,y=5,使用switch语句实现当输入字符“+”、“-”,“*”,“/”时,分别计算x、y的和、差、积、商的程序。 【参考代码】import java.io.*;public class Calculatorpublic static void main(String args) throws IOExceptionint x=10,y=5,z=0;char ch;/变量ch用来存放从键盘输入的字符/*下面7行语句的作用是从键盘输入ch的值*/InputStreamReader ir;BufferedReader in;ir=new InputStreamReader(System.in);in=new BufferedReader(ir);System.out.println("请输入ch的值:");String s=in.readLine();ch=s.charAt(0);switch(ch)case '+': z=x+y; System.out.println("X + Y ="+z); break;case '-': z=x-y; System.out.println("X - Y ="+z); break;case '*': z=x*y; System.out.println("X * Y ="+z); break;case '/': z=x/y; System.out.println("X / Y ="+z); break; default: System.out.println("输入非法ch值!"); 例6-16,计算1-100之和(forloop.java) 【参考代码】public class ForLoop public static void main(String args)int result=0;for(int i=1;i<=100;i+)result+=i;System.out.println("1+2+3+.+100="+result);例6-25,计算1-100之和(WhileLoop.java) 【参考代码】public class WhileLooppublic static void main(String args)int result=0;int i=1;while(i<=100)result+=i;i+;System.out.println("1+2+3+.+100="+result);例6-17,计算圆的周长和面积(circle.java)。 【参考代码】package tom.lan;public class circleint radius; public circle() radius=1; public int getradius() return radius; public void setRadius(int newRadius) radius=newRadius; public double circleArea() return Math.PI*radius*radius; public double circlLength() return 2.0*Math.PI*radius; 例6-18JSP数据库综合操作,用户登录验证页面,实现以下功能:用户在两个文本框中输入登录名(ID)和密码,单击提交按钮,如输入正确(输入的数据和数据库表中的记录一致)则弹出对话框,提示“登录成功,确定后即可进行管理操作!”,否则提示“登录失败、用户名或密码错误,请重试!”。还可以通过修改管理员密码页面,实现密码修改:完成登录后,修改用户输入的“管理员”、“密码”的操作,然后将新值存放于数据库表中,修改完成后则弹出提示信息。【参考代码】Conn.jsp是与数据库建立连接的文件,使用了Access数据库,代码如下。<%String strurl="jdbc:odbc:driver=Microsoft Access Driver (*.mdb);DBQ=C:/Program Files/Apache Group/Tomcat 4.1/webapps/examples/myjsp/bkadmin/db.mdb"/strurl的值为存放数据库的绝对路径Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");Connection conn=DriverManager.getConnection(strurl);%>验证管理员用户名和密码的页面(admin.jsp)代码如下:文件名称:admin.jsp<% page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %><% include file="conn.jsp"%><%String getword=request.getParameter("login");if(getword!=null)if(pareTo("true")=0) /out.print("<div align=center>你提交了表单</div>");String name,pwd;name=request.getParameter("id");pwd=request.getParameter("pwd");name=Bytes(name);pwd=Bytes(pwd);/out.print(name);/out.print(pwd);Statementstmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);String sql="select * from admin where admin_name='"+name+"' and admin_pwd='"+pwd+"' order by id" ResultSet rs=stmt.executeQuery(sql); /操作数据库if(rs.next()/登陆成功session.putValue("name",name);session.putValue("pwd",pwd);out.print("<script>alert('登录成功,确定后即可以进行管理操作!');window.location.href='default.jsp'</script>");elseout.print("<div align=center>登录失败,用户名或密码错误,请重试!</div>");rs.close();stmt.close();out.print("<table width='771' border='0' align='center' cellpadding='5' cellspacing='1' bgcolor='#'><form name='form1' method='post' action='admin.jsp?login=true'>");out.print("<tr bgcolor='#FFFFFF'><td width='300' align=right>管理员</td><td width='471'>请勿尝试非法登陆,否则后果自负</td></tr><tr bgcolor='#FFFFFF'><td align=right>ID:</td><td><input name='id' type='text' id='id'></td></tr>");out.print("<tr bgcolor='#FFFFFF'><td align=right>密码:</td><td><input name='pwd' type='password' id='pwd'></td></tr><tr bgcolor='#FFFFFF'><td> </td>");out.print("<td><input type='submit' name='Submit' value='提交'><input type='reset' name='Submit' value='重置'></td></tr></form></table>");%>修改管理员密码页面(default.jsp):文件名称:default.jsp<%String admin_name=(String) session.getValue("name"); String admin_pwd=(String) session.getValue("pwd");String cgpwd=request.getParameter("cgpwd");if(cgpwd!=null)if(pareTo("true")=0)out.print("你提交了修改");String cg_name=request.getParameter("admin");String cg_pwd=request.getParameter("adminpwd");if(cg_name.length()!=0 && cg_pwd.length()!=0)out.print(cg_name);Statement stmtcgpwd=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);String sql4="update eshow_admin set eshow_admin='"+cg_name+"',eshow_adminpwd='"+cg_pwd+"' where eshow_admin='"+admin_name+"' and eshow_adminpwd='"+admin_pwd+"'"stmtcgpwd.executeUpdate(sql4);stmtcgpwd.close();out.print("<script>alert('密码修改成功,记住当前密码');window.location.href='default.jsp'</script>");elseout.print("<script>alert('用户和密码都不能为空');history.go(-1);</script>");out.print("<br><TABLE cellSpacing=1 cellPadding=0 width=776 align=center bgColor=# border=0>");out.print("<TR>");out.print("<TD align=middle bgColor=#ffffff height=22>版权所有 <石器工作室</A>");out.print("Copyright ©2005 *LF*ZHT*>");if(admin_name=null)out.print("<A href='admin.jsp'> 管理员登陆</A>");out.print("</td>");if(admin_name!=null)out.print("<tr><td align=middle bgColor=#ffffff height=22'>");out.print("<form name='form1' method='post' action='default.jsp?cgpwd=true'>"); out.print("管理员名:<input name='admin' type='text' value='"+admin_name+"' id='admin'>"); out.print("登陆密码:<input name='adminpwd' type='password' value='"+admin_pwd+"' id='adminpwd'>"); out.print(" <input type='submit' name='Submit' value='修改'>");out.print("</form>");out.print("</td></tr>");out.print("</TR>");out.print("</TABLE>");out.print("<BR>");out.print("</body>");out.print("</html>");%>本章小结本章主要讲解了ASP编程基础,包括动态网页设计基础、ASP内置对象简介及主要组件的简单使用;介绍了动态网页