# 開發中常用WEB服務器和應用服務器
# 一、web服務器和應用服務器的區別
Web服務器傳送頁面使瀏覽器可以瀏覽,然而應用程序服務器提供的是客戶端應用程序可以調用(call)的方法(methods)。確切一點,你可以說:Web服務器專門處理HTTP請求(request),但是應用程序服務器是通過很多協議來為應用程序提供(serves)商業邏輯(business logic)。
簡而言之,應用服務器處理業務邏輯,web服務器則主要是讓客戶可以通過瀏覽器進行訪問,處理HTML文件,web服務器通常比應用服務器簡單。
**Web服務器(Web Server)**
Web服務器可以解析(handles)HTTP協議。當Web服務器接收到一個HTTP請求(request),會返回一個HTTP響應(response),例如送回一個HTML頁面。為了處理一個請求(request),Web服務器可以響應(response)一個靜態頁面或圖片,進行頁面跳轉(redirect),或者把動態響應(dynamic response)的產生委托(delegate)給一些其它的程序例如CGI腳本,JSP(JavaServer Pages)腳本,servlets,ASP(Active Server Pages)腳本,服務器端(server-side)JavaScript,或者一些其它的服務器端(server-side)技術。無論它們(譯者注:腳本)的目的如何,這些服務器端(server-side)的程序通常產生一個HTML的響應(response)來讓瀏覽器可以瀏覽。
要知道,Web服務器的代理模型(delegation model)非常簡單。當一個請求(request)被送到Web服務器里來時,它只單純的把請求(request)傳遞給可以很好的處理請求(request)的程序(譯者注:服務器端腳本)。Web服務器僅僅提供一個可以執行服務器端(server-side)程序和返回(程序所產生的)響應(response)的環境,而不會超出職能范圍。服務器端(server-side)程序通常具有事務處理(transaction processing),數據庫連接(database connectivity)和消息(messaging)等功能。
雖然Web服務器不支持事務處理或數據庫連接池,但它可以配置(employ)各種策略(strategies)來實現容錯性(fault tolerance)和可擴展性(scalability),例如負載平衡(load balancing),緩沖(caching)。集群特征(clustering—features)經常被誤認為僅僅是應用程序服務器專有的特征。
**應用程序服務器(The Application Server)**
根據我們的定義,作為應用程序服務器,它通過各種協議,可以包括HTTP,把商業邏輯暴露給(expose)客戶端應用程序。Web服務器主要是處理向瀏覽器發送HTML以供瀏覽,而應用程序服務器提供訪問商業邏輯的途徑以供客戶端應用程序使用。應用程序使用此商業邏輯就象你調用對象的一個方法(或過程語言中的一個函數)一樣。
應用程序服務器的客戶端(包含有圖形用戶界面(GUI)的)可能會運行在一臺PC、一個Web服務器或者甚至是其它的應用程序服務器上。在應用程序服務器與其客戶端之間來回穿梭(traveling)的信息不僅僅局限于簡單的顯示標記。相反,這種信息就是程序邏輯(program logic)。 正是由于這種邏輯取得了(takes)數據和方法調用(calls)的形式而不是靜態HTML,所以客戶端才可以隨心所欲的使用這種被暴露的商業邏輯。
在大多數情形下,應用程序服務器是通過組件(component)的應用程序接口(API)把商業邏輯暴露(expose)(給客戶端應用程序)的,例如基于J2EE(Java 2 Platform, Enterprise Edition)應用程序服務器的EJB(Enterprise JavaBean)組件模型。此外,應用程序服務器可以管理自己的資源,例如看大門的工作(gate-keeping duties)包括安全(security),事務處理(transaction processing),資源池(resource pooling), 和消息(messaging)。就象Web服務器一樣,應用程序服務器配置了多種可擴展(scalability)和容錯(fault tolerance)技術。
# 二、常見的web服務器和應用服務器
| 軟件名稱 |是否是Web服務器 | 是否是Web容器 | 是否是Web應用服務器 | 是否能反向代理 |
| --- | --- | --- | --- | --- |
| IIS | 是 | 是 | | 是 |
| Nginx | 是 | | | 是 |
| Apache | 是 | | | 是 |
| Tomcat | 是 | 是 | 是 | |
| Jetty | 是 | 是 | 是 | |
| WebSphere | 是 | 是 | 是 | |
| WebLogic | 是 | 是 | 是 | |
## (1)web服務器
Unix和Linux下,常用的Web服務器有Apache、Nginx、Lighttpd、Tomcat、IBM WebSphere、WebLogic 等,應用最廣泛的是Apache。
Windows下最常用的是微軟公司的IIS(Internet Information Server)。
**1.Apache服務器**
Apache仍然是世界上用的最多的服務器,它源于NCSAhttpd服務器,世界上很多著名的網站都是Apache的用戶。
源代碼開放,有一支開放的開發隊伍、支持跨平臺的應用,可移植性等,Apache的模塊支持非常豐富,但是,速度、性能上不及掐輕量級Web服務器,屬于重量級產品,所消耗的內存比其他Web服務器要高。
**2.Lighttpd服務器**
Lighttpd是由一個德國人寫的開源軟件,目標是提供一個專門針對高性能網站、安全、快速、兼容性好,并且靈活的WebServer環境。
具有內存開銷低、CPU占用率低、效能好、一級模塊豐富等特定,支持FastCGI、CGI、Auth、輸出壓縮(output compress)、URL重寫及Alias等重要功能。
Lighttpd和Nginx一樣,是一款輕量級Web服務器,是Nginx競爭對手之一。
**3.Tomcat服務器**
Tomcat是一個開放源代碼、運行servlet和JSP Web應用軟件的基于Java的Web應用軟件容器。
Tomcat Server是根據servlet和JSP規范執行的,因此,可以說Tomcat Server實行了Apache-Jakarta規范,而且,比絕大多數商業應用軟件服務器要好,但是,Tomcat對靜態文件、高并發的處理比較弱。
**4.IBM WebSphere服務器**
WebSphere Application Server是一種功能完善、開放的Web用用程序服務器,是IBM電子商務計劃的核心部分,它是基于Java的應用環境、建立、部署和管理Internet和Intranet Web應用程序。
**5.Microsoft IIS服務器**
Microsoft的Web服務器是IIS(Internet Information Server),是允許在公共Intranet或Internet上發布信息的Web服務器,IIS提供了一個圖形界面的管理工具,稱為Internet服務管理器,用于監視配置和控制Internet服務。
IIS是一種Web服務組件,其中包括Web服務器、FTP服務器、NNTP服務器和SMTP服務器,分別用于網頁瀏覽、文件傳輸、新聞服務和郵件發送等方面,它使在網絡上發布信息成了一件很容易的事情。
它提供ISAPI(Intranet Server API)作為擴展Web服務器功能的編程接口,此外,還提供一個Internet數據庫連接器,可以實現對數據庫的查詢和更新。
## (2)web應用服務器
**1.Tomcat服務器**
Tomcat是一個開放源代碼、運行servlet和JSP Web應用軟件的基于Java的Web應用軟件容器。Tomcat Server是根據servlet和JSP規范進行執行的,因此我們就可以說Tomcat Server也實行了Apache-Jakarta規范且比絕大多數商業應用軟件服務器要好。
**2.IBM WebSphere**
WebSphere Application Server 是 一 種功能完善、開放的Web應用程序服務器,是IBM電子商務計劃的核心部分,它是基于 Java 的應用環境,用于建立、部署和管理 Internet 和 Intranet Web 應用程序。 這一整套產品進行了擴展,以適應 Web 應用程序服務器的需要,范圍從簡單到高級直到企業級。
WebSphere 針對以 Web 為中心的開發人員,他們都是在基本 HTTP服務器和 CGI 編程技術上成長起來的。IBM 將提供 WebSphere 產品系列,通過提供綜合資源、可重復使用的組件、功能強大并易于使用的工具、以及支持 HTTP 和 IIOP 通信的可伸縮運行時環境,來幫助這些用戶從簡單的 Web 應用程序轉移到電子商務世界。
**3.BEA WebLogic**
BEA WebLogic Server 是一種多功能、基于標準的web應用服務器,為企業構建自己的應用提供了堅實的基礎。各種應用開發、部署所有關鍵性的任務,無論是集成各種系統和數據庫,還是提交服務、跨 Internet 協作,起始點都是 BEA WebLogic Server。由于 它具有全面的功能、對開放標準的遵從性、多層架構、支持基于組件的開發,基于 Internet 的企業都選擇它來開發、部署最佳的應用。
BEA WebLogic Server 在使應用服務器成為企業應用架構的基礎方面繼續處于領先地位。BEA WebLogic Server 為構建集成化的企業級應用提供了穩固的基礎,它們以 Internet 的容量和速度,在連網的企業之間共享信息、提交服務,實現協作自動化。BEA WebLogic Server 的遵從 J2EE 、面向服務的架構,以及豐富的工具集支持,便于實現業務邏輯、數據和表達的分離,提供開發和部署各種業務驅動應用所必需的底層核心功能。
- Java Web項目開發學習手冊
- 一、B/S開發環境搭建
- 1.1 tomcat服務器目錄結構及作用
- 1.2 在IDE開發工具上配置tomcat服務器
- 1.3 簡單web項目在tomcat服務器上運行的方法
- 1.4 開發工具設置
- 1.5 總結
- 二、Servlet技術應用
- 2.1 HttpServlet中的主要方法及應用
- 2.1.1 基于Eclipse完成一個JavaWeb項目
- 2.2 HttpRequest,HttpResponse的應用
- 2.2.1客戶端請求
- 2.2.2服務器響應
- 2.2.3Servlet HTTP 狀態碼
- 2.2.4圖片驗證碼類
- 2.2.5注冊模擬實現(帶驗證碼)
- 2.3 ServletConfig對象和ServletContext對象的概念
- 2.4 總結
- 三、JSP技術應用
- 3.1 JSP基本語法
- 3.2 JSP標簽和指令
- 3.3 JSP中的隱式對象
- 3.4 常用應用操作
- 3.4.1 JSP客戶端請求
- 3.4.2 JSP服務器響應
- 3.4.3 HTTP狀態碼
- 3.4.4 表單處理
- 3.4.5 過濾器
- 3.4.6 Cookie處理
- 3.4.7 Session處理
- 3.4.8 文件上傳
- 3.4.9 日期處理
- 3.4.10 頁面重定向
- 3.4.11 點擊量統計
- 3.4.12 自動刷新
- 3.4.13 發送郵件
- 3.5 JSP高級應用
- 3.5.1 JSP標準標簽庫(JSTL)
- 3.5.2 JSP連接數據庫
- 3.5.3 JSP XML數據處理
- 3.5.4 JSP JavaBean
- 3.5.5 自定義標簽
- 3.5.6 表達式語言
- 3.5.7 異常處理
- 3.5.8 調試
- 3.5.9 JSP國際化
- 3.6 實踐代碼
- 3.6.1 實踐代碼
- 3.6.2 項目實戰
- 3.7 總結
- 四、MVC思想的理解和搭建MVC
- 4.1 MVC設計模式的思想
- 4.2 MVC設計模式的實現步驟
- 4.3 項目實踐
- 4.4 總結
- 五、EL表達式和JSTL技術
- 5.1 EL表達式及其應用
- 5.2 常用的JSTL標簽的應用
- 5.3 項目實踐
- 5.4 總結
- 六、Cookie和Session
- 6.1 cookie對象的概念和應用
- 6.2 session對象的概念和應用
- 6.3 項目實踐
- 6.4 總結
- 七、過濾器技術應用
- 7.1 Filter的概念及應用
- 7.2 Filter、FilterChain、FilterConfig 介紹
- 7.3 用戶登錄過濾案例
- 7.4 項目實戰
- 7.5總結
- 八、異步請求技術
- 8.1 JSON數據格式
- 8.2 使用AJAX實現異步請求
- 8.3 用戶名校驗案例
- 8.4小結
- 綜合項目技術實訓
- 1.BS項目開發項目實戰
- 2.項目需求分析和系統設計
- 2.1需求分析
- 2.2類型模型設計
- 2.3原型設計
- 3.項目數據庫分析和系統設計
- 4.BS項目編程實現
- 4.1搭建框架和命名規約
- 4.2實現步驟
- 4.2.1創建實體類
- 4.2.2創建過濾器類
- 4.2.3創建工具類
- 4.2.4創建DAO接口及其實現類
- 4.2.5創建Service接口及其實現類
- 4.2.6創建測試類
- 4.2.7創建控制器類
- 5.企業開發流程規范
- 6.總結
- 九、練習題及答案
- 企業開發常用技術
- 1.Maven技術
- Java命名規范解讀
- 參考資料
- 開發中常用的應用服務器和Web服務器