Web應用不只侷限於展現在服務器上的靜態頁面,更多的是根據用的請求動態的生成頁面信息,還能夠從數據庫中提取數據,生成頁面返回給用戶。web
第一種方法:遵循HTTP協議實現一個服務器端軟件數據庫
第二種方法:利用已實現HTTP協議的服務器端軟件留出的擴展接口,根據相應的規則提供擴展功能小程序
最先的Web服務器擴展機制是CGI,容許用戶調用Web服務器上的CGI程序。瀏覽器
CGI的全稱Common Gateway Interface,即公共網關接口。安全
大多數CGI程序用Perl編寫,也有用C、Python或PHP來編寫的。服務器
用戶訪問CGI的過程包括:網絡
CGI的缺點有:多線程
CGI程序編寫困難;app
對用戶請求的響應時間比較長;webapp
以進程的方式致使性能受限。
CGI的其餘解決方案:
Sun公司的Servlet技術(97年),JSP技術(98年);
微軟公司的ASP技術(96年);
Rasmus Lerdorf在94年發明的PHP。
Servlet和Servlet容器
Java Servlet(Java服務器小程序)是一個基於Java技術的Web組件,運行在服務器端,由Servelet容器所管理,用於生成動態內容。
Servlet是平臺獨立的Java類,寫一個Servlet實際上就是按照Servlet的規範編寫一個Java類。
Servlet容器有時也叫Servlet引擎,是Web服務器或應用程序的一部分,用於在發送的請求和響應之上提供網絡服務,解碼基於MIME的請求,格式化基於MIME的響應;
Servlet不能獨立運行,必須被部署到Servlet容器中,由容器來實例化和調用Servlet的方法;
Servlet容器在Servlet的生命週期內包容和管理Servlet。
JSP推出後,管理和運行Servlet/JSP的容器也被稱爲Web容器。
用戶訪問Servlet的過程包括:
用戶經過點擊連接或者在地址欄輸入URL來訪問Servlet;
Web服務器接收到該請求後,並非直接將請求直接交給Servlet,而是交給Servlet容器;
Servlet容器實例化Servlet,調用Servlet的一個特定方法對請求進行處理,併產生一個響應;
這個響應由Servlet容器返回給Web服務器;
Web服務器包裝該響應,以HTTP響應的形式發送給Web瀏覽器。
相比於CGI,Servlet有一下優點:
Servlet的單實例多線程運行方式,每一個請求在一個獨立的線程中運行,而提供服務的Servlet實例只有一個;
Servlet使用線程而不是操做系統進程;
Servlet使用標準的API,被更多的Web服務器所支持;
Servlet採用Java編寫,具備容易開發和平臺獨立的優勢;
Servlet能夠訪問Java平臺豐富的類庫;
Servlet容器給Servlet提供額外的功能,如錯誤處理和安全。
Servlet容器有三類:
獨立的Servlet容器;
進程內的Servlet容器;
進程外的Servlet容器。
Tomcat和IIS、Apache等Web服務器同樣,具備處理HTML頁面的功能,另外它仍是一個Servlet和JSP容器,獨立的Servlet容器是Tomcat的默認模式。
不過Tomcat處理靜態HTML的功能不如Apache,咱們能夠將兩者結合起來使用,Apache做爲HTTP Web服務器,Tomcat做爲Web容器。
Tomcat服務器接受用戶請求並作出響應的過程
客戶端(一般是瀏覽器)訪問Web服務器,發送HTTP請求;
Web服務器接收到請求後,傳遞給Servlet容器;
Servlet容器加載Servlet,產生Servlet實例後,向其傳遞表示請求和響應的對象;
Servlet實例使用請求對象得到客戶端的請求信息,而後進行相應的處理;
Servlet實例將處理結果經過響應對象發送回客戶端,容器負責確保響應正確送出,同時將控制返回給Web服務器。
Tomcat目錄結構及其用途
目錄 | 用途 |
/bin | 存放啓動和關閉Tomcat的腳本 |
/conf | 存放Tomcat的各類配置文件,其中包括Server.xml(主要配置文件) |
/lib | 存放Tomcat服務器和Web應用程序須要訪問的JAR文件 |
/logs | 日誌文件 |
/temp | 臨時文件 |
/webapps | 發佈Web應用程序時,將Web應用程序的目錄和文件放到這個目錄下 |
/work | Tomcat將JSP生成的Servlet源文件和字節碼文件放於此 |
Tomcat安裝目錄下的conf子目錄用於存放Tomcat服務器的各類配置文件,其中的server.xml是Tomcat的主要配置文件,這是一個格式良好的XML文檔,在這個文件中能夠修改Tomcat默認監聽的端口號。
<Connector port=」8080」 protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Tomcat啓動分析
主要是分析幾個bin下的腳本
Tomcat體系結構(這裏還沒怎麼看懂,先放一下吧)