AspJZY 问答解惑
Active Server Pages 简介(1)
ASP为ACTIVE SERVER PAGES的简称:
Active server pags (动态服务器主页,简称ASP),内含于Internet Information
Server(IIS)当中,提供一个服务器端(server-side)的scripting环境,让你产生和执行动态,交互式,高效率的站点服务器的应用程序。
你不必担心浏览器是否能执行你设计出来的Active Server Pages,你的站点服务器会自动将Active Server Pages 的程序码,解释为标准HTML格式的主页内容,在送到用户端的浏览器上显示出来。用户端只要使用常规可执行HTML码的浏览器,即可浏览Active Server Pages所设计的主页内容。
Active Server Pages 的特点是:
一:无须Compile编译:容易产生,无须Compile 编译或Link 链接即可执行。
二:使用常规文本编辑器,如Windows的记事本,即可设计。
三:与浏览器无关(Browser Independence):用户端只要使用常规的可执行HTML玛的浏览器,即可浏览Active Server Pages 所设计的主页内容,
Script 语言(Vbscript ,Jscript)是在站点服务器(Server端)执行,用户不需要执行这些Script语言。
四:面向对象(Object_Orient).
五: 可通过ActiveX Server components(ActiveX服务器组件)来扩充功能。
ActiveX Server component,可使用Visual Basic,Java,Visual C++,COBOL等语言来实现。
六:Active Server Pages与任何AcTiveX scripting 语言兼容。除了可使用VBscript 或JScript语言来设计,并可通过Plug-in的方式,使用由third party所提供的其他譬如REXX,perl,Tcl 等scripting语言。script引擎是处理script的COM(Component Object Model)对象。
七:Active server Pages的源程序代码,不会传到用户的浏览器,因此可以保护辛辛苦苦写出来的源程序不会外泻。传到用户浏览器的是Active Server Pages执行的结果的常规HTML码。
八:使用server端script产生client端script,你可以使用ASP程序码,在站点服务器执行script语言(VBscript 或 Jscript),来产生或更改在client端执行的script语言。
Active Server Pages 简介(2)
ASP对象
Active Server Pages提供五个内置的“对象”(object),你可以直接调用:
一:Request:取得用户信息。
二:Response:传送信息给用户。
三:Server:提供访问服务器的方法(methods)和属性(properties)的功能。
四:Applicatin:一个应用程序,可以在多个主页之间保留和使用一些共同的信息。
五:Session:一个用户,可以在多个主页之间保留和使用一些共同的信息。
在多个主页之间共享信息
ASP开发的应用程序,可以在多个主页之间保留和使用一些共同的信息,ASP提供两种适用范围,如下:
一:Application:Application 的所有信息,在一个应用程序,多个主页之间,
可以让所有的用户共同使用。
二:Session:Session的所有信息,仅适用于一个用户。
Active Server Pages 简介(3)
.asp文件
Active Server Pages(ASP)制作成.ASP扩展名的文件,一个.asp文件是一个
文本文件,包括:
1.HTML标记(tags)
2.VBscript 或Jscript语言的程序码
3.ASP语法
ASP语法
ASP并不是一个script语言,而是提供一个可以集成script语言(VBscript 或 Jscript)到HTML主页的环境。
HTML标记(tags)使用“<...>”将HTML程序码包含起来,以与常规的文本区分开来;而ASP使用“<%...%>”将ASP的script程序码包含起来。
范例:asp1.asp
显示现在的日期时间
譬如站点服务器asp1.asp文件:
现在是:<%=now%>
再用户端显示:
现在是:1998/5/17 皮棉3:11:20
让我们再看一个例子。
范例:asp2.asp
重复循环
这个ASP例子,在用户端浏览器,浏览执行的结果如下,显示五个重复的句子,字体越来越大。
站点服务器asp2.asp文件的ASP源代码如下:
<%for i = 1 to 5 %>
<font size= <% = i %>
color=#0000ff>快速掌握Internet技术
</font><br>
<%next%>
Active Server Pages的源代码,不会传到用户的浏览器,可以保护你写的源程序不会外漏。因此,在用户端观看到的是常规的HTML码,你的站点服务器会自动将Active Server pages的 程序代码,解释为标准的HTML格式的主页内容,如下:
<font size=1 color=#0000ff>快速掌握Internet技术
</font><br>
<font size=2 color=#0000ff>快速掌握Internet技术
</font><br>
<font size=3 color=#0000ff>快速掌握Internet技术
</font><br>
<font size=4 color=#0000ff>快速掌握Internet技术
</font><br>
<font size=5 color=#0000ff>快速掌握Internet技术
</font><br>
传送字符串到用户端的浏览器
Response.write方法,是最常用的传送字符串到浏览器的方法。语法如下:
Response.write 字符串
以下的例子向用户打招呼:
<%
Response.write "欢迎光临"
%>
也可以用如下方法:
<%...%>
欢迎光临
<%...%>
链接到指定的URL地址
使用Response.redirect方法,可以连接到指定的URL地址。语法如下:
Response.redirect URL
譬如,自动连接到首页:
<%
Response.Redirect "homepage.asp"
%>
须注意一点,若此.asp主页的内容已传送给用户,在使用Response.redirect
,将发生错误!
Active Server Pages 简介(4)
ASP Script语法
使用VBscript或Jscript的ASP语法
ASP与任何ActiveX SCripting语言兼容。除了可使用VBscript或Jscript语言来设计,还可以通过plug-in的方式,使用由third party所提供的其他譬如REXX ,Perl, Tcl等scripting语言
<script>标记
ASP默认的script语言vbscript,若要设定某一段ASP程序代码使用的script语言,可以使用"<script runat=server langrage=...>...</script>"加以设定,譬如ASP程序码使用Jscript语言:
<html>
<body>
<%call 函数1%>
</body>
</html>
<script runat=server langrage=Jscript>
function 函数1()
{
Response.write "叫到我了";
}
</script>
设定某一主页的script语言使用"<%@ language = ...%>"加以设定,语法如下:
<% @ language = VBscript %>
注意:@和LANGUAGE之间一定要有空格。
一个主页使用多种语言
你可以在一个主页当中使用VBscript和jscript语言。方法如下:
一:使用多个"<script runat=server language=...%>...</script>"加以设定。
二:使用多个"#include"的语法。
#INCLUDE包含其他文件
你可以在ASP程序码中插入另外一个"被包括"的文件,执行到此时,先执行"被包括"文件,再继续执行下去。语法如下:
<!--#include virtual|file="filename"-->
其中virtual代表虚拟的文件地址,FILE代表绝对的文件地址,如下:
<!--#include virtual="/booksamp/test.inc"-->
<!--#include file="test/test.inc"-->
被包括的#include文件,也可在包含其他的"被包括"文件。
不能使用ASP程序码来设定"被包括"的#INCLUDE文件。如下的#INCLUDE文件将无法正确的执行:
<%name=(test & ".inc"%>
<!--#include file="<%=name%>"-->
#INCLUDE 不能置于<%...%>当中。如下的#INCLUDE文件将无法正确的执行:
<%
for i=1 to n
...
<! -- #include file="test.inc"-->
next
%>
将#include置于<%...%>外即可。如下的#include文件可正确的执行:
<%
for i=1 to n
...
%>
<!--#include file="test.inc"-->
<%next%>
Active Server Pages 简介(5)
表格的处理
表格(form)
将输入的数据传送到服务器的方法,是使用HTML标记<form>...</form>的表格,在用户端浏览器输入数据,点击"submit"按钮后,将输入的数据传送到服务器加以处理。表格的语法如下:
<form action=url method=get|post name="formname" onreset=event onsubmit=event target=window>
</form>
·action:处理输入的数据的站点服务器程序的url地址。
·method:输入的数据传送到服务器的方式,如下:
get:将输入的数据加在action设定的url地址后面,传送到服务器
post:按照http post传输数据的方式,将输入的数据传送到服务器
·name:设定form的名称
·onreset:点击"reset"的按钮时执行所设定的子程序event
·onsubmit:点击"submit"的按钮是执行的子程序event
·target:指定输入数据结果所显示的窗口名称
ASP取得表格(form)输入数据的方法
由表格的method可知,用户浏览器可以用如下的两种方法传送数据
1:get:用户端将数据加到url后,格式为"?字段1=输入数据1&字段2=输入数据2&...",再将它送到服务器.譬如ACTION设为http://http://www.zjjv.com//,字段Name的输入数据为jack,字段age的输入数据为15,则使用的get方法,传给站点服务器的数据为http://http://www.zjjv.com//?Name=jack&age=15.
2:post:用户端利用http信息数据字段将数据传送到服务器.
二:post: 用户端利用HTTP信息数据字段传送到服务器。
ASP取得表格(form)输入数据的方法,是使用Active Server Pages一个内置的"对象"(object)---request,依据get,post方法而异:
get :使用"输入数据=Request.querystring("字段名"),将附加于url后的
数据取出,以取得此字段的输入数据。
post:使用"输入数据=Request.form("字段名"),读取HTTP信息数据字段,以取得字段的输入数据。
Request.querystring范例
范例:aspform.asp
使用Request.querystring("字段名"),将附加于url后的数据取出,譬如:
<a href="aspform.asp?name=jack&age=15">
按此处,通过request.querystring取得name,age</a><p>
Name:<%=request.querystring("name")%><br>\
Age:<%=Request.querystring("age")%>
Request.querystring取出字段name的输入数据为Jack,字段Age的输入数据为15,
在用户端使用浏览器,浏览执行的结果如下:
按此处,通过request..querystring取得name,age
Name:jack
Age:15
Get范例
请看个例子。
范例:aspform.asp
这个例子的表格(form)使用Get方法,在用户端使用浏览器,浏览执行的结果如下,输入表格点击"写完了"按钮后,将显示处理的结果。
站点服务器aspform.asp文件的程序码如下,点击"submit"按钮后,执行站点服务器的asp1b.asp:
<form action="asp1b.asp" method="get">
姓名:<input type=text name="input1" value="大名">
<p>
特性:<select name="input2">
<option>戴眼睛
<option>小肚微凸
<option>漂亮
</select>
<p>
<input type=submit value="写完了">
</form>
asp1b.asp文件的ASP程序代码如下,由于表格(form)使用get方式,ASP程序码
使用"输入数据=request.querystring("字段名"),将附加于URL后的数据取出,
以取得此段的输入数据:
<html><body>
<%=request.querystring("input1")%>你好,你的特性是<%=
request.querystring("input2")%>
</body></html>
Request.form
Request.form读取HTTP信息数据的字段,以取得使用POST方式的表格form输入数据。语法如下:
request.form(name)[(index)|.count]
· name:字段名。
· index:当同一字段输入多个值时,指针值index指定要读取同一字段的那一个值。
范围由1到request.form(name).count
· count:由request.form(name).count可知name字段输入几个值。若无此name字段,
则count=0。
譬如以下的例子,其中input1为字段名,request.form("input1").count
得知input1字段输入几个值:
<%
for I = 1 to request.form("input1").count
response.write request.form("input1")(I)&"<br>"
next
%>
若input1有两个输入值,譬如为value1和value2,则以上的例子,在浏览器上将
显示:
value1
value2
同一字段输入多个值时,若未采用指针值index指定要读取哪一个值时,将得到多个值,各个值中间以逗点分隔。
你可以使用"for each item in request.form("字段名"),重复取得此字段输入的所有多个输入值,以上的例子也可由以下的程序得到相同的结果:
<%
for each item in request.form("input1")
response.write item & "<br>"
next
%>
你可以使用"for each x in request.form",重复取得所有字段的输入值,譬如:
<%for ecah x in request.form%>
<%request.form(<%=x%>) = <% = request.form(x) %><br> %>
<% next %>
若字段input1有两个输入值,譬如为value1和value2,则以上的例子,在浏览器上将
显示:
inut1=value1
input2=value2
Active Server Pages 简介(6)
POST范例
让我们看一个POST的例子。
范例:aspform.asp
站点服务器aspform.asp文件的ASP程序代码如下:
<form action="asp1a.asp" method="post">
姓名:<input type=text name="input1" value="大名">
<p> 特性:
<select multiple name="input2">
<option >戴眼睛
<option>小肚微凸
<option>漂亮
</select>
<p>
<input type=submit value="写完了">
</form>
写完后点击“写完了"按钮时,所执行的asp1a.asp文件的ASP程序代码如下:
<% =request.form("input1")%>你好,你的特性是<%=request.form("input2")%>
若传给asp1a.asp的值,可能为:
input1=jack&input2=小肚微凸+漂亮
则在用户端使用浏览器,浏览执行的结果如下,输入表格点击"写完了"按钮后,将显示处理的结果。
jack,您好,您的特性是小肚微凸,漂亮
若你设定name字段名,则站点服务器将解析此字段的输入值。若你需要未经解析的输入值,只须使用"request.form",不含name字段名。譬如asp1a.asp的ASP程序代码如下:
<% = request.form %>
若输入的与上面的例子相同,于用户端使用浏览器,浏览未经解析的输入值如下:
input1=jack&input2=%A4p%A8%7B%B7L%A5Y&input2=%BA%7D%ABG
Request.querystring
Request.querystring,读取HTTP信息数据字段位,以取得使用GET方式的表格form
输入的数据。
输入的字段和数据将接在<form action="URL地址">所设定的URL地址后面,
先加一个"?",字段和数据之间用"&"分隔之,譬如:
URL地址?input1 = value1&input2=value2
Request.querystring将解析出输入的数据value1,value2.
语法如下:
request.querystring(name)[(index)|.count]
· name:字段名.
· index:当同一字段输入多个值时,指针值index指定要读取同一字段的那个值。
范围由1到request.querystring(name).count.
· count:由request.querystring(name).count可得知name字段输入几个值。
若无此name字段,则count=0.
Request.querystring解析在servervariables的Query_string变量。
同一字段输入多个值时,若未采用指针值index指定要读取哪个值,则将得到多个值,各个值中间以逗点分隔。
Active Server Pages 简介(7)
站点数据库访问法
站点数据库的解决方案
如何让用户从浏览器画面中,通过internet或intranet,查询站点数据库的数据,甚至输入,更新和删除站点服务器的数据库信息呢?
访问数据库的解决方案有如下几种:
1:CGI(Commom Gateway Interface):传统方式。
2:IDC(Internet Database connector,Internet数据库连接器)
与IIS(Internet Information Server):简易的站点数据库访问解决方案。
3:ADC(Advanced Data Connector,先进的数据库连接器):在用户端的
浏览器上执行数据查询动作的频繁的数据查询解决方案。
4:ADO(ActiveX Data Object ,Activex数据对象)与ASP(Active Server Pages):
完整的站点数据库访问解决方案。
Active Data Object与ASP
ActiveX Data Object
问数据库,可采用ASP内置的一个Activex Server component---Database
Access component(数据访问组件),使用ActiveX Data Object
(ActiveX数据对象,简称ADO)的技术,让你可以与Active Server pages(简称ASP)
结合,以提供访问数据库的功能。\
ActiveX Data Object ( 数据库访问组件,简称ADO)是什麽东西呢?ActiveData Object的技术,让你可以与Active Server Pages结合,以建立提供数据库信息的主页内容,在主页画面执行Structured Query Language(结构化查询语言,简称SQL) 命令,让用户在浏览器画面中输入,更新和删除站点服务器的数据库信息。
ADO使用RecordSets对象,作为数据的主要接口。
ADO可使用Vbscript,JavaScript语言来控制数据库的访问,与查询结果的输出显示画面。
ADO可连接多种的数据库,包括SQL Server,Oracle,Informix等支持ODBC的数据库。
ADO执行环境
在服务器端所需要的ADO执行环境如下:
1:windows NT server.
2:安装Internet Information Server(IIS)3.0(含)以上版本.
在用户端所需要的ADO执行环境,只需要一般的浏览器即可.
Active Server Pages 简介(8)
数据库数据来源设定
若要访问NT站点的数据库,须于"控制台"中的"odbc"建立数据库名称(用户数据来源名称),数据库所用的驱动程序和数据库文件等.
新建数据库来源的步骤
执行"设定"的"控制台"中的"odbc",选择"用户数据来源名称",点击"添加"按钮,选定数据库所用的驱动程序,如为Access数据库,选定"Microsoft Access Driver",点击"完成"按钮.
在odbc设定中,在"数据来源名称"输入数据库名称,以便以后在程序中调用称呼,点击"选定按钮,选择数据库文件,然后点击"确定"按钮即可.
ADO数据库设计要领
只要几个步骤,就可以应用 Active Data Object (ActiveX 数据对象,简称ADO)的技术,在站点服务器执行访问查询数据库的动作.
第一步:
ADO数据库设计要领的第一步,就是使用"Server.createobject"建立连接的对象,并使用"Open"打开待访问查询的数据库,如下
set conn = server.createobject("adodb.connection")
conn.open "数据库名称"
数据库名称即为在"ODBC"设定的"数据来源名称".
第二步
第二步设定SQL命令,使用"Execute"命令,即可开始执行访问查询数据库的动作.如下:
其中conn为第一步所设定的名称:
set rs = conn.execute(SQ)命令
第三步
第三步,使用如下recordsets对象的命令,显示查询的结果,其中rs为第二步所定义的名称:
.rs.fields.count:recourds的字段数.
.rs(i).name:第i(指针)个字段名,i由0算起到rs.fields.count-1.
.rs(i):读取第i(指针)个字段的记录,i由0算起到rs.fields.count-1.
.rs("字段名"):读取指定的字段的记录.
.rs.eof:是(true)否(false)已指定最末笔.
.rs.movenext:将指针移到下一笔.
.rs.moveprev:将指针移到上一笔.
.rs.movefirst:将指针移到第一笔.
.rs.movelast:将指针移到最末笔.
.rs.getrows:将查询结果存于数组当中,如v = rs.getgows(100),再读取数组v(col,row)的值即为查询的记录.
.rs.properties.count:得到ADO的Connection 或Resultset的属性总数.
.rs.properties(item).name:得到ADO的Connection 或 resultset的属性名称
.rs.properties(item):得到ADO的Connection 或Resultset的属性值.
最后,在显示后使用如下的命令,关闭数据库:
rs.close
conn.close
譬如,将查询结果显示于一个表格的程序码如下:
<table border=1>
<tr>
<%for i=0 to rs.fields.count-1 %>
<td><b><%=rs(i).name%></b></td>
<%next%>
</tr>
<%do while not rs.eof%>
<tr>
<%for i=0 to rs.fields.count-1%>
<td valign=top><%=rs(i)%></td>
<%next%>
</tr>
<%
rs.movetext
loop
rs.close
conn.close
%>
</table>
Active Server Pages 简介(9)
查询数据
若要查询数据库的数据,则使用select的sql命令.
select的基本语法如下:
select 字段名#1,字段名#2,...
from 数据表名#1,数据表名#2,...
where 条件表达式
order by 字段名#1,字段名#2,...
.select:所接的字段明为待查询的字段,各字段名之间以逗号隔开.
.from:所接的数据表名称为待查询的数据库数据表名称,各数据表名之间以逗号隔开.
.where:所接的条件表达式为设定的查询条件表达式.
.order by:所接的字段名为排序的字段,将查询的数据加以排序.
指定多个字段时,先以字段名#1排序,若数据相同在按字段#2排序,...,各字段之间以逗号隔开.
更改数据库数据
若要更改数据库的记录,既在数据库中增加,更新,删除记录等,则可使用insert, update, delete的sql命令.