📄 2.htm
字号:
<FONT COLOR = ORANGE> Good Evening! </FONT>
<% End If %></pre>
</font>
</div>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">
虽然每一网页都有其主指令档语言,但在同一ASP网页内也可以使用一种以上的指令档语言。您可以为应用程式在Internet Services
Manger里设定一种主语言,为此,请使用declaratives(也就是@-directives)来给网页定义主指令档语言。有关宣告指令档语言的更详细资讯,请参阅IIS
5.0线上说明文件。</font></p>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">
ASP子程式和函式可以在任何指令档语言内,但是如果把它们定义为与主语言外的指令档关联,您会受到主指令档语言所限制。若要改变子程式的指令档语言,则需使用HTML<SCRIPT>
标记来定义,同时,也要新增 RUNAT=SERVER属性,以说明该指令档应在伺服器而非用户端上执行。</font></p>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">
下面的范例显示了如何联合不同的指令档语言和子程式宣告类型到单个 ASP档案中:</font></p>
<div style="line-height: 25px; background-color: #d7d7d7">
<font face="Arial" size="3" style="line-height: 25px">
<pre style="line-height: 25px"><%@ LANGUAGE="VBScript" %>
<HTML>
<HEAD>
<% Sub InlineSub %>
This text won't be displayed until this subroutine is called.<br>
<% End Sub %>
<SCRIPT LANGUAGE="VBScript" RUNAT=SERVER>
'Immediate script (outside a function).
Response.Write "This text is displayed last"
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript" RUNAT=SERVER>
function TestJavaScript (str) {
Response.Write (str);
}
</SCRIPT>
<SCRIPT LANGUAGE="PerlScript" RUNAT=SERVER>
sub TestPerlScript {
$Response->Write ( $_ [0] );
}
</SCRIPT>
</HEAD>
<BODY BGCOLOR=#FFFFFF>
<%
Response.Write "This is VBScript<br>"
TestJavaScript "This is JavaScript<br>"
TestPerlScript "This is PerlScript<br>"
InlineSub
%>
</BODY>
</HTML></pre>
</font>
</div>
<hr style="line-height: 25px">
<p>
<font face="Arial" color="#3e77d7" size="3" Black style="line-height: 25px">
<b style="line-height: 25px">说明</b></font> </p>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">您可以使用
<SCRIPT> 标记来包含立即伺服器端指令档,但它必须在整个网页处理完後才会被执行。在引入 <% %> 分隔符号之前,先前版本的ASP使用
<SCRIPT> 标记,但现在不建议使用它们来包含立即指令档,伺服器端 <SCRIPT> 标记应只用来定义函式。</font></p>
<hr style="line-height: 25px">
<p><font face="arial" color="#3e74d7" size="3" style="line-height: 25px">
<b style="line-height: 25px">ASP网页内的指令档执行动作<br style="line-height: 25px">
</b></font></p>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">
当您在编写ASP应用程式时,您是在IIS 5.0和HTTP的世界里操作。想想图2-4所显示的程序。</font></p>
<p><br style="line-height: 25px">
</p>
<center style="line-height: 25px">
<p>
<input id="4" onclick="imgclick" type="image" src="f02dd04.gif" border="0" style="line-height: 25px" width="493" height="278"></p>
</center><center style="line-height: 25px">
<table border="0" style="line-height: 25px">
<tbody style="line-height: 25px">
<tr style="line-height: 25px">
<td align="middle" style="line-height: 25px">
<font face="arial" color="#000000" size="2" style="line-height: 25px">
图2-4 从IIS 5.0中请求一个 .asp档案</font></td>
</tr>
</table>
</center>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">
当用户端浏览器请求一个ASP网页时,会按下列顺序发生数个事件:</font></p>
<font face="arial" color="#000000" size="2" style="line-height: 25px">
<ol style="line-height: 25px">
<li style="line-height: 25px">用户端发出HTTP Request到Web伺服器请求一个ASP网页。 </li>
<li style="line-height: 25px">因为该网页有 .asp副档名,服务(IIS
5.0)认为它是一个指令档对应档案,并将它发给适当的ISAPI延伸来处理(在这里是Asp.dll)(若用户端请求 HTML档案则没有这个步骤)。
</li>
<li style="line-height: 25px">ASP ISAPI在编译任何伺服器端指令档前先处理所有的伺服器端包含指令,然後执行指令档,并把动态文字(如果有的话)与将传回用户端的网页合为一体(这一步仅在网页被第一次请求时发生,之後预先编译的网页就能从伺服器端快取记忆体中重新取得,使执行速度得以更快)。
</li>
<li style="line-height: 25px">
伺服器建立送回用户端结果的HTML网页。网页一面产生一面发出;如果回应在缓冲区则一次全部发出。 </li>
<li style="line-height: 25px">
一但用户端收到ASP网页,便会装载所有用户端物件和Java小程式,执行所有立即用户端指令档程式码,并根据HTML说明来显示网页。</li>
</ol>
</font>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">
这个过程看似简单,但要注意用户端和伺服器的数量可能是成百上千,且相隔甚远,因此一旦发生问题,就必须确定错误发生的位置是在用户端上,还是在伺服器上?了解每个操作发生的时间也同样重要;在ASP完成第叁步骤的处理以及伺服器在第四步骤发出回应之後,伺服器将去处理其他活动和其他用户端。用户端要重获伺服器注意的唯一方法就是透过HTTP协定重新请求另一网页。换句话说,在用户端与伺服器之间并无真正的连线,这是一个非常重要的概念。</font></p>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">
有时开发人员会试图从用户端存取伺服器端指令档或物件,或从伺服器存取用户端物件或指令档。例如,用户端程式码试图存取ASP的一个内建物件,如<font face="arial" color="#3e80d7" size="2" style="line-height: 25px"><b style="line-height: 25px"> Session </b></font>物件,这样的尝试肯定会失败,因为在用户端上执行的程式码没有任何存取位於伺服器上的物件的途径。典型的错误讯息如下所示:</font></p>
<div style="line-height: 25px; background-color: #d7d7d7">
<font face="Arial" size="3" style="line-height: 25px">
<pre style="line-height: 25px">VBS Script Error: Object Required: Session</pre>
</font>
</div>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">
下面是一个伺服器端指令档试图控制用户端指令档的范例,假设开发人员想用伺服器端指令档来填写一个叫ListBox1的用户端控制项,他使用下面的指令:</font></p>
<div style="line-height: 25px; background-color: #d7d7d7">
<font face="Arial" size="3" style="line-height: 25px">
<pre style="line-height: 25px"><% ListBox1.AddItem Value1 %></pre>
</font>
</div>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">
问题在於当执行伺服器端程式码时,包含此清单方块的HTML网页并不存在,所以这个指令便产生了错误。</font></p>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">
另一方面,您可以用伺服器端程式码来产生填写清单方块的用户端程式码。例如,您可以建立一个<font face="arial" color="#3e80d7" size="2" style="line-height: 25px"><b style="line-height: 25px"> Window_OnLoad </b></font>事件,该视窗和它的子控制一经建立就由浏览器立即执行。下面的程式码使用伺服器端指令档来提供<font face="arial" color="#3e80d7" size="2" style="line-height: 25px"><b style="line-height: 25px"> AddItem </b></font>方法,其值存於变数Value1、Value2和Value3里。</font></p>
<div style="line-height: 25px; background-color: #d7d7d7">
<font face="Arial" size="3" style="line-height: 25px">
<pre style="line-height: 25px"><SCRIPT LANGUAGE="VBScript">
<!--
Sub Window_OnLoad ( )
ListBox1.AddItem "<%= Value1 %>"
ListBox1.AddItem "<%= Value2 %>"
ListBox1.AddItem "<%= Value3 %>"
End Sub
-->
</SCRIPT></pre>
</font>
</div>
<hr style="line-height: 25px">
<p>
<font face="Arial" color="#3e77d7" size="3" Black style="line-height: 25px">
<b style="line-height: 25px">说明</b></font> </p>
<p><font face="arial" color="#000000" size="2" style="line-height: 25px">
如果使用HTML <SELECT> 标记来
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -