<p><b>動態伺服器網頁</b>（英文：<b>A</b>ctive <b>S</b>erver <b>P</b>ages，簡稱<b>ASP</b>），是由微軟公司開發的伺服器端執行的指令碼平台，它被Windows下Internet Information Services (IIS)的程式所管理。透過ActiveX server的技術讓不同的使用者能有不同的畫面，或需要讓他們可以存取伺服器（server）上的資料時，使用ASP3.0中提供了五個內建的物件建立類比和安全性的動態內容，來協助程式設計師隱藏複雜的溝通機制，讓程式設計師可以專注在解決問題和應用之上，這樣可以更快速地開發動態網頁的同時每一個組件都是可以由一組富有經驗的程式設計師根據動態網頁最常用的功能而獨立開發。
</p>


<h2><span id="ASP.E7.9A.84.E7.89.B9.E8.89.B2"></span><span id="ASP的特色">ASP的特色</span></h2>
<p>ASP隱藏了網頁伺服器與瀏覽者之間溝通的繁瑣機制的同時也基於script base的特性，網頁撰寫員可以專心撰寫應用的程式的邏輯部份，再者ASP也像HTML般透過撰寫程式來即時測試網頁是否安全地運行，而不必擔心程式和伺服器不能溝通的問題，另外因為那些script是於發送前於伺服器中先行轉譯處理成為HTML後再而發送至代理伺服器邊的動態網頁技術，不必擔心瀏覽器的支援性，以及網頁撰寫員的程式邏輯像client-side script會被盜用，因此最終瀏覽者只會是使用HTML來瀏覽。
</p><p>利用ASP程式最常用的是Cookies，它利用Session組件實現的。同時還可以利用第三方組件延伸ASP的作用，如利用MailSender組件傳送電子郵件。
</p><p>通過ASP，可以結合HTML網頁、ASP指令和ActiveX元件建立動態、互動且高效的WEB伺服器應用程式。同時，ASP也支援VBScript和JScript等手稿語言，預設為VBScript，而其中JScript是微軟公司的ECMAScript標準的實現，並且有自己的擴充。
</p>
<h3><span id=".E4.BA.94.E4.B8.AA.E5.85.A7.E5.BB.BA.E7.BB.84.E4.BB.B6"></span><span id="五个內建组件">五個內建組件</span></h3>
<ul><li>Application：在一個ASP-based application讓不同使用者共享資訊。</li>
<li>Request：從使用者處理取得資訊</li>
<li>Response：將資訊送給使用者</li>
<li>Server：提供一些Web Server的工具</li>
<li>Session：儲存在一個session內使用者的資訊</li></ul><h3><span id=".E7.89.A9.E4.BB.B6.E7.9A.84.E6.94.AF.E6.8F.B4"></span><span id="物件的支援">物件的支援</span></h3>
<p>ASP對COM的支援會允許撰寫員使用server component（或OLE Automation server）。透過它撰寫員可以發展自己的物件，或將把程式轉成Web-base的介面。
</p>
<ul><li>透過ADO提供對於資料庫的應用。</li>
<li>透過ActiveX的Scripting.FileSystemObject提供對於檔案的操作。</li></ul><h3><span id="Session.E7.9A.84.E7.AE.A1.E7.90.86"></span><span id="Session的管理">Session的管理</span></h3>
<p>ASP在Server端Respondse時會經由HTTP的<b>Set-Cookie</b>的header欄位傳送名為<b>ASPSESSIONID</b>的<span data-orig-title="Session ID" data-lang-code="en" data-lang-name="英語" data-foreign-title="Session ID"><span>Session ID</span></span>。而使用者端的瀏覽器在收到這個Session ID之後，會在下次的Request時，經由HTTP的<b>Cookie</b>的header欄位再把這個Session ID傳給Server，藉以讓Server區分是同一個瀏覽者，以獲得其專用的Session變數存取。這個機制可應用於帳號登入，在Session TimeOut被清除之前，只要瀏覽者沒關閉瀏覽器，就能持續保持帳號登入的狀態‧
</p><p>此外，ASP可以經由檔案Global.asa裡的兩個事件處理（Session_OnStart與Session_OnEnd）去控制該瀏覽者Session的建立與結束的額外處理。這可以用來作為統計實際線上人數之用。
</p>
<h2><span id=".E7.89.88.E6.9C.AC"></span><span id="版本">版本</span></h2>
<p>ASP目前最新的版本為3.0，與Windows 2000一起發行，並內植於IIS 5.0中。
</p>
<ul><li>ASP 1.0內含於Windows NT 4.0 Service Pack 3（IIS 3.0）發行。</li>
<li>ASP 2.0內含於Windows NT 4.0 Option Pack，與IIS 4.0一起亮相。</li></ul><p>自ASP 3.0發行後，除了各版本對它的安全性或問題修補外，對主要功能都沒有再進一步的更新。
Windows Server 2003發行的ASP也是3.0版本。
</p><p>其後繼者ASP+（即ASP.NET），已內含於.NET Framework中持續演化。
</p>
<h2><span id=".E5.8E.9F.E7.90.86"></span><span id="原理">原理</span></h2>
<p>ASP是經過伺服器解析之後再向網頁瀏覽器返回資料，所以有了ASP就不必擔心客戶的瀏覽器是否能執行你所編寫的代碼。因為所有的程式都將在網頁伺服器端執行，包括所有嵌在普通HTML中的指令碼程式。當程式執行完畢後，伺服器僅將執行的結果返回給客戶瀏覽器，這樣也就減輕了客戶端瀏覽器的負擔，大大提高了互動的速度。
</p><p>由於代碼是需要經過伺服器執行之後才向瀏覽器傳送的，所以在客戶端看到的只能是經過解析之後的資料，而無法獲得原始碼，故編寫者不用擔心自己的原始碼會被別人剽竊。但不排除駭客利用系統漏洞竊取伺服器端的ASP原始碼。
</p><p>基於這樣的解析方式，也導致執行ASP頁面相對於普通的HTML頁面要慢一點。因為普通的HTML頁面只需要瀏覽器就能夠解析，而ASP則必須是伺服器將整頁的代碼都執行一遍之後再傳送資料。
</p><p>ASP提供與資料庫的互動，如Microsoft SQL Server、Microsoft Access、MySQL和Oracle，比較流行的是ASP和Microsoft SQL Server的組合。
</p>
<h2><span id=".E8.8C.83.E4.BE.8B"></span><span id="范例">範例</span></h2>
<p>ASP程式（包括與資料庫連線的部分）都是嵌入在普通HTML和其他客戶端語言中的。例如
</p>

