Web開發技術簡介

                                                                                                                                                                    @Mar 18,2014 

Web開發中充斥了太多的技術名詞,本文整理了一下,介紹各個技術適合做什麼。內容主要是:

  -  前臺: HTML(XHTML,CSS),JavaScript( jQuery, AJAX, JSON)

  -  後臺: CGI, ASP,JSP, PHP

需要說的是W3school是一個很好的學習Web技術的網站http://www.w3school.com.cn/)本文內容主要來自該網站

1       HTML

超文本標籤語言,用來寫頁面。下面的html代碼顯示一段文字:

<html>

<body>

<h1> Heading</h1>

<p>This is a paragraph.</p>

</body>

</html>

2       XHTML

XHTML 可擴展超文本標記語言,是作爲一種 XML 應用被重新定義的更嚴謹更純淨的 HTML,是HTML 版本,目標是取代HTML。

3       HTML5

HTML5是下一代的HTML,它將成爲 HTML、XHTML 以及 HTML DOM 的新標準,仍處於完善之中。然而,大部分現代瀏覽器已經具備了某些 HTML5 支持。

HTML5提供了諸多新特性:

  • HTML5 提供了展示視頻的標準
  • 新的表單控件,比如 calendar、date、time、email、url、search
  • 更好本地離線存儲支持,提供兩種在客戶端存儲數據的新方法:沒有時間限制的數據存儲和針對Session的數據存儲,HTML5還可以創建離線緩存,供離線瀏覽
  • 允許網頁自動獲得來自服務器的更新,這一點很重要,在此之前這需要網頁不斷髮送請求來實現。HTML5中通過服務器發送事件,更新能夠自動到達,使用的例子包括網頁聊天應用,火車票量更新,股價動態等
  • 運行在後臺的 JavaScript,不會影響頁面的性能。當在 HTML 頁面中執行腳本時,頁面的狀態是不可響應的,直到腳本已完成,有了後臺的 JavaScript,用戶則可以繼續做動作
  • 提供canvas 元素,可以使用 JavaScript 在網頁上繪製圖像
  • 支持新的特殊內容元素,比如 article、footer、header、nav、section

4       CSS

定義如何顯示html.下面的CSS定義一個一段文字的樣式:

<head>

