概念一直是學習計算機軟件開發中經常遇到的問題也是軟件行業最喜歡創造的東西很多時候學習計算機軟件開發遇到困難都是因為對某些概念的不理解而不是因為技術本身有多麼復雜Java Web作為Java EE技術體系的一部分應該是目前所有Web開發技術中最復雜的一種很多初學者或者是從ASPPHP轉移過來的開發者都會遇到概念方面的困難
其實很多概念都是非產簡單的只是因為廠家為了宣傳需要將概念復雜化學術化導致學習者覺得這些概念非常深奧難以理解在這裡我們首先去澄清Java Web開發中幾個常用的基本概念當然理解這些概念的前提是需要你具備一定的計算機系統面向對象等方面基礎知識
Web容器
所有的程序運行都需要有一個必要的運行環境這個環境可以是軟件也可以是硬件或者是軟件和硬件的結合比如說Windows操作系統需要運行在硬件基礎上Office軟件需要運行在操作系統上並且程序與運行環境之間會有一定的數據交換比如操作系統會將運行指令傳遞給硬件硬件也會將指令運行結果傳遞給操作系統Java Web程序也需要一個運行環境才能夠執行這種運行Java Web程序的環境被稱為Web容器Java Web程序與Web容器之間存在數據交互目前主要存在兩種類型的Java Web容器一種是獨立的Java Web容器在這種容器裡面只能運行Web程序這種容器一般也叫做Web服務器如Tomcat等另一種是與其他Java EE容器混合在一起的Web容器Web容器負責運行Web程序其他容器負責運行EJB等程序如WebLogic等
當用戶通過浏覽器等Web客戶端軟件向服務器發出一個請求之後首先接收到這個請求的是Web容器Web容器會將請求信息封裝到一個HttpServletRequest類型的Java對象中並將對象傳遞給Java Web程序對於每個請求Web容器還會創建一個HttpServletResponse類型對象該對象的作用是用來保存需要返回到浏覽器等客戶端的內容Java Web程序可以從HttpServletRequest提取用戶發出的請求信息進行適當的處理之後將處理結果放置到HttpServletResponse中然或由Web容器解析HttpServletResponse對象內容並將解析結果以浏覽器能夠識別的HTML等格式返回給浏覽器等客戶端在這個過程中HttpServletRequest和HttpServletResponse就如同兩條渡船負責在Web容器和Java Web程序之間傳遞信息需要注意的是這兩個對象僅存在於Web容器和Java Web程序當中與浏覽器沒有關系下圖是這個過程的示意圖
Web應用
Web應用可以認為是Web程序的另一個名稱缺的的定義就是運行在Web容器當中的能夠完成完整功能的應用程序Java Web應用由一系列編譯之後的Java類靜態圖片靜態HTML文件配置文件等構成通過Java Web應用可以就收用戶的輸入和請求並對請求信息進行加工處理訪問數據庫對用戶的請求給出回應開發Java Web應用程序處理需要遵守Web應用的一些特殊規范要求以外與開發其他類型的應用程序並沒有本質區別目前Web應用主要有兩種類型一種是以展示為目的的Web應用這種應用會以HTML等標記文本或者浏覽器所能識別的媒體格式最為請求返回內容用戶可以通過浏覽器等客戶端操作這類應用另一類是以服務為目的的Web應用這類應用不提供圖形操作界面只提供方法調用結構比如Web服務該類應用一般只能被其他應用程序調用和訪問
Web元件
Web元件是構成Web應用能夠對來自浏覽器等客戶端請求做出回應的基本單元在Java Web應用中所提供的Web元件有ServletJavaServer Pages(JSP)JavaServer Faces(JSF)等另外還可以使用其他類型Web應用同樣使用的內容比如HTML文件靜態圖片等事實上Java Web只提供了一種Web元件元件就是ServletJSPJSF等都是基於Servlet的衍生技術Servlet實質就是一個有特殊繼承關系要求的Java類理解Servlet就基本上完全理解Java Web技術了
Web模塊
在Java EE技術體系中除了Java Web以外還包括EJB等其他技術每個技術體系會運行在各自的容器當中不同的部分組合在一起構成完整的Java EE應用每個部分根據自己的特點被稱為Java Web模塊或者EJB模塊之所以把他們稱為模塊是因為希望Java EE應用不同部分能像積木一樣組合出更大更復雜的應用出來並且每個部分保證其獨立性不同的模塊都有自己特定的目錄結構要求Java Web模塊的目錄結構要求如下
◆應用文檔根目錄改目錄是Java Web模塊的最上層目錄組成Web模塊的所有Web元件以及配置文件等都包含在該目錄或者子目錄下在改目錄下可以直接存放HTML文件圖片文件等
◆WEBINF目錄改目錄位於應用文檔根目錄下用來保存那些不希望被浏覽器等客戶端訪問的文件比如發布描述文件編譯之後的類文件因為這些文件是由由Web容器進行解釋或者執行的浏覽器不可以直接看到這些文件只能看到這些文件的執行結果
◆webxml文件該文件位於WEBINF目錄下是Web應用的部署描述文件用來與定義Web應用運行相關的信息比如執行邏輯Servlet等Web元件的訪問路徑等改文件的格式必須符合所使用的Servlet版本的規格要求
◆classes目錄該目錄位於WEBINF目錄下用來保存編譯之後的Java類文件比如Servlet輔助類其他業務處理類等
◆tags目錄該目錄位於WEBINF目錄下用來保存那些標簽庫的標簽描述文件
◆lib目錄該目錄位於WEBINF目錄下用來保存Web應用運行所依賴的經過打包之後的Java類文件打包格式一般是jar格式
對於Java Web模塊目錄中WEBINFwebxmlclassestagslib這些內容以外用戶可以根據自己的需要在Web應用文檔根目錄下創建其他目錄比如可以為圖片不同用途的HTML或者JSP單獨創建目錄還可以為不用的Java類在classes下創建包目錄如果在你的Web應用中沒有使用到Servlet過濾器監聽器等Java Web元件可以沒有webxml文件如果沒有使用到標簽則可以沒有tags目錄
Web模塊的發布工作可以直接以目錄的形式發布也可以打包成jar格式文件進行發布因為用途和內容的特殊性打包文件的擴展名會采用war而不是jar另外如果不是發布到獨立的Web服務器上而是發布到與其他Java EE一起使用的企業應用服務器上還需要編寫一個與企業應用服務器相關的配置文件這個文件對於不同的企業應用服務器也不同比如發布到glassfish服務器上需要編寫的文件時sunwebxml
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26761.html