<p>ASP語言是嵌入在「&lt;%...%&gt;」之間的部分。而這個程式最終結果將是:
</p>

<h2><span id=".E5.8F.82.E8.A7.81"></span><span id="参见">參見</span></h2>
<ul><li>Microsoft FrontPage</li>
<li><span data-orig-title="Visual InterDev" data-lang-code="en" data-lang-name="英語" data-foreign-title="Visual InterDev"><span>Visual InterDev</span></span></li>
<li>ASP.NET</li>
<li>.NET框架</li>
<li>PHP</li>
<li>JSP</li></ul><h2><span id=".E5.A4.96.E9.83.A8.E9.93.BE.E6.8E.A5"></span><span id="外部链接">外部連結</span></h2>
<ul><li>ASP on MSDN（頁面存檔備份，存於網際網路檔案館）</li>
<li>如何從動態伺服器網頁（Active Server Page）模擬使用者（頁面存檔備份，存於網際網路檔案館）</li></ul><dl><dt>應用或比較</dt></dl><ul><li>asp實踐經驗記錄</li>
<li>Active Server Pages是什麼？（頁面存檔備份，存於網際網路檔案館）</li>
<li>ASP.NET與ASP的差異</li></ul><dl><dt>替代產物</dt></dl><ul><li>ArrowHead ASP Server（將ASP轉移到Java的平台下去類比ASP的運作）</li>
<li>Cloudfoundry ASP</li>
<li>Apache::ASP（頁面存檔備份，存於網際網路檔案館）（在Apache上加上Perl支援後去跑名為ASP的網頁）</li></ul><!-- 
NewPP limit report
Parsed by mw2316
Cached time: 20230502194703
Cache expiry: 1814400
Reduced expiry: false
Complications: [show‐toc]
CPU time usage: 0.406 seconds
Real time usage: 0.534 seconds
Preprocessor visited node count: 2510/1000000
Post‐expand include size: 342479/2097152 bytes
Template argument size: 2742/2097152 bytes
Highest expansion depth: 16/100
Expensive parser function count: 36/500
Unstrip recursion depth: 0/20
Unstrip post‐expand size: 894/5000000 bytes
Lua time usage: 0.133/10.000 seconds
Lua memory usage: 7780972/52428800 bytes
Number of Wikibase entities loaded: 1/400
--><!--
Transclusion expansion time report (%,ms,calls,template)
100.00%  327.620      1 -total
 40.08%  131.296      1 Template:Infobox_software
 32.07%  105.063      2 Template:Infobox
 26.76%   87.669      5 Template:Navbox
 21.95%   71.920      1 Template:Microsoft_APIs
 17.84%   58.436     31 Template:Tsl
 17.16%   56.226      1 Template:NoteTA
  7.76%   25.417      1 Template:Software_version
  5.67%   18.567      1 Template:Wikidata
  5.24%   17.179      1 Template:Start_date_and_age
