AspJZY 问答解惑

2014 年 9 月 5 日4980

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命令.

0 0