jsp和cgi,jsp和cgi的區別

本文目錄一覽:

什麼是ASP,PHP,CGI,JSP?

與HTML相比,ASP網頁具有6大特點。ASP是Active Server Page的縮寫,意為「活動服務器網頁」。ASP是微軟公司開發的代替CGI腳本程序的一種應用,它可以與數據庫和其它程序進行交互,是一種簡單、方便的編程工具。ASP的網頁文件的格式是.asp,現在常用於各種動態網站中。 ASP是一種服務器端腳本編寫環境,可以用來創建和運行動態網頁或web應用程序。ASP網頁可以包含HTML標記、普通文本、腳本命令以及COM組件等。利用ASP可以向網頁中添加交互式內容(如在線表單),也可以創建使用HTML網頁作為用戶界面的web應用程序。CGI(Common Gateway Interface)是一種共用網關接口,它可以稱之為一種機制.因此您可以使用不同的程序編寫適合的CGI程序,這些程序語言包括Visual Basic、Delphi或C/C++等,您將已經寫好的程序放在WEB服務器的計算機上運行,再將其運行結果通過WEB服務器傳輸到客戶端的瀏覽器上。事實上,這樣的編製方式比較困難而且效率低下,因為你每一次修改程序都必須重新將CGI程序編譯成可執行文件。而ASP與Script(腳本)的編寫方式非常類似,它完全不需要重新編譯成可執行文件就可以直接運行,再者ASP內置的ADO組件,允許用戶通過客戶端瀏覽器存取各種各樣的數據庫。此外,ASP與CGI最大的不同在於對象嚮導和組件重用,ASP除了內置的Request對象、Response對象、Server對象、Session對象、Application對象、ObjectContext對象等基本對象外,另外可以允許用戶以外掛的方式使用ActiveX控件。當然,ASP本身也提供了多個ActiveX控件供使用,這些組件包括廣告輪顯組件、文件存取組件、文件連接組件幾數據庫存取組件等,這些大量擴充且重複使用的組件使ASP的功能遠大於CGI。PHP是一種服務器端HTML-嵌入式腳本描述語言。 其最強大和最重要的特徵是其數據庫集成層,使用它完成一個含有數據庫功能的網頁是不可置信的簡單。在HTML文件中, PHP腳本程序(語法類似於Perl或者c語言)可以使用特別的PHP標籤進行引用, 這樣網頁製作者也不必完全依賴HTML生成網頁了。由於PHP是在服務器端執行的, 客戶端是看不到PHP代碼的。 PHP可以完成任何CGI腳本可以完成的任務,但它的功能的發揮取決於它和各種數據庫的兼容性。 PHP除了可以使用HTTP進行通信,也可以使用IMAP, SNMP, NNTP, POP3協議。JSP(JavaServer Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標準。JSP技術有點類似ASP技術,它是在傳統的網頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件(*.jsp)。Web服務器在遇到訪問JSP網頁的請求時,首先執行其中的程序段,然後將執行結果連同JSP文件中的HTML代碼一起返回給客戶。插入的Java程序段可以操作數據庫、重新定向網頁等,以實現建立動態網頁所需要的功能。JSP與Java Servlet一樣,是在服務器端執行的,通常返回該客戶端的就是一個HTML文本,因此客戶端只要有瀏覽器就能瀏覽。

CGI 、ASP、JSP有什麼區別

JSP是Sun公司推出的新一代網站開發語言,Sun公司藉助自己在Java上的不凡造詣,將Java從Java應用程序和Java Applet之外,又有新的碩果,就是JSP,Java Server Page.JSP可以在Serverlet和JavaBean的支持下,完成功能強大的站點程序. ASP.net 是一種建立在通用語言上的程序構架,能被用於一台Web服務器來建立強大的Web應用程序.ASP.net提供許多比現在的Web開發模式強大的的優勢. 三者都提供在 HTML代碼中混合某種程序代碼,由語言引擎解釋執行程序代碼的能力.但JSP代碼被編譯成 Servlet並由Java虛擬機解釋執行,這種編譯操作僅在對JSP頁面的第一次請求時發生.在ASP ,PHP,JSP環境下,HTML代碼主要負責描述信息的顯示樣式,而程序代碼則用來描述處理邏輯.普通的 HTML頁面只依賴於Web服務器,而ASP ,PHP,JSP頁面需要附加的語言引擎分析和執行程序代碼.程序代碼的執行結果被重新嵌入到HTML代碼中,然後一起發送給瀏覽器.ASP ,PHP,JSP三者都是面向Web服務器的技術,客戶端瀏覽器不需要任何附加的軟件支持. JSP: 1 將內容的產生和顯示進行分離 使用JSP技術,Web頁面開發人員可以使用HTML或者XML標識來設計和格式化最終頁面.使用JSP標識或者小腳本來產生頁面上的動態內容.產生內容的邏輯被封裝在標識和JavaBeans群組件中,並且捆綁在小腳本中,所有的腳本在服務器端執行.如果核心邏輯被封裝在標識和Beans中,那麼其它人,如Web管理人員和頁面設計者,能夠編輯和使用JSP頁面,而不影響內容的產生.在服務器端,JSP引擎解釋JSP標識,產生所請求的內容(例如,通過存取JavaBeans群組件,使用JDBC技術存取數據庫),並且將結果以HTML(或者XML)頁面的形式發送回瀏覽器.這有助於作者保護自己的代碼,而又保證任何基於HTML的Web瀏覽器的完全可用性. 2 強調可重用的群組件 絕大多數JSP頁面依賴於可重用且跨平台的組件(如:JavaBeans或者Enterprise JavaBeans)來執行應用程序所要求的更為複雜的處理.開發人員能夠共享和交換執行普通操作的組件,或者使得這些組件為更多的使用者或者用戶團體所使用.基於組件的方法加速了總體開發過程,並且使得各種群組織在他們現有的技能和優化結果的開發努力中得到平衡. 3 採用標識簡化頁面開發 Web頁面開發人員不會都是熟悉腳本語言的程序設計人員.JavaServer Page技術封裝了許多功能,這些功能是在易用的,與JSP相關的XML標識中進行動態內容產生所需要的.標準的JSP標識能夠存取和實例化 JavaBeans組件,設定或者檢索群組件屬性,下載Applet,以及執行用其它方法更難於編碼和耗時的功能. 由於JSP頁面的內置腳本語言是基於Java程序設計語言的,而且所有的JSP頁面都被編譯成為Java Servlet,JSP頁面就具有Java技術的所有好處,包括健壯的存儲管理和安全性. 作為Java平台的一部分,JSP擁有Java程序設計語言”一次編寫,各處執行”的特點.隨着越來越多的供貨商將JSP支持加入到他們的產品中,您可以使用自己所選擇的服務器和工具,修改工具或服務器並不影響目前的應用. ASP.NET 1.增強的性能.ASP.NET 是在服務器上運行的編譯好的公共語言運行庫代碼.與被解釋的前輩不同,ASP.NET 可利用早期綁定,實時編譯,本機優化和盒外緩存服務.這相當於在編寫代碼行之前便顯著提高了性能. 2.世界級的工具支持.ASP.NET Framework 補充了 Visual Studio 集成開發環境中的大量工具箱和設計器.WYSIWYG 編輯,拖放服務器控件和自動部署只是這個強大的工具所提供功能中的少數幾種. 3.簡易性和可管理性.ASP.NET 使執行常見任務變得容易,從簡單的窗體提交和客戶端身份驗證到部署和站點配置.另外,公共語言運行庫利用託管代碼服務(如自動引用計數和垃圾回收)簡化了開發.ASP.NET 採用基於文本的分層配置系統,簡化了將設置應用於服務器環境和 Web 應用程序.由於配置信息是以純文本形式存儲的,因此可以在沒有本地管理工具幫助的情況下應用新設置.此”零本地管理”哲學也擴展到了 ASP.NET Framework 應用程序的部署.即使是在部署或替換運行的編譯代碼時. 4.可縮放性和可用性.ASP.NET 在設計時考慮了可縮放性,增加了專門用於在聚集環境和多處理器環境中提高性能的功能.另外,進程受到 ASP.NET 運行庫的密切監視和管理,以便當進程行為不正常(泄漏,死鎖)時,可就地創建新進程,以幫助保持應用程序始終可用於處理請求. 5.自定義性和擴展性.ASP.NET 隨附了一個設計周到的結構,它使開發人員可以在適當的級別”插入”代碼.實際上,可以用自己編寫的自定義組件擴展或替換 ASP.NET 運行庫的任何子組件.實現自定義身份驗證或狀態服務一直沒有變得更容易. 應用範圍 ASP是Microsoft開發的動態網頁語言,也繼承了微軟產品的一貫傳統,只能執行於微軟的服務器產品,IIS(Internet Information Server) (windows NT)和PWS(Personal Web Server)(windows 98)上.Unix下也有ChiliSoft的組件來支持ASP,但是ASP本身的功能有限,必須通過ASP+COM的群組合來擴充,Unix下的COM實現起來非常困難. PHP3可在Windows,Unix,Linux的Web服務器上正常執行,還支持IIS,Apache等一般的Web服務器,用戶更換平台時,無需變換PHP3代碼,可即拿即用. JSP同PHP3類似,幾乎可以執行於所有平台.如Win NT,Linux,Unix.在NT下IIS通過一個外加服務器,例如JRUN或者ServletExec,就能支持JSP.知名的Web服務器Apache已經能夠支持JSP.由於Apache廣泛應用在NT,Unix和Linux上,因此JSP有更廣泛的執行平台.雖然現在NT操作系統佔了很大的市場份額,但是在服務器方面Unix的優勢仍然很大,而新崛起的Linux更是來勢不小.從一個平台移植到另外一個平台,JSP和JavaBean甚至不用重新編譯,因為Java位元組碼都是標準的與平台無關的. ASP.NET 基於公共語言運行庫,因此 Web 應用程序開發人員可以利用整個平台的威力和靈活性..NET Framework 類庫,消息處理和數據訪問解決方案都可從 Web 無縫訪問.ASP.NET 也與語言無關,所以可以選擇最適合應用程序的語言,或跨多種語言分割應用程序.另外,公共語言運行庫的交互性保證在遷移到 ASP.NET 時保留基於 COM 的開發中的現有投資.

asp jsp cgi php之間的區別

就我個人的意見,PHP只適合做小型的網站開發,大型的站點就很困難了(能做,但是很痛苦!)

擴充性:

1、PHP用光了自己的一堆函數以後,要擴充似乎是很困難的。據我一位玩PHP和c比較好的朋友說,「可以擴充,要用c來寫,然後編譯進PHP裏面去」。請問,用PHP的朋友中有多少能達到這個水平的?

2、ASP。如果你認為asp只是那幾個response/request等對象,那你錯了。

個人認為,ASP只是一種技術,如果沒有MS的com/com+,asp就什麼都沒有了。說得過份一點,asp本身連一個賦值語句,連一個if都沒有!

正是基於此,ASP擁有很強的擴充性。你不熟悉vbs,你可以用jscript,你可以用perlscript,你可以通過安裝xscript來使用你熟悉的腳本語言。你會vb/delphi/vc/bcb..嗎?那你可以寫自己的組件,然後用asp來使用它。

3、java

同asp一樣,java通過不斷增多的(公司發佈的或是自己編譯的)class來擴展自已。而且jsp與asp相比有一個大的優點:jsp是基於java的,擁有強大的程序語法和天然的平台無關性。

執行效率:

1、PHP是基於解釋型的。

「因為不用編譯而且高階,所以這類語言的程序效率通常很差,又因為原始程序代碼暴露在外,所以拿它來寫寫工具程序自己用可以,但是拿來開發軟件產品比較不恰當(除非你不在乎原始碼外流)。」(此段引用蔡學墉文章「你該學什麼程序語言?」)。

雖然PHP可以通過使用第三方的zend(我對PHP不是太熟悉)來彌補這個缺陷,但是似乎Zend是收費的,而且使用第三方的東西已經不是PHP本身的討論了。

2、ASP

asp發展較早,因此早期的asp1.0、asp2.0、asp3.0都是基於解釋的,有同PHP相同的問題。不過自MS的.net以後,asp.net在第一次加載時進行編譯,並加載於內存中,因此第一次以後的執行效率已經是相當快速了。

3、JSP。

java本身就是屬於編譯的語言,目前的jsp服務器產品大多是做JIT編譯的,JSP在第一次加載時被編譯,因而與PHP相比在執行效率上有明顯的提高。

原創文章,作者:YLNTS,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/324687.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
YLNTS的頭像YLNTS
上一篇 2025-01-13 13:23
下一篇 2025-01-13 13:23

相關推薦

  • Python中new和init的區別

    new和init都是Python中常用的魔法方法,它們分別負責對象的創建和初始化,本文將從多個角度詳細闡述它們的區別。 一、創建對象 new方法是用來創建一個對象的,它是一個類級別…

    編程 2025-04-29
  • Sublime Test與Python的區別

    Sublime Text是一款流行的文本編輯器,而Python是一種廣泛使用的編程語言。雖然Sublime Text可以用於編寫Python代碼,但它們之間有很多不同之處。接下來從…

    編程 2025-04-29
  • Shell腳本與Python腳本的區別

    本文將從多個方面對Shell腳本與Python腳本的區別做詳細的闡述。 一、語法差異 Shell腳本和Python腳本的語法存在明顯差異。 Shell腳本是一種基於字符命令行的語言…

    編程 2025-04-29
  • Python中while語句和for語句的區別

    while語句和for語句是Python中兩種常見的循環語句,它們都可以用於重複執行一段代碼。然而,它們的語法和適用場景有所不同。本文將從多個方面詳細闡述Python中while語…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟件開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29
  • TensorFlow和Python的區別

    TensorFlow和Python是現如今最受歡迎的機器學習平台和編程語言。雖然兩者都處於機器學習領域的主流陣營,但它們有很多區別。本文將從多個方面對TensorFlow和Pyth…

    編程 2025-04-28
  • MySQL bigint與long的區別

    本文將從數據類型定義、存儲空間、數據範圍、計算效率、應用場景五個方面詳細闡述MySQL bigint與long的區別。 一、數據類型定義 bigint在MySQL中是一種有符號的整…

    編程 2025-04-28
  • 麥語言與Python的區別

    麥語言和Python都是非常受歡迎的編程語言。它們各自有自己的優缺點和適合的應用場景。本文將從語言特性、語法、生態系統等多個方面,對麥語言和Python進行詳細比較和闡述。 一、語…

    編程 2025-04-28
  • Python與C語言的區別和聯繫

    Python與C語言是兩種常用的編程語言,雖然兩者都可以用於編寫軟件程序,但是它們之間有很多不同之處。本文將從多個方面對Python與C語言的區別和聯繫進行詳細的闡述。 一、語法特…

    編程 2025-04-28
  • Python中深拷貝和淺拷貝的區別

    本文將從以下幾個方面對Python中深拷貝和淺拷貝的區別做詳細的闡述,包括:拷貝的含義、變量和對象的區別、淺拷貝的示例、深拷貝的示例、可變對象和不可變對象的區別、嵌套的數據結構以及…

    編程 2025-04-28

發表回復

登錄後才能評論