在web剛出現(xiàn)時植影,餓哦們只能瀏覽那些頁面樣式簡單的內(nèi)容郭变。如今企垦,web使用各種各樣的技術环壤,來呈現(xiàn)豐富多彩的內(nèi)容。
一钞诡、HTML
? ? 1)web頁面幾乎全由HTML構(gòu)建
HTML(HyperText Markup Language郑现,超文本標記語言)是為了發(fā)送web上的超文本(Hypertext)而開發(fā)的標記語言。超文本是一種文檔系統(tǒng)荧降,可將文檔中任意位置的信息與其他信息(文本或圖片等)建議關聯(lián)接箫,即超鏈接文本。標記語言是指通過在文檔的某個部分穿插特別的字符串標簽朵诫,用來修飾文檔的語言辛友。我們把出現(xiàn)在HTML文檔內(nèi)的這種特殊字符串叫做HTML標簽(Tag)。
平時我們?yōu)g覽的web頁面幾乎全是使用HTML寫成的剪返。由HTML構(gòu)成的文檔經(jīng)過瀏覽器的解析废累、渲染后,呈現(xiàn)出來的結(jié)果就是web頁面脱盲。
一下就是用HTML編寫的文檔的例子邑滨。而這份HTML文檔內(nèi)這種被<>包圍著的文字就是標簽。在標簽的作用下钱反,文檔會改變樣式驼修,或插入圖片殿遂、連接。
? ? 2)HTML的版本
Tim Berners-Lee 提出HTTP概念的同時乙各,還提出了HTML原型墨礁。1993年正在伊利諾伊大學的NCSA(The National Center for Supercomputing Applications,國家超級計算機應用中心)發(fā)布了Mosaic瀏覽器(世界收割圖形界面瀏覽程序),而能夠被Mosaic解析的HTML耳峦,統(tǒng)一標準后即作為HTML1.0發(fā)布恩静。
目前的最新版本是HTML4.01標準,1999年12月W3C(World Wide Web Consortium)組織推薦使用這一版本蹲坷。下一個版本驶乾,預計會在2014年左右正式推薦使用HTML5標準。
HTML5標準不僅解決了瀏覽器之間的兼容性問題循签,并且可把文本作為數(shù)據(jù)對待级乐,更容易復用,動畫等效果也變得更生動县匠。
時至今日风科,HTML仍存在較多懸而未決問題。有些瀏覽器未遵循HTML標準實現(xiàn)乞旦,或擴展自用標簽等贼穆,這都反映了HTML的標準實際上尚未統(tǒng)一這一現(xiàn)狀。
? ? 3)設計應用CSS
CSS(Cascading Style Shess, 層疊樣式表)可以指定如何展望HTML內(nèi)的各種元素兰粉,屬于樣式表標準之一故痊。即使是相同的HTML文檔,通過改變應用的CSS玖姑,用瀏覽器看到的頁面外觀也會隨之改變愕秫。CSS的里面就是讓文檔的結(jié)構(gòu)和設計分離,達到解耦的目的焰络。
實例:
可在選擇器(selector).logo 的指定范圍內(nèi)豫领,使用{}括起來的聲明塊中寫明的padding:20px 等聲明語句應用指定的樣式。
可通過指定的HTML元素或特定的class舔琅、ID等作為選擇器來限定樣式應用范圍。
二洲劣、動態(tài)HTML
? ? 1)讓web頁面動起來的動態(tài)HTML
所謂動態(tài)HTML(Dynamic HTML)备蚓,是指定使用客戶端腳本語言將靜態(tài)的HTML內(nèi)容變成動態(tài)的技術的總稱。鼠標單擊點開的新聞囱稽、Google Maps 等可滾動的地圖就用到了動態(tài)HTML郊尝。
動態(tài)HTML技術是通過調(diào)用客戶端腳本語言JavaScript,實現(xiàn)對HTML的Web頁面的動態(tài)改造战惊。利用DOM( Document Object Model流昏,文檔對象模型)可執(zhí)行欲發(fā)生動態(tài)變化的HTML元素。
? ? 2)更容易控制HTML的DOM
DOM是用以操作HTML文檔和XML文檔的API(Application Programming Interface,應用編程接口)况凉。使用DOM可以將HTML內(nèi)的元素當作對象操作谚鄙,如取出元素內(nèi)的字符串、改變那個CSS的屬性等刁绒,使頁面的設計發(fā)生改變闷营。
通過調(diào)用JavaScript等腳本語言對DOM的操作,可以以更為簡單的方式控制的HTML的改變知市。
比如傻盟,從JavaScript的角度來看,將上述HTML文檔的第三個P元素改變文字顏色時嫂丙,會像下方這樣編寫代碼娘赴。
document.getElementsByTagName('p')語句調(diào)用getElementsByTagName函數(shù),從整個HTML文檔(document object)內(nèi)取出P元素跟啤。接下來的content【2】.style.color='#FF0000'語句指定content的索引為2的元素的樣式顏色改為紅色诽表。
DOM內(nèi)存在各種函數(shù),使用它們可查閱HTML中的各個元素腥光。
三关顷、Web應用
? ? 1)通過Web提供功能的Web應用
Web應用是指通過Web功能提供的應用程序。比如購物網(wǎng)站武福、網(wǎng)上銀行议双、SNS、BBS捉片、搜索引擎和e-learning等平痰。互聯(lián)網(wǎng)(Internet)或企業(yè)內(nèi)網(wǎng)(Intranet)上遍布各式各樣的Web應用伍纫。
原本應用HTML協(xié)議的Web的機制就是對客戶端發(fā)來的請求宗雇,返回事前準備好的內(nèi)容∮ü妫可隨著Web越來越普及赔蒲,僅靠這樣的做法已不足以應對所有的需求,更需要引入由程序創(chuàng)建HTML內(nèi)容的做法良漱。
類似這種有程序創(chuàng)建的內(nèi)容稱為動態(tài)內(nèi)容舞虱,而事先準備好的內(nèi)容稱為靜態(tài)內(nèi)容。web應用則作用于動態(tài)內(nèi)容之上母市。
? ? 2)與Web服務器及程序協(xié)作的CGI
CGI(Common Gateway Interface矾兜,通過網(wǎng)關接口)是指Web服務器在接收到客戶端發(fā)送過來的請求后轉(zhuǎn)發(fā)給程序的一組機制。在CGI的作用下患久,程序會對請求內(nèi)容做出相應的動作椅寺,比如創(chuàng)建HTML等動態(tài)內(nèi)容浑槽。
使用CGI的程序叫做CGI程序,通常是用Perl返帕、PHP桐玻、Ruby和C等編寫語言編寫而成。
有關CGI更為翔實的內(nèi)容請參考RFC2875“ The Common Gateway Interface (CGI)Version 1.1 ”
? ? 3)因Java而普及的Servlet
Servlet(Java Servlet 表示輕量服務程序) 是一種能在服務器上創(chuàng)建動態(tài)內(nèi)容的程序溉旋。Servlet用于Java語言實現(xiàn)的一個接口畸冲,屬于面向企業(yè)級Java的一部分。
之前提及的CGI观腊,由于每次接到請求邑闲,程序都要跟著啟動一次。因此一旦訪問量過大梧油,web服務器要承擔相當大的負載苫耸。而Servlet運行在于web服務器相同的進程中,因此受到的負載較欣茉伞(Servlet常駐內(nèi)存褪子,因此在每次請求時,可啟動相對進程級別更為輕量的Servlet骗村,程序的執(zhí)行效率從而變得更高)嫌褪。Servlet的運行環(huán)境叫做web容器或Servlet容器。
Servlet作為解決CGI問題的對抗技術(說對抗的原因在于胚股,這個方向上已存在用Perl編寫的CGI笼痛,實現(xiàn)在Apache HTTP Server 上內(nèi)置 mod_php 模塊后可運行PHP程序、微軟主導的ASP等技術)琅拌,隨Java一起得到了普及缨伊。
隨著CGI的普及,每次請求都要啟動新CGI程序的CGI運行機制逐漸變成性能瓶頸进宝,所以之后Servlet和Mod_Perl等可直接在web服務器上運行的程序才得以開發(fā)刻坊、普及。
四党晋、數(shù)據(jù)發(fā)布的格式及語言
? ? 1)可控制標記語言
XML(eXtensible Markup Language, 可擴展標記語言)是一種可按應用目標進行擴展的通用標記語言谭胚。旨在通過使用XML,使互聯(lián)網(wǎng)數(shù)據(jù)共享變得更容易未玻。
XML和HTML都是從標準通過標記語言SGML(Standard Generalized Markup Labguage)簡化而成灾而。與HTML相比,它對數(shù)據(jù)的記錄方式做了特殊處理深胳。
下面我們以HTML編寫的某公司的研討會議程為例進行說明。
用瀏覽器打開文檔時铜犬,就會顯示排列的列表內(nèi)容舞终,但如果這些數(shù)據(jù)被其他程序讀取會發(fā)生什么轻庆?某些程序雖然具備可通過識別布局特征取出文本的方法,但這份HTML的樣式一旦改變敛劝,要讀取數(shù)據(jù)內(nèi)容也就變得相對困難了余爆。可見夸盟,為了保持數(shù)據(jù)的正確讀取蛾方,HTML不適合用來記錄數(shù)據(jù)結(jié)構(gòu)。
接著將這份列表以XML的形式改寫就成了以下的示例上陕。
XML和HTML一樣桩砰,使用標簽構(gòu)成樹形結(jié)構(gòu),并且可自定義擴展標簽释簿。
從XML文檔中讀取數(shù)據(jù)比起HTML更為簡單亚隅。由于XML的結(jié)構(gòu)基本上都是用標簽分割而成的樹狀結(jié)構(gòu),因此通過語法分析器(Parser)的解析功能解析XML結(jié)構(gòu)并取出數(shù)據(jù)元素庶溶,可更容易地對數(shù)據(jù)進行讀取煮纵。
更容易地復用數(shù)據(jù)使得XML在互聯(lián)網(wǎng)上被廣泛接受。比如偏螺,可用在2個不同的應用之間的交換數(shù)據(jù)格式化行疏。
? ? 2)發(fā)布更新消息的RSS/Atom
RSS(簡易信息聚合,也叫聚合內(nèi)容)和Atom都是發(fā)布新聞或博客日志等更新信息文檔的格式的總稱套像。兩者都用到了XML酿联。
RSS有以下版本,名稱和編寫方式也不相同凉夯。
RSS0.9(RDF Site Summary):最初的RSS版本货葬。1999年3月由網(wǎng)景通信公司自行開發(fā)用于其門戶網(wǎng)站【⒐唬基礎構(gòu)圖創(chuàng)建在初期的RDF規(guī)格上震桶。
RSS0.91(Rich Site Summary):在RSS0.9的基礎上擴展元素,與1999年7月開發(fā)完畢征绎。非RDF規(guī)格蹲姐,使用XML方式編寫。
RSS1.0(RDF Site Summary):RSS規(guī)格正處于混亂狀態(tài)人柿。2000年12月由RSS-DEV工作組再次采用RSS0.9中使用的RDF規(guī)格發(fā)布柴墩。
RSS2.0(Really Simple Syndication):非RSS1.0發(fā)展路線。增加支持RSS0.91的兼容性凫岖,2000年12月由UserLand Software 公司開發(fā)完成江咳。
Atom具有以下兩種標準。
Atom供稿格式(Atom Syndication Format):為發(fā)布內(nèi)容執(zhí)行的網(wǎng)站消息來源格式哥放,單講Atom時歼指,就是指此標準爹土。
Atom出版協(xié)定(Atom Publishing Protocol):為Web上內(nèi)容的新增或修改二制定的協(xié)議。
用于訂閱博客更新信息的RSS閱讀器踩身,這種應用幾乎支持RSS的所有版本以及Atom胀茵。
實例:
? ? 3)JavaScript衍生的輕量級易用JSON
JSON(JavaScript Object Notation)是一種以JavaScript(ECMAScript)的對象表示法為基礎的輕量級數(shù)據(jù)標記語言。能夠處理的數(shù)據(jù)類型有false/null/true/對象/數(shù)組/數(shù)字/字符串挟阻,這7種類型琼娘。
JSON讓數(shù)據(jù)更輕更純粹,并且JSON的字符串形式可被JavaScript輕易地讀入附鸽。當初配合XML使用的Ajax技術也讓JSON的應用變得更為廣泛脱拼。另外,其他各種編程語言也提供豐富的庫類拒炎。已達到輕便操作JSON的目的挪拟。
有關JSON更為翔實的內(nèi)容請參考RFC4627“The application/json Media Type for javascript Object Notation (JSON)”