--><!-- Saved in parser cache with key zhwiki:pcache:idhash:26148-0!userlang=zh-tw!zh-tw and timestamp 20230502194702 and revision id 77008935. Rendering was triggered because: page-view
 -->
**動態伺服器網頁**（英文：**A**ctive **S**erver **P**ages，簡稱 **ASP**），是由微軟公司開發的伺服器端執行的指令碼平台，它被 Windows 下 Internet Information Services (IIS) 的程式所管理。透過 ActiveX server 的技術讓不同的使用者能有不同的畫面，或需要讓他們可以存取伺服器（server）上的資料時，使用 ASP3.0 中提供了五個內建的物件建立類比和安全性的動態內容，來協助程式設計師隱藏複雜的溝通機制，讓程式設計師可以專注在解決問題和應用之上，這樣可以更快速地開發動態網頁的同時每一個組件都是可以由一組富有經驗的程式設計師根據動態網頁最常用的功能而獨立開發。

## ASP 的特色

ASP 隱藏了網頁伺服器與瀏覽者之間溝通的繁瑣機制的同時也基於 script base 的特性，網頁撰寫員可以專心撰寫應用的程式的邏輯部份，再者 ASP 也像 HTML 般透過撰寫程式來即時測試網頁是否安全地運行，而不必擔心程式和伺服器不能溝通的問題，另外因為那些 script 是於發送前於伺服器中先行轉譯處理成為 HTML 後再而發送至代理伺服器邊的動態網頁技術，不必擔心瀏覽器的支援性，以及網頁撰寫員的程式邏輯像 client-side script 會被盜用，因此最終瀏覽者只會是使用 HTML 來瀏覽。

利用 ASP 程式最常用的是 Cookies，它利用 Session 組件實現的。同時還可以利用第三方組件延伸 ASP 的作用，如利用 MailSender 組件傳送電子郵件。

通過 ASP，可以結合 HTML 網頁、ASP 指令和 ActiveX 元件建立動態、互動且高效的 WEB 伺服器應用程式。同時，ASP 也支援 VBScript 和 JScript 等手稿語言，預設為 VBScript，而其中 JScript 是微軟公司的 ECMAScript 標準的實現，並且有自己的擴充。

### 五個內建組件

* Application：在一個 ASP-based application 讓不同使用者共享資訊。
* Request：從使用者處理取得資訊
* Response：將資訊送給使用者
* Server：提供一些 Web Server 的工具
* Session：儲存在一個 session 內使用者的資訊

### 物件的支援

ASP 對 COM 的支援會允許撰寫員使用 server component（或 OLE Automation server）。透過它撰寫員可以發展自己的物件，或將把程式轉成 Web-base 的介面。

