書-1.1web開發背景知識
摘自jsp+servlet+tomcat 應用開發,從零開始學這本書
本節的重點是介紹web開發的一些基本知識,在本節中首先簡單介紹web訪問的基本原理,然後對http超文字傳輸協議進行簡單介紹,最後介紹靜態網頁與動態網頁的區別,以及各種web伺服器的優缺點。
1.1.1web訪問的基本原理
web訪問可以簡單劃分為兩個過程:客戶端請求、伺服器端相應並顯示結果。客戶端的請求通過servlet引擎傳遞給servlet模組,web伺服器接收客戶的請求,並把處理結果返回給客戶。客戶端與伺服器之間的通訊協議就是http超文字協議。客戶端與伺服器之前的請求模式如圖所示:
1.1.2http超文字傳輸協議
超文字傳輸協議(hypertext transfer protocol,簡稱http)是一種網際網路上應用最為廣泛的網路協議,它是一種無狀態的協議。自1990年起,就已經被應用於www全球資訊服務系統。所有的www都必須遵守這個標準。
http協議的主要特點:
1、簡單快速:客戶端向伺服器請求服務時,只需傳送請求方法和路徑url。請求方法有get和post.
2、靈活:http允許傳輸任意型別的資料,例如:普通文字、超文字、音訊、視訊等,它主要由content-type控制。
3、無狀態:無狀態是指對於資料庫事務處理沒有記憶能力,後續的處理如果需要前面的資訊,則需要重新發送。
4、無連線:是每次連線只處理一次請求,處理完檔次請求後斷開連線。
1.1.3靜態網頁和動態網頁
在網站設計中,直接使用html標記語言編寫的網頁通常被稱作靜態網頁,靜態網頁是標準的html檔案,它的字尾名是.html或.htm。它所展示的內容一般是固定不變的,早期的網站一般都是由靜態網頁製作的,更新起來比較麻煩,需要將更新的html網頁重新上傳到網站伺服器中。這樣的網頁缺乏靈活性,同時網站的維護成本也比較高。動態網頁技術的出現改變了如此不靈活的狀態,使用者在不同時間或不同地點訪問統一動態網頁時顯示的內容可以是不同的。
所謂靜態網頁與動態網頁,是基於訪問網頁時頁面的內容有無變化而言的,與頁面的視覺效果沒有關係。因為動態的視覺效果是js或其他jquery技術實現的,與動態網頁技術沒有直接必要的聯絡。
動態網頁中的變化內容大部分是來自與資料庫中資料的變化。它是通過增加、刪除、修改、查詢資料庫中儲存的資料來顯示內容的變化。動態頁面在被訪問時,首先執行服務端指令碼,通過它生成網頁內容。顯然,動態網頁的顯示內容是在訪問該網頁的時候動態生成的,而靜態網頁是提前做好放在伺服器中的,因此,當前網路上的網頁大多是動態頁面。
目前比較流行的動態網頁技術主要包含:asp、php、以及jsp。
asp更精確地說應該一箇中間件,它將web上的請求轉入到iis直譯器中,iis將asp上的script指令碼全部解析執行。其缺點就是不能跨平臺,只能在window平臺下,開發受到諸多限制。其優點是微軟提供了強大的IDE,所以開發者容易上手且開發效率也較高。
php是當前比較流行的動態網頁技術,是一種html內嵌式的語言,其語法融合了java、c、以及perl,能夠比CGI更加快速的執行動態網頁。其優點是開源,跨平臺,正因為其具有開源和跨平臺特性,所以很多網站都採用php編寫自身的網頁;其缺點是安裝複雜,需要新增很多的外部庫來支援,如圖形需要gd庫等。
CGI(common gateway interface) 也是一種動態網頁技術,雖然功能強大,但是由於程式設計困難,效率低下,修復複雜等缺陷,逐漸被新技術淘汰。
JSP(java server pages,簡稱jsp)採用java語言作為伺服器端指令碼,頁面由HTML和嵌入java程式碼組成。目前,隨著java的廣泛應用,jsp的應用也非常廣泛。其優點是簡單易用,完全面向物件,具有java的平臺無關性和安全可靠性。
1.1.4 web瀏覽器和web伺服器
1.web瀏覽器
瀏覽器是指web服務的客戶端瀏覽程式。它可以向伺服器傳送各種請求,並對從伺服器中返回的各種資訊(包括文字、超文字、音訊、視訊等各種資料)進行解釋、顯示和播放。現如今,web瀏覽器有很多,國外的有ie,firefox,opera(歐朋),chrome,國內的有360,qq,搜狗,獵豹,遨遊等。國內的瀏覽器大多利用ie支援的核心,而國外的瀏覽器核心是自主研發的。
2.web伺服器
瀏覽器與伺服器的關係可謂是“脣齒相依“,瀏覽器傳送請求,伺服器處理請求並將結果返回給瀏覽器顯示。web伺服器的種類繁多,目前比較流行的是websphere,weblogic,tomcat等。它們的配置、啟動方式各不相同。
websphere:IBM基於java開發,但是不開源;
weblogic:效能穩定,開發標準,很多國內大的公司都在使用它;
tomcat:輕量型,使用廣泛。