新水年华 2004-12-27 03:02
ASP知识讲座一、二、三
ASP知识讲座一
一、首先让我们了解一下学习ASP的基本要求。 :
1.ASP起步所需个人最低配置:
(1)懂一点HTML知识(有维护制作网页的经验);
(2)一点数据库知识,如会使用Microsoft Access或者会使用.mdb数据库。
(3)最好有一点点编程基础(最好是VB系列,要求会使用If…Then…End If选择分支语句和循环语句)。如果您一点编程基础也没有,那只有试试看了。
2.调试、运行ASP所需软件环境:
(1)Win9x+PWS(Win98的光盘中"\add-ons\pws\setup.exe"安装一下就行了)。至于怎样安装Personal Web Server,很多杂志上都有介绍(不要太多哦,电脑商情报去年就有过一篇《ASP个人上手指南》),其实非常简单,没有文章写得那么复杂。如果这关过不了,我只好建议您打电话到编辑部咨询了。
(2)或者使用Windows NT4.0+IIS4.0(在Windows NT4.0 Option Pack安装程序中),若要在单位里组建Intranet,使用这种组合是比较好的。 安装完毕后,如果在浏览器中输入
http://localhost/default.asp 有结果出来,则安装成功(默认情况下,你的主页文件应放
在"\InetPub\wwwroot"目录下)。如果你想将调试好的ASP文件上传到远程的主页服务器上,必须确信该服务器支持ASP,不过,目前声明支持ASP的免费主页空间并不多,这里给大家提供两个东莞视窗(http://www.homecn.com/)和NET668(http://freenet.net668.net/),您可以测试一下我的ASP文件运行结果:http://202.103.176.81/grun/kissher/asp/ipfound2.asp。
3.ASP学习支持
(1)ASP技术网站:http://www.chinasp.com/,从这里还可以找到一些ASP相关的英文站点。
(2)ASP动感网络:http://active.t500.net/
(3)Windows NT4.0 Option Pack说明文件和Active Server Pages3.0说明文件。
(4)Visual Studio6.0的MSDN Library光盘中有两个文件asp.chm、aspdoc.chm是ASP帮助文件, 没有可去我的站点http://wuf.bentium.net下载(还可下载本文所有源程序)。
(5)本讲座的目的只是教您能依样画葫芦,在自己的主页中使用ASP(包括直接使用能下载到的ASP程序), 以实用为先。如果你想进一步深入,建议买一本ASP手册,如:《ASP实务经典》 (中国铁道出版社,林金霖编著)。
二、自己动手试试。为了加强感性认识,我们先通过两个实例来 说明如何编辑和使用ASP文件。
打开Windows附件的记事本,输入以下代码,保存为wuf1.asp(如果有任何问题,可以去我的主页向我咨询):
<% @LANGUAGE = VBScript %>
<%
Response.Write "" '相当于编程语言中的输出语句
Response.Write "输出结果到浏览器."
Response.Write ""
%>
编辑好后,将wuf1.asp放到安装默认Web站点的主目录"\InetPub\wwwroot"下,在浏览器中输入http://localhost/wuf1.asp就会看到输出结果。下面再看一个实例(wuf2.asp):
<html>
<body>
IP address = <%=Request.ServerVariables("Remote_Addr")%>
</body>
</html>
输出结果即为本机IP地址,简单吧。在上面两个例子中,我们使用记事本作编辑器(因为ASP文件是文本文件),但是,如果真想使用ASP的话,我给你推荐以下几个工具:
1. HomeSite:不仅是制作主页最好的工具之一,编写ASP文件也很不错。
2. ASP-Edit Professional:不仅可按不同颜色显示ASP代码,还有ASP课程和VBScript帮助这两个文件可去华军主页(http://www.newhua.com)下载。
3. Microsoft Visual InterDev6.0:虽是牛刀,却是编辑ASP文件最好的工具,如果你使用过VB,它的好处就不用我多说了。 应该说明的一点是,时下流行的DreamWeaver3.0作主页不错但最好不要用来编辑有ASP代码的文件,以免越编越乱。
三、理解ASP脚本编程环境 ASP(Active Server Pages)是一种功能强大、灵活易学的服务器端脚本编程环境,它的源代码均在服务器端运行,运行的结果以HTML代码的形式输出到客户端。
利用ASP不仅可以快速创建交互性的动态网页,而且程序代码完全保密,更重要的是不用考虑客户端用户使用何种浏览器,可以适用于各种浏览器。若使用客户端脚本编程(如:VBScript或javascript),则须考虑用户所使用的浏览器。我们可以这样来理解ASP程序:
1.从以上两例可看出,ASP文件的扩展名为.asp,一个ASP文件通常由ASP脚本命令和HTML标记、文本组成,ASP命令必须用"<%%>"括起来(关于<%@LANGUAGE = VBScript %>,先不急于搞清楚,以后再谈)。
2.初学者要看懂ASP程序,只要一分为二即可(切不可搅在一起,稀里糊涂)。注意除掉<%%>括起来的代码后,就与你用过的.htm文件一样,你一看就懂。而<% %>括起来的部分在服务器端运行后,得到的输出结果就是你所熟悉的HTML代码。如Response.Write "<HTML><BODY>"得到的就是<HTML><BODY>,而<%=Request.ServerVariables("Remote_Addr")%>的运行结果即为IP地址,如wuf2.asp输出后实际上如同下面:
<html>
<body>
IP address = 16.62.5.60
</body>
</html>
你可以通过选择IE中"查看"菜单下的"源文件"来加深理解。
四、磨刀不误砍柴工--ASP基础
1.将结果(字符串信息)输出到浏览器,语法为:Response.Write 显示的内容。从例
wuf2.asp可以看出,可以用"<%=显示的内容%>"来代替"<%Response.write显示的内容%>"。
新水年华 2004-12-27 03:04
2.使用变量,wuf2.asp可改为:
<% @LANGUAGE = VBScript %>
<% ' 单引号后加注释 - wuf3.asp
Option Explicit '要求变量声明,使用它可减少程序出错的可能,提高效率
Dim IPaddr '使用变量前最好先声明
Ipaddr = Request.ServerVariables("Remote_Addr")
%>
<html>
<body>
IP address = <%IPaddr%>
</html>
</body>
3.在程序中使用函数
<%@ Language=VBScript%>
<%Response.Expires = 0%>
<HTML>
<HEAD>
<title>使用函数 - wuf4.asp</title>
</HEAD>
<BODY
<P>今天的日期: <%=Date%></P>
<P>现在的时间: <%=Time%></P>
<P>现在的时间: <font color="#CC0033"><%=Time%></font></P>
<P>Response.Write "<P>现在的时间: <font color='#CC0033'>"& Time & "</font></P>
%>
</BODY>
</HTML>
上例中,"&"相当于"+"号,Date和Time就是函数(注意:这里所获得的时间是Web服务器的时间而不是浏览器所在机器的时间,从这里可验证ASP命令是在服务器端执行的),ASP还有许多其他的函数,本文不可能一一列举,请自己查阅。
至于<%Response.Expires = 0%>,我们知道,浏览器可以缓存Web页,以加速访问,而
Response.Expires就是用来设置网页保留在客户端浏览器缓存中的时间(分钟)。若设置为0,则表明网页数据不会被保留在客户端的缓存中。它必须放置在标签之前。具体到这个例子中,如果没有这个设置,你只有按"刷新"按钮,时间才会更新,而仅在地址栏敲回车,时间是不会变化的,而加上这句设置后,每敲一次回车,时间就会更新一次。
4. 使用条件语句:
<%@ Language=VBScript %>
<% ' wuf5.asp
If Time<=#12:00:00# Then
Response.Redirect "wuf1.asp"
ElseIf time<=#18:00:00# Then
Response.Redirect "wuf2.asp"
Else
Response.Redirect "wuf3.asp"
End If
%>
日期用##引起来,Response.Redirect负责引导客户端浏览器显示新的网页,即通常说的重定向请记住,这个功能是非常有用的。
5. 使用循环语句:
<%@ Language=VBScript %>
<%Option Explicit%>
<HTML>
<BODY>
<%
dim I
While I<=5
Response.Write "</p>" & "还有其他循环结构,如:Do...Loop While, " &_
"Do While...Loop, For...Next,For Each...Next等" & "</p> "
I=I+1
Wend
%>
</BODY>
</HTML>
从上例中,你应该注意如何使用"_"换行。
6.使用include file。
对于一个Web站点而言,一般每个页面的顶部或尾部基本上都是相同的那么你可以将这些相同的部分放一个文件中,然后再在需要时引用它。先如下编辑一个名为comm.asp的文件:
<html>
<head>
<style type="text/css">
<!--
font { font-family: "宋体", "Times New Roman"; font-size: 9pt} -->
</style>
</head>
<body>
<table width="640" border="0" bordercolor="#9999FF" bgcolor="#FFFFFF"
bordercolorlight="#3333FF" bordercolordark="#CC0000">
<tr bgcolor="#006666" bordercolor="#009933">
<td align="center" height="18" colspan="2">⊙
《丰子家园》版权所有 - </font><font color="#FFFF00">建站于1997年3月</font>
</td> </tr>
</table>
</body>
</html>
再编辑以下文件:
<% @LANGUAGE = VBScript %>
<HTML>
<BODY>
<% 'wuf7.asp
Response.Write "输出结果到浏览器."
%>
<!--#include file="comm.asp"-->
</BODY>
</HTML>
include file可放在网页的任意位置,但必须位所有ASP代码块的外部。 此外,还有过程、函 数、参数传递等概念,如果你以前未接触过的话,还是先放着为妙,先从总体上了解ASP,然后再逐步细化。
新水年华 2004-12-27 03:06
ASP知识讲座二
学习ASP,最重要的就是要掌握ASP内置的六大对象。事实上,在上一讲中,我们已经了解了Response对象(是吗?有没有搞错!),及Response对象中最常用的Write方法、Redirect方法和Expires属性。看到对象、方法、属性、集合、事件这些概念(俺一个都不识!),如果以前没接触过,聪明的您就不要管这些概念了,知道怎么用就行了,我的观点是刚开始关键在于临摹。下面我们继续通过实例学习Request对象,为了加深理解,务请运行这些程序看看输出结果
一、 使用Request.ServerVariables获取环境变量,这部分内容很简单,但获取的内容却很重要,如何获取?请看下例:
<%@ Language=VBScript %>
<HTML><BODY>
<% 'wuf8.asp
Response.Write "运行ASP文件的路径: " &_
Request.ServerVariables("Script_Name") & "
"
Response.Write "返回content的数据长度: " &_
Request.ServerVariables("Content_Length") & "
"
Response.Write "返回客户的IP地址: " &_
Request.ServerVariables("Remote_Addr") & "
"
Response.Write "浏览器名: " &_
Request.ServerVariables("HTTP_USER_AGENT") & "
"
Response.Write "返回主页实际物理路径: " &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & "
"
%>
<table colspan=8 cellpadding=5 border=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW"
color="#ffffff" size="2">环境变量名</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW"
color="#ffffff" size="2">内容</font></td>
</tr>
<tr>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
result1
</font></td>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
result2
</font></td></tr>
</table>
</BODY></HTML>
Now,你应该发现上一讲中的例程wuf2.asp原来是多么的easy!
注意:该程序的后面一部分HTML标记纯是为下面的例子作准备的,所以不要觉得奇怪。那么,还有哪些环境变量呢?运行下面的例子就知道了(本程序删除了部分代码,最好去我站点下载源程序便于理解)。
<%@ Language=VBScript %>
<% 'wuf9.asp
Option Explicit
Dim Sv
%>
<HTML><BODY>
<table colspan=8 cellpadding=5 border=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW"
color="#ffffff" size="2">环境变量名</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW"
color="#ffffff" size="2">结果</font></td>
</tr>
<%
for each Sv In Request.ServerVariables
Response.Write "<tr>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW'
size='2'>"
Response.Write Sv
Response.Write "</font></td>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW'
size='2'>"
Response.Write Request.ServerVariables(Sv)
Response.Write "</font></td></tr>"
next
%>
</table>
</BODY></HTML>
这里使用了For…Each循环,用来列举一个集合中的所有元素。如果后半部分看不懂,请对照wuf8.asp,再瞧瞧运行结果,仔细体会一下(什么态度?)。
二、 通过表单向服务器传送数据(也可这样理解,服务器端如何读取客户端发送的数据)做过主页,应该知道很多主页通常都使用form表单让用户输入数据,然后通过"submit(提交)"按钮发送数据。From表单中的"method"有两种主要方法:POST和GET,而"action"后一般都是指定一个.cgi、.pl或.asp文件,今天我们要学习的就是如果编写这个.asp文件。
(一) 如果使用POST方法传送数据,则用Request.form来读取数据。先编辑如下一个
wuf10.htm文件,供用户输入数据:
<html>
<body bgcolor="#FFFFFF">
<form method="post" action="wuf11.asp">
姓名: <input type="text" name="yourname">
性别: <select name="gender">
<option>男</option>
<option>女</option>
</select>
留言: <textarea name="message">您好!
注意多行文本的处理</textarea>
爱好(按住Ctrl键可多选):
<select name="hobby" multiple size="4">
<option>电脑</option>
<option>购物</option>
<option>电影</option>
<option>读书</option>
</select>
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="Reset">
</form>
</body>
</html>
再编写一个wuf10.htm需用到的文件wuf11.asp收集数据:
<%@ Language=VBScript %>
<% 'wuf11.asp
Option Explicit
Response.Expires=0
Dim StrName, StrGender, StrM, StrMsg
StrName = Trim(Request.form("yourname")) 'Trim函数用来除首尾空格
StrGender = Trim(Request.form("gender"))
StrM = Trim(Request.form("message"))
StrMsg = Replace(StrM,vbcrlf,"
" & vbcrlf)
' vbcrlf相当于回车符和换行符的组合。至于Replace函数,其作用就是将字符串StrM中的
vbcrlf替换为"
" & vbcrlf(请思考这个vbcrlf有什么用?查看输出文件的HTML源码就明
白了),详细请参考VBScript帮助。
%>
<HTML><BODY>
姓名: <%= StrName%>
性别: <%= StrGender%>
留言:
<%= StrM%>
<%= StrMsg%>
实际上, "提交"按钮的值也被传递:
<%= Request.form("Submit")%>
<% '先把上面看懂, 有兴趣再看看如何读取多个选项
Response.Write "共选择爱好项数:" & Request.form("hobby").Count & "
"
Dim I
For I = 1 to Request.form("hobby").Count
Response.Write Request.form("hobby")(I) & "
"
Next
%>
</BODY></HTML>
在这个的例子中,为了便于理解,我们使用了两个程序,实际上只使用一个程序也可以,如果有兴趣请看下面的例程wuf12.asp,有助于加深对环境变量的理解。
<%@ Language=VBScript %>
<% 'wuf12.asp
Option Explicit
Response.Expires=0
Dim StrName, StrGender, StrM, StrMsg
If Request.ServerVariables("Content_Length") <> 0 Then
'提交数据后,这个长度就不会是 0, 因此执行下面的语句, 将结果显示出来
'下面一部分实际上是照搬 wuf11.asp
StrName = Trim(Request.form("yourname"))
StrGender = Trim(Request.form("gender"))
StrM = Trim(Request.form("message"))
StrMsg = Replace(StrM,vbcrlf,"
" & vbcrlf)
%>
<HTML><BODY>
姓名: <%= StrName%>
性别: <%= StrGender%>
留言:
<%= StrM%>
<%= StrMsg%>
<%
Response.Write "共选择爱好项数:" & Request.form("hobby").Count & "
"
Dim I
For I = 1 to Request.form("hobby").Count
Response.Write Request.form("hobby")(I) & "
"
Next
%>
</BODY></HTML>
<%
Else
'当第一次加载页面时,没有提交任何数据,故前面一部分并不执行,而是从这里开始
'这也就是为什么会有两对 <HTML></HTML> 的原因
'下面照搬 wuf10.htm 就行了
'<form method="post" action="wuf11.asp"> 给用环境变量替换掉了, 其实完全一样
Response.Write "看看结果: " & Request.ServerVariables("Script_name") & "
"
%>
<HTML><BODY>
<form method="post" action="<%= Request.ServerVariables("Script_name")%>">
姓名: <input type="text" name="yourname">
性别: <select name="gender">
<option>男</option>
<option>女</option>
</select>
留言: <textarea name="message">您好!
注意多行文本的处理</textarea>
爱好(按住Ctrl键可多选):
<select name="hobby" multiple size="4">
<option>电脑</option>
<option>购物</option>
<option>电影</option>
<option>读书</option>
</select>
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="Reset">
</form>
</BODY></HTML>
<%End If%>
(二)如果使用GET方法传送数据,则用Request.Querystring来读取数据。先编辑如下一个wuf13.htm文件,供用户输入数据
<html>
<body bgcolor="#FFFFFF">
<form method="get" action="wuf14.asp">
英文姓名: <input type="text" name="Ename">
中文姓名: <input type="text" name="Cname">
性别: <select name="gender">
<option>男</option>
<option>女</option>
</select>
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="Reset">
</form>
</body>
</html>
再编写一个wuf13.htm需用到的文件wuf14.asp收集数据:
<%@ Language=VBScript %>
<% 'wuf14.asp
Option Explicit
Response.Expires=0
Dim StrCname, StrEname, StrGender
StrEname = Trim(Request.QueryString("Ename")) 'Trim函数用来除首尾空格
StrCname = Trim(Request.QueryString("Cname"))
StrGender = Trim(Request.QueryString("gender"))
%>
<HTML><BODY>
英文姓名: <%= StrEname%>
中文姓名: <%= StrCname%>
性别: <%= StrGender%>
看看提交的字符串:
<%= Request.ServerVariables("Query_String")%>
</BODY></HTML>
为了更好地理解这个程序,你最好先在浏览器中试试例程wuf13.htm的效果,看看输出的结果,你会发现地址栏中长长的字符串似曾相识,如同在Yahoo搜索时看到的差不多。这时,你试着在地址栏中直接输入"http://localhost/wuf14.asp?Ename=Rose&Cname=李二&gender=女" 居然也得到了同样的结果。所以你可以这样看,wuf13.htm的结果就是得到了类似这样的一个带参数的链接。而Request.QueryString则是从http:// 地址的附加参数中读取各个数据。
实际上当按"提交"按钮后,查询字符串(输入的数据)会以参数的形式附加到URL地址后(各参数间以"&"分隔),达到传递数据的目的。同时,注意浏览器中显示的查询字符串中没有中文,而是不认识的含百分号的乱码,这是因为进行了编码的缘故。最后,与前面一样,这两个程序也可合并为一个程序(例程wuf15.asp,需去我站点下载)。
几点说明:
1. 若使用POST方法提交数据,则Request.ServerVariables("Content_Length")>0。
若使用GET方法提交数据,则Request.ServerVariables("Query_String") <> ""。
2.弄懂原理后你完全可以在同一个ASP文件中混合使用Request.form和Request.QueryString
3. 如果在一个form表单中,有几个按钮,你如何确定用户按了哪个按钮?如果留意的话,会发现例程wuf11.asp中有一句,"提交"按钮的值也被传送,而wuf13.htm中生成的查询字符串最后也可以找到类似的值。请注意:只有被按按钮的值被传送,而其他按钮的值为"",这就是判断依据(《中计报》InfoWeb网站有一篇类似文章)。