開發前的必備知識

所謂的動態網頁是在網頁上的資料是動態的、會變動的。只要有資料變動,瀏覽網頁時會是更新的網頁。常見的 ASP, PHP .. 通常能從網址列分辨。但透過一些設定,能夠隱藏實際存取的網址。因此,從網址來判斷伺服器網頁技術其實也都是不準確的。



靜態網頁

網頁上的資料不經過程式編譯,原封不動直接提供網際網路下載。下載的資料是靜態的,而不是指頁面上呈現的畫面靜態。畫面可能是FLASH影片或是JavaScript或其他瀏覽器外掛程式提供會「動」的內容。這個概念有時候很難讓人理解,在國內外都延伸出許多討論,比如那web2.0是什麼?1.0有出現過嗎?在程式設計師眼中的分辨方式非常簡單,有伺服器語支持的就是動態網頁,反之則是靜態網頁。有的時候從網址可能無法分辨,但是對於瀏覽資料的使用者來說並沒有什麼區別。

動態網頁

使用搜尋引擎查詢「動態伺服器網頁」,能得到大量的微軟ASP的相關資訊。很容易讓初次接觸此領域的國人認定ASP就是一生的最愛,甚至連教學的老師也不例外。這一點就要完全承認微軟對ASP的全名Active Server Pages命名是他得已立足在非英語系國家的優勢。PHP的全名就是「program homepage」,PHP的原始設計者只是為了要維護個人網頁,而用c語言開發的一些CGI工具程式集(在台灣版的維基百科竞然沒有此記載,是非常有趣的一件事)。PHP缺乏規模支援與多層結構支援。簡單來說就是不適合運用在電子商務中。JSP技術則很容易整合到多種應用體系結構中,以利用現存的工具和技巧,並且擴展到能夠支援企業級的分佈式應用。作為採用Java技術家族的一部分JSP的全名就是「Java Server Page」,JSP技術能夠利用Java的強大後勤支援高度複雜的網頁的應用。JSP在國內較少獲得教學機構的支持,原因可以參考Java講義的第一、二篇文章。PHP有時則能獲得資工背景的教學登場,因為PHP主要的語法與UNIX系列的作業系統指令相近。國內大專院校大都以ASP為教材,除了名字記之外,綁架套裝軟體則是最大主因。


Request / Response

瀏覽器透過網路發送http協議發送請求,往後稱為「request」。伺服器收到request後分析路徑所對應的伺服器指令,經過一連串的分派、處理後將結果回應稱為「response」。 伺服器上的軟體要透過網路卡接收卡來自網路的request,而網路卡必須根據作業系統與硬體規範提供連接埠才能夠正確的將request傳給伺服器。若伺服器上的服務沒有設定為預設的http協議80埠,就必須根據伺服器的設定輸入網址。如http://127.0.0.1:8080

request: 客戶端要求
response: 伺服器回應


URL

Uniform Resource Locator統一資源定位符,有時也被俗稱為「url或網址」,如同在網路上的門牌。在斜線之前都歸網路設備,斜線後才是設備上的網頁程式伺服器軟體的工作。不同的伺服器軟體有不同的分析策略,有些直接以資料夾路徑如HTML、PHP、ASP、JSP...,有些則是以設定檔為主如servlet。

request

HTTP協議找到服務器的網址後傳過去的東西稱為「request」裡面的東西叫「封包」。request內容包含一些明碼的東西如客戶端IP位址、瀏覽器、URL及參數等會被經過的網路節點攔截,內容也包含一些加密後只有伺服器端看的懂的資料,後面將會對「GET」、「POST」、「表單」做相關介紹。

form

表單是各種網頁元件的容器,裝在容器裡面的東西如文字方塊、下接選單等,有8種方式 送到伺服器上的某個程式去處理。如下所示「OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT」
過去的年代會依8種模式達到多顆按鈕的網頁介面,在servlet中則能輕易的根據按鈕的html名稱分辨。雖然servlet也有定義對應的8種方法,但是只需要牢記「submit」方法就可以了。


post

讀取網址後方的參數名稱和值,往後統稱為「paramater」透過 request.getParameter(參數名稱)接收參數值。這種方法稱為「post」。如http://127.0.0.1:8080/indexjspn?name=john


get

頁面表單有許多物件,如文字方塊、下接選單等。程式讀取物件的值要透過 request.getAttribute(物件名稱)接收參數值。這種方法稱為「get」。

session

客戶端與伺服器互動主要靠網頁,而網頁有許多不確定因素使網頁程式的流程可能被混淆,如上一頁、下一頁、跳別頁或關閉網頁等..所有意想不到的惡搞方法。因此伺服器軟體必須利用記憶體儲存每個客戶端目前的工作進度,以便隨時中斷或繼續如會員證入、購物、投票等。正確的使用session能得到很高的程式設計彈性,但是濫用則會造成系統災難性的失敗。


請以目前對動態網頁的認知完成以下示意圖



若以「茫茫大海」泛指J2EE以外所有的程式語與開發框架的總合,J2EE領域就是「宇宙」。J2EE包含Java的所有方法,也能自訂或引用新方法。全世界的Java資源幾乎都是開放的,任何人都能取用並延伸出新方法。因此造就J2EE王者的地位,久久無法動搖。而學習J2EE必須穩紮穩打,絕對不能腦想要一步登天。高高在上的各種J2EE框架,不管是輕量級、重量級其實都是源自於J2SE、servlet規範。而在此之前除了程式語法、物件導向概念、,計算機概論、作業系統、資料結構、線性代數以及演算法都是不可少的。

沒有留言:

張貼留言