JavaWeb開發學習(一)-JavaWeb開發概述

一、Web相關概念

  Web程序也就是通常所說的網站,由服務器、客戶端瀏覽器以及網絡組成。Web程序的好處是使用簡單,不須要安裝、學習,有一臺電腦、一根網線就可使用。Web程序不是通常意義上的網站。網站的目的是提供信息服務,重在內容,程序每每比較簡單。但一個Web程序每每比較複雜,背後結合數據庫等技術。web

  按照是否須要訪問網絡,程序可分爲網絡程序和非網絡程序。其中網絡程序又分爲B/S和C/S結構。C/S是指客戶端(Client)/服務器(Server)模式。這種模式的客戶端須要安裝一個桌面程序。桌面程序負責與服務器進行數據交換。通常的網絡程序都是C/S結構,例如QQ、MSN、PP Live、迅雷等。B/S是指瀏覽器(Browser)/服務器(Server)模式。通常的網站都是B/S結構的,例如Google、百度。數據庫

二、Web開發背景知識

2.1 Web訪問的基本原理

  (1)用戶打開瀏覽器,輸入網站的URL地址,也就是是一般說的網址。這個地址告訴瀏覽器要訪問互聯網中的哪臺主機。編程

  (2)瀏覽器尋找到指定的主機以後,向Web服務器發出請求(request)。瀏覽器

  (3)Web服務器接受請求並作出相應的處理,生成處理結果,大多數生成HTML格式,也有其餘響應的格式。服務器

  (4)服務器把響應的結果返回發送給服務器。網絡

  (5)瀏覽器接收到相對應的響應結果後,在瀏覽器中顯示響應結構,好比Web頁面。性能

圖1.1 瀏覽器訪問Web過程學習

2.2 HTTP超文本傳輸協議

  HTTP協議是瀏覽器和服務器之間的應用層通訊協議,它是基於TCP/IP之上的協議,不只保證正確傳輸超文本文檔,還肯定傳輸文檔中的那一部分,以及哪一部份內容首先顯示(如文本先於圖片)等。下面介紹基於HTTP協議的客戶端/服務器模式的信息交換過程,它分爲4個過程:創建鏈接。發送請求信息、發送響應信息、關閉鏈接。網站

  · 創建鏈接:鏈接的創建是經過申請套接字(Socket)實現的。客戶端打開一個套接字並把它約束在一個端口上,若是成功,就至關於創建了一個虛擬文件。之後就能夠在該虛擬文件上些數據並經過網絡向外傳送。編碼

  · 發送請求:打開一個鏈接後,客戶機把請求消息送到服務器的停留端口上,完成提出的請求動做。

  · 發送響應:服務器在處理完餓虎短的請求以後,要向客戶機發送響應消息。

  · 關閉鏈接:客戶和服務器雙方均可以經過關閉套接字來結束TCP/IP對話。

2.3 Web瀏覽器

  目前,有不少Web瀏覽器,主流的瀏覽器有:IE、Firefox、Opera、Chrome等。

2.4 Web服務器

  在服務器端,與通訊相關的處理都是由服務器軟件負責,這些服務器軟件都由第三方的軟件廠商提供,開發人員只須要把功能代碼部署在Web服務器中,客戶端就能夠經過瀏覽器訪問到這些功能代碼,從而實現向客戶提供的服務,經常使用的服務器有:

    · IIS是微軟提供的一種Web服務器,提供對ASP語言良好的支持,經過插件的安裝,也能夠提供對PHP語言的支持。

    · Apache服務器是由Apache基金組織停工的一種Web服務器,提供對JSP和Servlet的支持,經過安裝插件,一樣能夠提供對PHP語言的支持,可是Tomcat只是一個輕量級的JavaWeb容器,像EJB這樣的服務在Tomcat中是不能運行的。

    · JBoss是一個開源的重量級的Javaweb服務器,在JBoss中,提供對J2EE各類規範的良好支持,並且JBoss經過了Sun公司的J2EE認證,是Sun公司承認的J2EE容器。

    · 另外J2EE的服務器還有BEA的Weblogic和IBM的WebSphere等,適合大型的商業應用。這些產品的性能都是很是優秀的,能夠提供對J2EE的良好支持。

3 Web開發技術

3.1 Java Servlet

  Sun公司在上世紀90年代末就發佈了基於Servlet的Web服務器。爲了確保加載在各個類之間不起衝突,已經創建了一個稱爲Java Servlet API(應用編程接口)的編碼標準。如今基本上全部的服務器都遵循這個編碼標準,因此Servlet有很好的移植性。如今的Web服務器已經集成了Servlet容器,Servlet容器負責管理加載、卸載、從新加載和之行Servlet代碼等操做。  

  與傳統的CGI程序相比,Servlet有以下幾個優勢:

    · 只須要啓動一個操做系統進程以及加載一個JVM,大大的下降了系統的開銷。

    · 若是多個請求須要作一樣處理的時候,這時只須要加載一個類,這也大大下降了開銷。

    · 全部動態加載的類能夠實現對網絡協議以及請求解碼的代碼共享,大大下降了工做量。

    · Servlet可以直接和Web服務器交互,而普通的CGI程序不能。Servlet還能在各個程序之間共享數據,使得數據庫鏈接池之類的功能很容易實現。

  雖然Servlet改變了傳統CGI程序的缺點,可是它也有不足的地方:Servlet能夠創建動態生成的網頁,而網頁中能夠包含從服務器斷的Java對象所得到的數據。可是Servlet生成網頁的方法是在Java類中嵌入HTML標籤和表達式。也就是說對HTML坐一個小小的改動是,都須要修改和從新編譯Servlet 源文件,而後從新部署到Servlet容器中。或許設計HTML頁面和編寫Servlet代碼的不是同一我的,這就使得修改Servlet變得很是麻煩。

3.2 JSP: Servlet的模板

  Java Server Page(JSP)是一種實現普通靜態HTML和動態HTML混合編碼的技術,它是Servlet API的一個擴展。因爲JSP頁面在編譯成Servlet以前也是可使用的,因此它具備了Servlet的全部優勢,包括訪問Java API。又因爲JSP是嵌入到Servlet中關於應用程序的通常表達代碼,因此能夠把它當作一種「完全」的Servlet。訪問一個JSP網站的過程如圖1.2所示。

圖1.2 JSP頁面訪問示意圖

3.3 JSP基本原理

  Web容器處理JSP文件請求須要通過三個階段:

    · 翻譯階段:在這一階段,編寫好的JSP文件首先會被Web容器中的JSP引擎轉換成Java源代碼,也就是經過Servlet引擎。

    · 編譯階段:JSP文件所翻譯成的Java源代碼會被編譯成可執行的字節碼(可執行的字節碼是二進制格式)。

    · 請求階段:當容器接受了客戶端的請求以後,就執行前面已經編譯成二進制字節碼的JSP文件。出來請求以後,容器再把生成的頁面反饋給客戶端進行顯示。

相關文章
相關標籤/搜索