ASP是基于WINDOWS平臺的,簡單易用,由于是運行在WINDOWS平臺上,所以移植性不好,不能跨平臺運行.但是國內現在大部分的網站都是使用它來開發的.
PHP是一種開源且跨平臺的WEB編程語言,在歐美都比較的流行,最近在國內也很受許多網站開發者的歡迎.開發效率高,成本低.
JSP是了SUN公司推出的一種網絡編程語言,比較難學(是網上公認的),跨平臺運行.安全性比較高,運行效率也比較的快.備受企業級的公司及銀行金融機構使用.
ASP.NET 從某種意義上說應該是ASP版本的升級,但是它又不完全是從ASP上升級來的,ASP.NET的推出是微軟為了與SUN公司的JSP在網絡上的迅猛發展抵抗的,.NET架構現在有許多人都在學習,主要是開發的效率比較的高.但是還是基于WIN平臺運行,不能跨平臺.
ASP簡介
ASP,英文全稱為 Active Server Pages。
ASP 是一種動態網頁 ,文件后綴名為.asp。
ASP 網頁是包含有服務器端腳本 (server-side script ) 的 HTML 網頁。Web 服務器會處理這些腳本,將其轉換成 HTML 格式,再傳到客戶的瀏覽器端。
HTML 和 ASP 的區別
HTML是編寫網頁的最簡單的語言。HTML 只能用于編寫靜態的網頁 。
當一個用戶瀏覽器從 Web 服務器要求一個 HTML 網頁時,Web 服務器就將這個網頁直接發送給用戶瀏覽器,不經過計算處理。然后用戶瀏覽器會處理該網頁的 HTML 代碼 ,然后將結果顯示出來 。
而ASP 的處理過程則更復雜些。當一個用戶瀏覽器從 Web 服務器 要求一個 ASP 網頁時,Web 服務器會將這個 ASP 文件發送給 Web 服務器的 ASP 引擎,ASP 引擎則將該 ASP 網頁中所有的服務器端腳本 轉換成 HTML 代碼,然后將所有 HTML 代碼發送給用戶瀏覽器。
ASP能干什么?
它是網頁最合適的腳本語言。
用 HTML, CSS 已經能夠編寫非常漂亮的靜態網頁,但是這些網頁缺乏和用戶的互動性 。
比如,你需要為你的網站增加用戶注冊和登錄的功能;你可能還需要做一些網上調查,了解用戶對于某個事件或者產品的反饋;你還可能需要一個電子商務網站,及時發布產品信息和滿足用戶在線訂購的需要......編寫 ASP 動態網頁能夠幫助你實現這些和用戶互動的功能。
動態與靜態內容
動態內容為什么這么熱門?假設您正在管理有 10 個產品的電子商務站點。只要產品不是經常變動或者預料到它不會有太大的變動,那么手工編寫 10 個帶有必要的信息、表單和諸如此類內容的靜態產品頁面是不困難的。但是,假設您在本月再要添加 10 個或更多產品,然后在下個月要更多,而且價格有時會變動或者想改變站點的觀感。那么您就會陷入用手工重新編寫數十個,也許上百個靜態頁面的困境中。
而假設您從創建product.asp頁面開始。它沒有靜態信息,而是編碼成可以從產品數據庫中提取信息并動態地構建一個頁面。然后您就擁有了一個元數據頁面,它可以根據存儲在數據庫中的信息提供一個、一百個、甚至十萬個單獨頁面。現在網站管理員不再整天都簡單重復更新靜態頁面的工作,因為在更新公司數據庫中的信息同時就可以更新頁面上的信息。這樣就消除了令人頭疼的時間延遲(在數據庫中更改信息和在網站上顯示信息之間的時間間隔)。
PHP介紹
如果您從事基于 Web 的開發工作,那么可能已經聽說過 PHP。您也許不太確切地知道 PHP 是什么、如何工作或者為什么如此熱門,但現在該是進一步了解 PHP 的時候了。因此本文簡要介紹了關于 PHP 基礎的基本概念。
一點背景知識
PHP 是作為一個小開放源碼,隨著越來越多的人意識到它的實用性從而逐漸發展起來。Rasmus Lerdorf 在 1994 年發布了 PHP 的第一個版本。從那時起它就飛速發展,并在原始發行版上經過無數的改進和完善現在已經發展到版本 4.0.3 。
PHP 是一種嵌入在 HTML 并由服務器解釋的腳本語言。它可以用于管理動態內容、支持數據庫、處理會話跟蹤,甚至構建整個電子商務站點。它支持許多流行的數據庫,包括 MySQL、PostgreSQL、Oracle、Sybase、Informix 和 Microsoft SQL Server。
總體來說,PHP 很適合 Web 上的工作。但它并不是唯一的方法;如 Perl、Java、JavaScript、ASP、Python、Tcl、CGI 以及其它許多方法都可以生成動態的內容。但是,PHP 的優點是:它是專為基于 Web 的問題而設計的以及它是開放源碼。
PHP 適用的平臺
大多數常規 PHP 的安裝通常是與 Linux 或各種 UNIX 上的 Apache 一起運行的 PHP 模塊。但是如果正在使用其它平臺,不要擔心。PHP 可以在 Windows NT 和 9x 以及其它許多 Web 服務器上運行。可以在主要介紹 Apache/Linux/PHP 組合的一些網站上找到更多有關 PHP 的文檔,但它并不是支持 PHP 的唯一平臺。
許可證和使用
購買具有全部功能的嵌入式 Web 腳本語言要花多少錢?一分錢不花?PHP 是一個開放源碼項目,所以沒有購買許可證的費用或限制使用的問題。您可以使用 PHP 來運行小的、非贏利性站點,或者運行十億美元的電子商務網站,而且成本是一樣的:零。不僅如此,如果想要或需要修改 PHP,可以修改它。
PHP 并沒有得到 GPL 的許可,但它自己的許可證允許重新分發代碼和/或二進制文件。
JSP簡介
jsp(JavaServer Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準,其網址為http://www.javasoft.com/prodUCts/jsp。該技術為創建顯示動態生成內容的Web頁面提供了一個簡捷而快速的方法。JSP技術的設計目的是使得構造基于Web的應用程序更加容易和快捷,而這些應用程序能夠與各種Web服務器,應用服務器,瀏覽器和開發工具共同工作。 JSP規范是Web服務器、應用服務器、交易系統、以及開發工具供應商間廣泛合作的結果。在傳統的網頁Html文件(*htm,*.html)中加入Java程序片段(Scriptlet)和JSP標記(tag),就構成了JSP網頁(*.jsp)。Web服務器在遇到訪問JSP網頁的請求時,首先執行其中的程序片段,然后將執行結果以HTML格式返回給客戶。程序片段可以操作數據庫、重新定向網頁以及發送 email 等等,這就是建立動態網站所需要的功能。所有程序操作都在服務器端執行,網絡上傳送給客戶端的僅是得到的結果,對客戶瀏覽器的要求最低,可以實現無Plugin,無ActiveX,無Java Applet,甚至無Frame。
JSP技術在多個方面加速了動態Web頁面的開發:
一.將內容的生成和顯示進行分離
使用JSP技術,Web頁面開發人員可以使用HTML或者XML標識來設計和格式化最終頁面。使用JSP標識或者小腳本來生成頁面上的動態內容(內容是根據請求來變化的,例如請求帳戶信息或者特定的一瓶酒的價格)。生成內容的邏輯被封裝在標識和JavaBeans組件中,并且捆綁在小腳本中,所有的腳本在服務器端運行。如果核心邏輯被封裝在標識和Beans中,那么其他人,如Web管理人員和頁面設計者,能夠編輯和使用JSP頁面,而不影響內容的生成。在服務器端,JSP引擎解釋JSP標識和小腳本,生成所請求的內容(例如,通過訪問JavaBeans組件,使用JDBCTM技術訪問數據庫,或者包含文件),并且將結果以HTML(或者XML)頁面的形式發送回瀏覽器。這有助于作者保護自己的代碼,而又保證任何基于HTML的Web瀏覽器的完全可用性。
二.強調可重用的組件
絕大多數 JSP頁面依賴于可重用的,跨平臺的組件(JavaBeans或者Enterprise JavaBeansTM組件)來執行應用程序所要求的更為復雜的處理。開發人員能夠共享和交換執行普通操作的組件,或者使得這些組件為更多的使用者或者客戶團體所使用。基于組件的方法加速了總體開發過程,并且使得各種組織在他們現有的技能和優化結果的開發努力中得到平衡。
三.采用標識簡化頁面開發
Web頁面開發人員不會都是熟悉腳本語言的編程人員。JavaServer Page技術封裝了許多功能,這些功能是在易用的、與JSP相關的XML標識中進行動態內容生成所需要的。標準的JSP標識能夠訪問和實例化JavaBeans組件,設置或者檢索組件屬性,下載Applet,以及執行用其他方法更難于編碼和耗時的功能。
通過開發定制化標識庫,JSP技術是可以擴展的。今后,第三方開發人員和其他人員可以為常用功能創建自己的標識庫。這使得Web頁面開發人員能夠使用熟悉的工具和如同標識一樣的執行特定功能的構件來工作。
JSP技術很容易整合到多種應用體系結構中,以利用現存的工具和技巧,并且擴展到能夠支持企業級的分布式應用。作為采用Java技術家族的一部分,以及Java 2(企業版體系結構)的一個組成部分,JSP技術能夠支持高度復雜的基于Web的應用。
由于JSP頁面的內置腳本語言是基于Java編程語言的,而且所有的JSP頁面都被編譯成為Java Servlet,JSP頁面就具有Java技術的所有好處,包括健壯的存儲管理和安全性。作為Java平臺的一部分,JSP擁有Java編程語言“一次編寫,各處運行”的特點。隨著越來越多的供應商將JSP支持添加到他們的產品中,您可以使用自己所選擇的服務器和工具,更改工具或服務器并不影響當前的應用。當與Java 2平臺,企業版(J2EE)和Enterprise JavaBean技術整合時,JSP頁面將提供企業級的擴展性和性能,這對于在虛擬企業中部署基于Web的應用是必需的。
四.技術分析
Microsoft 公司的 ASP 技術也是動態網頁開發技術。JSP和ASP從形式上非常相似,ASP程序員一眼就能認出<% %>以及<%= %>。但是深入探究下去會發現它們很多的差別,其中最主要的有以下三點:
1、 JSP的效率和安全性更高
ASP以源碼形式存放,以解釋方式運行,每次ASP網頁調用都需要對源碼進行解釋,運行效率不高。另外,IIS的漏洞曾使得許多網站源程序大曝光,包括筆者以前用ASP開發的網站,ASP程序全部被人下載了去。JSP在執行以前先被編譯成字節碼 (byte code),字節碼由Java虛擬機 (Java Virtual Machine)解釋執行,比源碼解釋的效率高;服務器上還有字節碼的Cache機制,能提高字節碼的訪問效率。第一次調用 JSP網頁可能稍慢,因為它被編譯成Cache,以后就快得多了。同時,JSP源程序不大可能被下載,特別是JavaBean程序完全可以放到不對外的目錄中。
2、 JSP的組件 (Component) 方式更方便
ASP通過COM來擴充復雜的功能,如文件上載、發送email以及將業務處理或者復雜計算分離出來成為獨立可重復利用的模塊。JSP通過JavaBean實現了同樣的功能擴充。在開發方面,COM的開發遠比 JavaBean復雜和繁瑣,學會ASP不難,但學會開發COM可不簡單。而JavaBean就簡單多了,從本文上述示例中可以看出開發JavaBean 很方便。在維護方面,COM必須在服務器上注冊,如果修改了COM程序,就必須重新注冊,甚至必須關機和重新啟動。JavaBean則不需要注冊,放在CLASSPATH包含的目錄中就行了。如果 JavaBean進行了修改,則JSWDK和Tomcat現在還需要關閉和重新運行(但不是關機),但開發者已經許諾將在以后的版本中做到不需要關閉服務器。另外JavaBean是完全的OOP,可以針對不同的業務處理功能方便地建立一整套可重復利用的對象庫,例如用戶權限控制、email自動回復等等。
3、 JSP的適應平臺更廣
ASP目前僅適用于NT和IIS。雖然Unix下有ChiliSoft的插件來支持ASP,但是ASP本身的功能有限,必須通過ASP+COM的組合來擴充,Unix下的COM實現起來非常困難。
ASP.NET
1.1 什么是ASP.net
ASP.net 是一種建立在通用語言上的程序構架,能被用于一臺Web服務器來建立強大的Web應用程序。ASP.net提供許多比現在的Web開發模式強大的的優勢。
執行效率的大幅提高
ASP.net是把基于通用語言的程序在服務器上運行。不像以前的ASP即時解釋程序,而是將程序在服務器端首次運行時進行編譯,這樣的執行效果,當然比一條一條的解釋強很多。
世界級的工具支持
ASP.net 構架是可以用Microsoft(R)公司最新的產品 Visual Studio.net開發環境進行開發,WYSIWYG(What You See Is What You Get所見即為所得)的編輯。這些僅是ASP.net強大化軟件支持的一小部分。
強大性和適應性
因為ASP.net是基于通用語言的編譯運行的程序,所以它的強大性和適應性,可以使它運行在Web應用軟件開發者的幾乎全部的平臺上(筆者到現在為止只知道它只能用在Windows 2000 Server上)。通用語言的基本庫,消息機制,數據接口的處理都能無縫的整合到ASP.net的Web應用中。ASP.net同時也是language -independent語言獨立化的,所以,你可以選擇一種最適合你的語言來編寫你的程序,或者把你的程序用很多種語言來寫,現在已經支持的有C#(C ++和Java的結合體),VB,Jscript。將來,這樣的多種程序語言協同工作的能力保護您現在的基于COM+開發的程序,能夠完整的移植向 ASP.net。
簡單性和易學性
ASP.net是運行一些很平常的任務如表單的提交客戶端的身份驗證、分布系統和網站配置變得非常簡單。例如ASP.net頁面構架允許你建立你自己的用戶分界面,使其不同于常見的VB-Like界面。另外,通用語言簡化開發使把代碼結合成軟件簡單的就像裝配電腦。
高效可管理性
ASP.net使用一種字符基礎的,分級的配置系統,使你服務器環境和應用程序的設置更加簡單。因為配置信息都保存在簡單文本中,新的設置有可能都不需要啟動本地的管理員工具就可以實現。這種被稱為"Zero Local Administration"的哲學觀念使Asp.net的基于應用的開發更加具體,和快捷。一個ASP.net的應用程序在一臺服務器系統的安裝只需要簡單的拷貝一些必須得文件,不需要系統的重新啟動,一切就是這么簡單。
多處理器環境的可靠性
ASP.net已經被刻意設計成為一種可以用于多處理器的開發工具,它在多處理器的環境下用特殊的無縫連接技術,將很大的提高運行速度。即使你現在的 ASP.net應用軟件是為一個處理器開發的,將來多處理器運行時不需要任何改變都能提高他們的效能,但現在的ASP確做不到這一點。
自定義性,和可擴展性
ASP.net設計時考慮了讓網站開發人員可以在自己的代碼中自己定義"plug-in"的模塊。這與原來的包含關系不同,ASP.net可以加入自己定義的如何組件。網站程序的開發從來沒有這么簡單過。
安全性
基于Windows認證技術和每應用程序配置,你可以確性你的原程序時絕對安全的。
]]>
支持,所有的Web控件都從基類System.Web.UI.WebControls.WebControl中繼承了一個叫做CssClass的屬性。
]]>
C#與js腳本的一樣,VB.net同asp的語法一樣。
]]>
目前,ASPX文件只支持C#、Visual Basic.NET、Jscript.NET和J#(目前國內比較流行的是C#)但是你使用code-ehind(代碼分離)的方法創建一個獨立代碼文件,你就可以使用任何.NET編譯器支持的語言來實現功能了。
]]>
目前,ASP.NET還只能運行在微軟的Windows 2000、Windows XP、Windows 2003和Windows2008的下,當然是需要IIS支持的,最初要讓Windows NT4.0也支持ASP.NET,但可能微軟是有些技術問題或市場考慮,還沒有實現NT下的ASP.NET的支持。
php中怎么實現加密和怎么實現解密里。其實很簡單。php有很多函數給大家用。今天就簡單的寫一段代碼給大家。代碼入邪 以下是代碼片段:
<?php
$key = "www.multiweal.cn!!!";
function keyED($txt,$encrypt_key)
{
$encrypt_key = md5($encrypt_key);
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++)
{
if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
$ctr++;
}
return $tmp;
}
function encrypt($txt,$key)
{
srand((double)microtime()*1000000);
$encrypt_key = md5(rand(0,32000));
$ctr=0;
$tmp = "";
for ($i=0;$i<strlen($txt);$i++)
{
if ($ctr==strlen($encrypt_key)) $ctr=0;
$tmp.= substr($encrypt_key,$ctr,1) .
(substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
$ctr++;
}
return keyED($tmp,$key);
}
function decrypt($txt,$key)
{
$txt = keyED($txt,$key);
$tmp = "";
for ($i=0;$i<strlen($txt);$i++)
{
$md5 = substr($txt,$i,1);
$i++;
$tmp.= (substr($txt,$i,1) ^ $md5);
}
return $tmp;
}
使用測試:
$string = "029900.com!!!";
//加密并把加密的值給$enc_text
$enc_text = encrypt($string,$key);
//解密并把加密的值給$dec_text
$dec_text = decrypt($enc_text,$key);
//打印:
print "Original text : $string <Br>";
print "Encrypted text : $enc_text <Br>";
print "Decrypted text : $dec_text <Br>";
?>
看了些PHP的基礎知識,自己在這里總結下:
1、在HTML嵌入PHP腳本有三種辦法: .
|
以下為引用的內容: <? <?php |
還有一種嵌入方式,即使用和Asp相同的標記<%%>,但要修改PHP.ini 相關配置,不推薦使用。 本站所提供的攝影照片,插畫,設計作品,如需使用,請與原作者聯系。
2、PHP注釋分單行和多行注釋,和java注釋方式相同。 。
| 以下為引用的內容: <? //這里是單行注釋 echo"test"; /* 這里是多行注釋!可以寫很多行注釋內容 */ ?> |
3、PHP主要的數據類型有5種,integer,double,string,array,object。 .
4、函數內調用函數外部變量,需要先用global進行聲明,否則無法訪問,這是PHP與其他程序語言的一個區別。事例代碼: 本站所提供的攝影照片,插畫,設計作品,如需使用,請與原作者聯系。
|
以下為引用的內容: functiontest2(){ |
注意:PHP可以在函數內部聲明靜態變量。用途同C語言中。 ...
5、變量的變量,變量的函數 .
|
以下為引用的內容: <? functionfunc_1(){ functionfun($callback){ fun("func_1");//這樣將輸出"test" |
6、PHP同時支持標量數組和關聯數組,可以使用list()和array()來創建數組,數組下標從0開始。如: .
|
以下為引用的內容: $b["foo"]=13; . $a[]="hello";//$a[2]="hello" $name[]="jill";//$name[0]="jill" |
一、jdk配置:
1、設置JAVA_HOME變量為java的主目錄c:\jdk1.5.0_06:
$JAVA_HOME=c:\jdk1.5.0_06; //jdk安裝路徑
2、把java的bin目錄路徑c:\jdk1.5.0_06\bin添加到PATH環境變量中
$PATH=c:\jdk1.5.0_06\bin;
測試java環境:進入命令提示符(開始->運行->輸入cmd),輸入命令java -version
查看版本是否正確
輸入javac -help查看是不是正確的提示,如果提示“不是內部或外部命令,也不是可運行的程序或批處理文件”,則說明沒有把path路徑設置好。
二、tomcat配置:
設置環境變量:$TOMCAT_HOME=c:\tomcat5.5; //tomcat路徑
安裝tomcat默認的端口是8080,如果你需要改成其它的話,(如80等)
打開文件conf/server.xml,找到
<Connector port=”8080″ maxHttpHeaderSize=”8192″
maxThreads=”150″ minSpareThreads=”25″ maxSpareThreads=”75″
enableLookups=”false” redirectPort=”8443″ acceptCount=”100″
connectionTimeout=”20000″ disableUploadTimeout=”true” />
將8080改成你需要的端口即可。
<% … %> 與 <script runat="server">…</script>
它們都是服務器端的腳本,同時被處理執行。他們執行時是作為一個整體的。
<% … %> 與 <script language="…">…</script>
前者是服務器端腳本,后者是客戶端腳本。前者先執行,后者后執行。
其實也不盡然,二者的腳本是有可能在同時被執行的,但空間不同,仍然是:前者在服務器上執行,后者在客戶端瀏覽器里執行。前者在邏輯上一定提前于后者執行。同時我們也得到結論:在同一個頁面的執行中,客戶端腳本無論如何不能反饋給服務器端腳本,也就是說,客戶端瀏覽你的留言本并且提交新留言或者是任何客戶端腳本獲取的值都不可能在同一次服務器響應中被處理。
關于組件的調用
注意服務器端腳本和客戶端腳本都是腳本,自然都可以創建xmlhttp組件、ADODB.Connection組件等,但是并不是放在哪里都可以的。
xmlhttp如果用于服務器的抓取網頁(比如采集)就要在服務器腳本里創建了,而如果是用于客戶端的ajax無刷新而后臺訪問服務器端的頁面,那么就是運行于客戶端的了,自然在客戶端創建。
ADODB.Connection組件用于訪問數據庫,一般來說在服務器端創建,畢竟是服務器端的asp程序在跑數據庫的數據,但如果你的數據庫真的是在客戶端連接的,那么就毫無疑問在客戶端腳本里創建了。
總之,矛盾著的事物及其每一個側面各有其特點。不同事物有不同的矛盾;同一事物在發展的不同過程和不同階段上有不同的矛盾;同一事物中的不同矛盾、同一矛盾的兩個不同方面各有其特殊性(看不懂的可以略去不看……)。這一原理要求我們堅持具體問題具體分析原則,在矛盾普遍性原理的指導下,具體分析矛盾的特殊性,并找出解決矛盾的正確方法。反對千篇一律地采用一種方法解決不同事物的矛盾。“一把鑰匙開一把鎖,到什么山唱什么歌”講的就是這個道理。
服務器端VBScript腳本創建對象使用Server.CreateObject(className)方法,客戶端VBScript腳本創建對象使用CreateObject(className)方法。
典型錯誤
<%
Function TSize(b)
'這是我自定義的函數
TSize="中國"
end function
%>
<a href="javascript:<%TSize('變量')%>" >點這里要使用我定義的函數</a>
錯誤分析:
混淆了服務器端腳本和客戶端腳本的區別。實際執行時我們會發現,客戶端根本沒有收到什么TSize之類的代碼,因為TSize是服務器端的程序,被引擎處理之后(注意引擎對于函數的處理,純粹是給服務器端腳本調用的,不會發回到客戶端)就消失了,不可能在客戶端起作用。這就是說,客戶端腳本無法直接調用服務器端腳本的函數。
事實上,這個程序是有語法錯誤的,引擎處理這段內容的時候先找到了<%和%>之間的內容,也就是<%TSize('變量')%>,顯然這段內容不符合VBScript的語法規則。嗯,改成<%=TSize("變量")%>在服務器端腳本就沒有語法錯誤了,這時TSize函數可以正常返回值"中國",于是客戶端收到的href屬性是這樣寫的:"javascript:中國",是無法執行的。
服務器端腳本對客戶端腳本的影響
前面已經說過了,服務器端腳本在邏輯上是提前于客戶端腳本的執行的,因此這樣的代碼是可行的:
<%
Dim i
For i=1 to 5
Response.Write "<script type=""text/javascript"">" _
& "alert('Hello World!" & i & "')</script>"
Next
%>
關于Response.Redirect與javascript的執行問題
注意以下代碼的寫法是錯誤的:
<%
Response.Redirect "index.asp"
Response.Write "<script type=""text/javascript"">" _
& "alert('密碼錯誤!')</script>"
%>
這是一種常見的錯誤,編寫者常常以為,這樣寫代碼可以使客戶端先彈出“密碼錯誤”的提示然后轉向到index.asp,事實上這不可能發生,即使將兩行代碼順序交換,也不可能達到這種效果。
究其原因,和服務器對于兩行代碼的處理方式有關。這兩行代碼不可能同時起作用。
Response.Write是向客戶端發送一段文本,這段文本的內容可以是一段腳本,那么客戶端瀏覽器收到后可以執行這段腳本,注意,要收到之后才能執行。
而Response.Redirect是向客戶端發送了一個HTTP頭信息(什么是HTTP頭信息?這么說吧,比如對客戶端Cookies的寫入是HTTP頭信息,HTTP頭信息在HTTP的主體之前發回客戶端瀏覽器,這就是為什么有時我們把服務器的緩沖關閉之后修改Cookies會出錯的原因,因為主體已經開始傳送,不允許發送HTTP頭信息了。),信息的內容告訴客戶端瀏覽器應該跳轉頁面瀏覽,注意,這個Redirect信息是立刻起作用的,也就是說這個Redirect信息具有排他性,在緩沖打開的情況下,無論已經使用Response.Write向緩沖里寫入了多少內容,一旦調用Response.Redirect,將會清空緩沖,并且向客戶端瀏覽器發送這個頭指令。如果動態跟蹤一下程序的執行,我們還會發現,在調用了Response.Redirect之后,程序停止執行了,所以注意服務器端程序在調用Response.Redirect之前要做好數據連接的關閉等操作。
那么上面的例子應該怎樣修改呢?如果你不愿意修改那個index.asp以加入腳本提示的話,那么只能將轉向指令放到客戶端腳本中執行,就像這樣:
<%
Response.Write "<script type=""text/javascript"">" _
& "alert('!');location.href='index.asp'</script>"
%>