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