<style type="text/css">

 .title1 {font:bold14px Arial, Helvetica, sans-serif; color: #993300;line-height:35px; letter-spacing:.2em;margin-top: 10px;

   margin-bottom: 8px; border-bottom: 2px solid #bcbcbc;}

</style>

</head>

<div class="title1">新特性</div>

 

顯示效果如下:


5       CSS3

CSS3是最新的CSS, W3C(W3C 指 World WideWeb Consortium,萬維網聯盟)仍然在對 CSS3 規範進行開發。不過,現代瀏覽器已經實現了相當多的 CSS3 屬性。瀏覽器通常支持CSS2。

使用CSS3可以實現很多特性,如

  • 很容易創建CSS2中需要技巧才能實現的圓角邊框
  • 創建動畫,這可以在許多網頁中取代動畫圖片、Flash 動畫以及 JavaScript
  • 實現過渡效果,即元素從一個樣式到另一個樣式的過渡,如文本從小到大
  • 多列,創建多個列來對文本進行佈局,就像報紙那樣
  • 重設元素尺寸,如用戶可以拖拽大小的文本框
  • 2D/3D轉換,如rotate,scale, translate, matrix,skew
  • 更強大的背景、文本效果,如背景重影,自動換行

6       HTTP協議

HTTP協議(HyperTextTransfer Protocol,超文本轉移協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它是一個應用層協議,由請求和響應構成,是一個標準的客戶端服務器模型。

HTTP是一個無連接無狀態的協議。無連接是指每次只處理一個請求,請求完成後即斷開連接,這樣可以節省傳輸時間。無狀態是指協議對於事務處理沒有記憶能力,所以後續處理需要前面的信息就需要重傳[11]

HTTP/1.1協議定義了多種方法(“動作”)來表明Request-URI指定的資源的不同操作方式,如HEAD,GET,POST。客戶端向服務器發送一個請求,服務器以一個狀態行作爲響應,響應的內容包括:消息協議的版本、成功或者錯誤編碼、服務器信息、實體元信息以及必要的實體內容。

幾個比較重要的HTTP狀態碼:400(Badrequest), 403(Forbidden), 404(Not found),410(Gone,已不存在)。

可以通過Wireshark(一個非常棒的開源網絡包分析軟件)來抓TCP,HTTP包來分析發送過程或調試程序。

Note:HTTP與TCP/IP的關係,TPC/IP協議是傳輸層協議,主要解決數據如何在網絡中傳輸,而HTTP是應用層協議,主要解決如何包裝數據。形象地比喻是 “我們在傳輸數據時,可以只使用(傳輸層)TCP/IP協議,但是那樣的話,如果沒有應用層,便無法識別數據內容,如果想要使傳輸的數據有意義,則必須使用到應用層協議,應用層協議有很多,比如HTTP、FTP、TELNET等,也可以自己定義應用層協議。WEB使用HTTP協議作應用層協議,以封裝HTTP 文本信息,然後使用TCP/IP做傳輸層協議將它發到網絡上。”

  把IP想像成一種高速公路,它允許其它協議在上面行駛並找到到其它電腦的出口。TCP和UDP是高速公路上的“卡車”,它們攜帶的貨物就是像HTTP,文件傳輸協議FTP這樣的協議等[7]

7       TCP/IP

TCP/IP(Transmission Control Protocol/ InternetProtocol傳輸控制協議/網際協議)是針對因特網的通信協議,定義了電子設備(比如計算機)如何連入因特網,以及數據如何在它們之間傳輸。

瀏覽器和服務器都是用該協議。瀏覽器使用TCP/IP 來訪問因特網服務器,服務器使用 TCP/IP 向瀏覽器傳回 HTML。

在 TCP/IP 中包含一系列用於處理數據通信的協議:

  • TCP (傳輸控制協議) - 應用程序之間通信
  • UDP (用戶數據包協議) - 應用程序之間的簡單通信
  • IP (網際協議) - 計算機之間的通信
  • ICMP (因特網消息控制協議) - 針對錯誤和狀態
  • DHCP (動態主機配置協議) - 針對動態尋址

7.1     TCP使用固定的連接

TCP 用於應用程序之間的通信,。

當應用程序希望通過 TCP 與另一個應用程序通信時,它會發送一個通信請求。這個請求必須被送到一個確切的地址。在雙方“握手”之後,TCP 將在兩個應用程序之間建立一個全雙工 (full-duplex) 的通信。

7.2     IP 是無連接的

IP 用於計算機之間的通信,負責將每個包路由至它的目的地。

通過 IP,消息(或者其他數據)被分割爲小的獨立的包,並通過因特網在計算機之間傳送。

7.3       域名

每個計算機必須有一個 IP 地址才能夠連入因特網。數字的地址很難記憶,爲其命名的名稱就是域名,在瀏覽器中鍵入域名,會被一種 DNS 程序翻譯爲數字。在全世界,數量龐大的 DNS 服務器被連入因特網,負責將域名翻譯爲 TCP/IP 地址。

7.4     TCP/IP

TCP/IP 意味着 TCP 和 IP 在一起協同工作。

TCP 負責應用軟件(比如你的瀏覽器)和網絡軟件之間的通信。IP 負責計算機之間的通信。

TCP 負責將數據分割並裝入 IP包,然後在它們到達的時候重新組合它們。IP 負責將包發送至接收者。

8       JavaScript

JavaScript 是一種輕量級語言,被設計爲向 HTML 頁面增加交互性。Javascript可嵌入到html中,由瀏覽器解釋執行。

下面是一個生成文本的JavaScript腳本的例子:

<html>

<body>

<script type="text/javascript">document.write("HelloWorld!")</script>

</body>

</html>

9       jQuery

jQuery是一個JavaScript庫,它極大的簡化了JavaScript的編程。比如JavaScript要根據ID獲取HTML文檔的元素需要這樣寫:document.getElementById(“my_id”),使用jQuery則只需要寫成$(“#my_id”)。

10  JSON

JSON:JavaScript 對象表示法(JavaScriptObject Notation),是存儲和交換文本信息的語法。類似 XML,但更小、更快、更容易解析,語法是 JavaScript 對象表示法語法的子集,能夠用javascript eval()方法進行解析。JSON可使用 AJAX 進行傳輸。

JSON 最常見的用法之一,是從web 服務器上讀取 JSON 數據(作爲文件或作爲 HttpRequest),將 JSON 數據轉換爲 JavaScript 對象,然後在網頁中使用該數據。

11  Cookie

Cookie是網站爲了辨別用戶身份、進行session跟蹤而儲存在用戶本地終端(瀏覽器)上的數據(通常經過加密),比較典型的例子是保存用戶狀態(如網站內不同網頁避免多次登錄),跟蹤用戶行爲(如購物車)等。

Cookie由服務器端生成,發送給客戶端(一般是瀏覽器),瀏覽器會將Cookie的key/value保存到某個目錄下的文本文件內,下次請求同一網站時就發送該Cookie給服務器。Cookie也跨一個域名下的多個網頁使用,但是不能跨域名。

Cookie是瀏覽器提供的一種機制,它將document 對象的cookie屬性提供給JavaScript,可由JavaScript對其進行控制。通過Cookie可以達到JavaScript中全局變量的效果。

需要注意的是瀏覽器可以禁用Cookie,,Cookie可以被用戶刪除,安全性不夠高,不同瀏覽器對Cookie的個數和大小有不同限制。

12  AJAX

AJAX (AsynchronousJavaScript and XML),是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術,用來創建動態性更強的網頁。主要技術仍然是javascript和xml。

由於HTTP是一種無狀態無連接協議,很難實現服務器主動更新,如股價波動、聊天這樣的應用。只

能採用網頁不斷全部刷新或局部刷新(網頁插入一個隱藏的iframe,通過iframe不斷自動刷新或輪詢服務器來更新數據)。

使用Ajax,可以發送異步的HTTP請求,並且可以只對網頁部分內容進行更新。使用AJAX的例子包括新浪微博、Google地圖、開心網等。

HTML5則提供了專用的持久連接套接字,能夠實現真正的服務器主動發數據給客戶端。

ExtJS ExtJS可以用來開發RIA也即富客戶端的AJAX應用,是一個用javascript寫的,主要用於創建前端用戶界面,是一個與後臺技術無關的前端AJAX框架。ExtJS要比開發者直接針對DOM、W3C對象模型開發UI組件輕鬆

13  CGI

CGI(CommonGateway Interface 公共網關接口),是描述符客戶端和服務器程序之間傳輸數據的一種標準,它定義了Web服務器如何向擴展應用程序發送消息,在收到擴展應用程序的信息後又如何進行處理等內容。

CGI程序運行在服務器端,負責響應客戶端發送的請求。CGI的一個目的是獨立於編程語言,因此可以用大多數語言語言來寫,如Java,,C/C++,VB,Perl(字符串處理能力強大)等。

CGI的工作原理是瀏覽器通過HTML表單或超鏈接請求指向HTML或CGI應用程序的URL。在服務器上,運行產着一個守護進程對端口進行監聽來自客戶的請求。當一個請求到來時,將創建一個子進程爲用戶的連接服務。根據請求的不同,服務器返回HTML文件或者調用相應的CGI程序處理。CGI程序處理後將結果格式化爲網絡服務器和瀏覽器能夠理解文檔(通常HTML網頁)返回給瀏覽器。

一個CGI的例子:

Html:

<form method="POST"enctype="multipart/form-data"action="../cgi-bin/Login.cgi">…</form>

CGI:用C實現一個Loin.cgi, main函數根據用戶名和密碼判斷是否登錄成功,然後跳轉到某頁面,生成的Login.exe重命名爲Login.cgi,放到服務器相應目錄。

 

由於每次請求都會創建一個新的進程處理,所以可能會造成服務器負載較大。

FAST-CGI是較新的標準,架構上和CGI大爲不同,是用一個駐留內存的服務進程向網站服務器提供腳本服務,速度和效率比CGI大爲提高[4]。

14  JSP

JSP(Java ServerPages),其根本是一種簡化的Servlet技術。

 

(Java Servlet是一種獨立於平臺和協議的服務器端的Java應用程序,可以生成動態的Web頁面。雖然servlet可以對任何類型的請求產生響應,但通常只用來擴展Web服務器的應用程序。Java Servlet技術爲這些應用程序定義了一個特定於HTTP的servlet類[5]

Servlet與CGI 在傳統CGI中,如果有N個併發的對同一CGI程序的請求,則該CGI程序的代碼在內存中重複裝載了N次;而對於Java Servlet,處理請求的是N個線程,只需要一份Servlet類代碼。在性能優化方面,Servlet也比CGI有着更多的選擇[3]。)

 

JSP允許將Java代碼嵌入到HTML頁面中(通過<%...%>),後綴名.jsp。Web服務器在遇到訪問JSP網頁的請求時,首先執行其中的程序段,然後將執行結果連同JSP文件中的HTML代碼一起返回給客戶端。插入的Java程序段可以操作數據庫、重新定向網頁等,以實現建立動態網頁所需要的功能。

 

Note:普通的 HTML頁面只依賴於Web服務器, JSP頁面需要附加的語言引擎分析和執行程序代碼(ASP和PHP也一樣)。JSP代碼會被編譯成 Servlet並由Java虛擬機解釋執行,這種編譯操作僅在對JSP頁面的第一次請求時發生。

15  Node.js

Node 是一個服務器端JavaScript 解釋器(傳統方式是JavaScript運行在客戶端瀏覽器中),它將改變服務器應該如何工作的概念。它的目標是幫助程序員構建高度可伸縮的應用程序,編寫能夠處理數萬條同時連接到一個(只有一個)物理機的連接代碼。

在 Java和 PHP 這類語言中,每個連接都會生成一個新線程,每個線程要花費一定的資源,這也就決定了一臺機器能夠允許的最大連接數。爲了支持更多客戶,就需要增加服務器。

Node 解決這個問題的方法是:更改連接到服務器的方式。每個連接發射一個在 Node 引擎的進程中運行的事件,而不是爲每個連接生成一個新的 OS 線程(併爲其分配一些配套內存)[9]

Node擅長的地方是處理體積小的請求以及基於事件的I/O,使用Node解決客戶端和服務器之間的快速溝通,如twitter短時間需要處理成千上萬條數據[10]

 

16  參考

[1*] COMET服務器推技術,實現Web服務器“主動”向客戶端發送數據.

http://www.360doc.com/content/11/0617/16/597197_127627804.shtml

[2] CGI和ASP, PHP的關係. http://zhidao.baidu.com/question/81214621.html?qbl=relate_question_0&word=PHP%20CGI

[3] Java Servlet與Applet、CGIJSP的比較.http://developer.51cto.com/art/200907/133695.htm

[4]CGI是什麼. http://zhidao.baidu.com/link?url=-KCy7-dfWkbdeg6rooO0noakdy7i0_6766Gu-Vr3QPkvqcKW2dfETaIcsYIRKkSv-Qb7kEYRXafYehPKqIW9na

[5] JSP. http://baike.baidu.com/link?url=_4hZmFlZeOkBaGKXJmq2mzUYtWzbkobKp0TmfmNqNXj1sb5-0Tu_d6bgdvxm0snR

[6] HTTP超文本傳輸協議. http://baike.baidu.com/link?url=d96fAagW3cPa3yqV6K_se-RYQqAIhXA6Mb58OkPKGl3sjw6A90epuWmK85MuuK64DQcDoikqG7qsMkQu3EEt7a

[7*] TCP/IP、Http的區別.

http://www.cnblogs.com/renyuan/archive/2013/01/19/2867720.html

[8] js中cookie的使用詳細分析. http://cache.baiducontent.com/c?m=9d78d513d9921cf201b6c36a4a5689694312c6212bd6a3086291d60d84642c191761e0ac27554c5395d82f2747f41802bded3574300724a09bbfd20c82&p=917bc64ad4d911a058eb9f66544c96&newp=882a9543dd9915fc57efdc21584381231610db2151d4d71e2580&user=baidu&fm=sc&query=cookie&qid=&p1=6

[9*] Node.js 究竟是什麼?. http://www.ibm.com/developerworks/cn/opensource/os-nodejs/

[10] 什麼是Node.js. http://www.open-open.com/bbs/view/1318473088937

[11*] HTTP 協議詳解. http://blog.csdn.net/gueter/article/details/1524447

[12*] 深入理解HTTP協議. http://www.360doc.com/content/10/0930/17/3668821_57590979.shtml

[13*] Cookie/Session機制詳解. http://blog.csdn.net/fangaoxin/article/details/6952954


 

 

 

 

 

 

 


發佈了40 篇原創文章 · 獲贊 2 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章