* 透過 ADO 提供對於資料庫的應用。
* 透過 ActiveX 的 Scripting.FileSystemObject 提供對於檔案的操作。

### Session 的管理

ASP 在 Server 端 Respondse 時會經由 HTTP 的 **Set-Cookie** 的 header 欄位傳送名為 **ASPSESSIONID** 的 Session ID。而使用者端的瀏覽器在收到這個 Session ID 之後，會在下次的 Request 時，經由 HTTP 的 **Cookie** 的 header 欄位再把這個 Session ID 傳給 Server，藉以讓 Server 區分是同一個瀏覽者，以獲得其專用的 Session 變數存取。這個機制可應用於帳號登入，在 Session TimeOut 被清除之前，只要瀏覽者沒關閉瀏覽器，就能持續保持帳號登入的狀態・

此外，ASP 可以經由檔案 Global.asa 裡的兩個事件處理（Session\_OnStart 與 Session\_OnEnd）去控制該瀏覽者 Session 的建立與結束的額外處理。這可以用來作為統計實際線上人數之用。

## 版本

ASP 目前最新的版本為 3.0，與 Windows 2000 一起發行，並內植於 IIS 5.0 中。

* ASP 1.0 內含於 Windows NT 4.0 Service Pack 3（IIS 3.0）發行。
* ASP 2.0 內含於 Windows NT 4.0 Option Pack，與 IIS 4.0 一起亮相。

自 ASP 3.0 發行後，除了各版本對它的安全性或問題修補外，對主要功能都沒有再進一步的更新。
Windows Server 2003 發行的 ASP 也是 3.0 版本。

其後繼者 ASP+（即 ASP.NET），已內含於.NET Framework 中持續演化。

## 原理

ASP 是經過伺服器解析之後再向網頁瀏覽器返回資料，所以有了 ASP 就不必擔心客戶的瀏覽器是否能執行你所編寫的代碼。因為所有的程式都將在網頁伺服器端執行，包括所有嵌在普通 HTML 中的指令碼程式。當程式執行完畢後，伺服器僅將執行的結果返回給客戶瀏覽器，這樣也就減輕了客戶端瀏覽器的負擔，大大提高了互動的速度。

由於代碼是需要經過伺服器執行之後才向瀏覽器傳送的，所以在客戶端看到的只能是經過解析之後的資料，而無法獲得原始碼，故編寫者不用擔心自己的原始碼會被別人剽竊。但不排除駭客利用系統漏洞竊取伺服器端的 ASP 原始碼。

基於這樣的解析方式，也導致執行 ASP 頁面相對於普通的 HTML 頁面要慢一點。因為普通的 HTML 頁面只需要瀏覽器就能夠解析，而 ASP 則必須是伺服器將整頁的代碼都執行一遍之後再傳送資料。

ASP 提供與資料庫的互動，如 Microsoft SQL Server、Microsoft Access、MySQL 和 Oracle，比較流行的是 ASP 和 Microsoft SQL Server 的組合。

## 範例

ASP 程式（包括與資料庫連線的部分）都是嵌入在普通 HTML 和其他客戶端語言中的。例如

ASP 語言是嵌入在「<%...%>」之間的部分。而這個程式最終結果將是:

## 參見

* Microsoft FrontPage
* Visual InterDev
* ASP.NET
* .NET 框架
* PHP
* JSP

## 外部連結

* ASP on MSDN（頁面存檔備份，存於網際網路檔案館）
* 如何從動態伺服器網頁（Active Server Page）模擬使用者（頁面存檔備份，存於網際網路檔案館）

**應用或比較**

* asp 實踐經驗記錄
* Active Server Pages 是什麼？（頁面存檔備份，存於網際網路檔案館）
* ASP.NET 與 ASP 的差異

**替代產物**

* ArrowHead ASP Server（將 ASP 轉移到 Java 的平台下去類比 ASP 的運作）
* Cloudfoundry ASP
* Apache::ASP（頁面存檔備份，存於網際網路檔案館）（在 Apache 上加上 Perl 支援後去跑名為 ASP 的網頁）
.asp