1. 程式人生 > >JavaWeb 之 tomcat與web程式結構與Http協議

JavaWeb 之 tomcat與web程式結構與Http協議

Tomcat伺服器 和 HTTP協議

**WEB開發簡介**          * 當前網路上兩種架構         * C/S    Client/Server    客戶端/伺服器        需要下載客戶端軟體        例子:QQ        快播        暴風影音             * 優點:伺服器壓力相對比較小,安全性比較高。             * 缺點:需要下載客戶端軟體,總去更新。        * B/S    Browser/Server    瀏覽器/伺服器        不需要下載客戶端軟體(客戶端就指瀏覽器)    例子:購物網站(淘寶  京東) 12306             * 缺點:伺服器壓力比較大(硬體比較強)             * 優點:瀏覽器,不用更新,伺服器端去做更新了。                  **WEB相關知識**

         * WEB:網頁。JavaWeb:使用Java語言來開發網頁。     * 靜態的WEB資源         * HTML CSS JavaScript     * 動態的WEB資源         * Servlet/JSP          * 靜態和動態的區別         * 動態的資源資料是活的,例子:假如說A使用者登陸淘寶,顯示A使用者的名字。B使用者登陸了淘寶,顯示B使用者的名字。          * 微軟    ASP.net     * PHP    小巧(開發網站非常強大,處理大資料)     * RUBY    小日本          * Java語言優點:開發了網站,沒有任何優勢。優勢是伺服器端,處理業務(電信,淘寶,銀行)。          * 靜態Web資源:簡單一句話,瀏覽器能看的懂的。     * 動態Web資源:先需要伺服器把它轉換成HTML,再給瀏覽器看。     

**伺服器的簡介**          * 伺服器整體概念:     * 硬體:一臺電腦。     * 軟體:伺服器的軟體,Tomcat伺服器軟體。     * 如果安裝了伺服器軟體了,啟動伺服器和關閉伺服器。假如啟動了伺服器,怎麼訪問?         * 訪問:http://www.baidu.com    一回車訪問百度了         * http://            代表HTTP的協議         * www.baidu.com        域名(DNS域名伺服器註冊    .baidu.com  61.135.169.125)         * 最終:http://192.168.1.100:埠號(預設值80)         * 最終:http://192.168.1.100:80/index.html         

**常見的WEB伺服器**              * Tomcat(Apache)    開源免費的    開發中應用最廣的伺服器    支援JSP/Servlet規範    SSH     * JBoss                免費的        支援JAVAEE所有的規範    EJB規範 JSP/Servlet     * Weblogic    原來的公司BEA公司        收費的 大型的伺服器    支援JAVAEE所有的規範    被Oracle收購了             SUM公司(Java語言)    +     資料庫(Oracle MySQL(也被收購了))    +  伺服器(Weblogic)     * Websphere    公司的IBM公司            收費      大型的伺服器    支援JAVAEE所有的規範     

**Tomcat伺服器**          * 下載tomcat伺服器,安裝版本和解壓版本。現在都使用解壓版本(7.x)     * 解決檔案,放在本地的磁碟上(目錄:不要有中文和空格)     * 啟動伺服器:在tomcat/bin/startup.bat(批處理檔案),雙擊檔案。彈出黑色的視窗。伺服器成功。(不要把黑視窗關閉)     * 訪問伺服器的主頁:http://localhost:8080    就可以訪問tomcat預設主頁     * 關閉伺服器:(關閉黑視窗,關閉暴力的),溫柔的關閉。在bin的目錄下,有shutdown.bat。雙擊該檔案,關閉伺服器。     

**常見問題**          * 第一個注意:必須安裝JDK,必須配置Java_Home環境變數。視窗一閃而過。說明環境變數沒配置好。     * 不小心,已經啟動了一個伺服器,又想啟動伺服器。端口占用的問題。         * 端口占用的問題:java.net.BindException: Address already in use: JVM_Bind         * 解決佔用的問題:             * 先找到佔用埠的應用程式,結束掉該應用程式。                 * netstat  –ano    檢視所有佔用埠的應用程式,找到程式的PID,要任務工作管理員中結束掉。                     * 有一個應用一直佔用,一開機就佔用。             * 修改埠號(修改tomcat伺服器的埠號)。(預設是8080,改成其他的埠號)                 * Tomcat伺服器的配置檔案    -- tomcat/conf/server.xml的檔案                 * 一般情況下改成80,80埠是HTTP協議的預設埠號,訪問可以不寫。                 * 如果萬一佔用的80埠,幹掉它。系統中的服務要是佔用80埠,禁用該服務。                      * 如果系統自帶的微軟伺服器IIS(World wide web publish IIS),去系統服務中把服務禁用。     

**Tomcat目錄結構**          ** bin                可執行檔案(啟動和關閉)     ***** conf            存放的Tomcat配置檔案     *** lib                給Tomcat伺服器執行時所需jar     *** logs            存放Tomcat執行時產生日誌檔案。     ** temp                Tomcat執行時產生臨時檔案     ***** webapps        Wab Applicatons(WEB應用們),在該目錄下存放就是專案。     ***** work            JSP翻譯成.java的檔案,存放在work的目錄下。

    **在webapps目錄建立靜態和動態的WEB資源**          * webapps目錄下存放的是專案,專案區分靜態的WEB資源和動態的WEB資源。     * 靜態和動態在webapps的目錄下存在的方式不一樣。         * 如果靜態的WEB資源 -- 在webapps目錄建立一個檔案(專案名稱) -- 直接可以放在靜態資源(HTML CSS JS) (例如:在webapps目錄建立一個檔名為hello,裡面有個檔案為index.html,啟動tomcat,訪問http://localhost:80/hello/index.html即可,80埠可以省略)         * 如果動態的WEB資源              * 在webapps目錄下建立一個檔案             * 在該檔案下建立WEB-INF的目錄(名稱固定、大寫固定)             * 在WEB-INF目錄下web.xml的檔案(必須要有,有文件宣告,根節點和約束,複製一份)             * 在WEB-INF目錄下        classes資料夾(.class檔案)             * 在WEB-INF目錄下        lib資料夾(引入第三方jar包)                          **MyEclipse和伺服器整合**          * MyEclipse是開發工具(編寫程式碼)     * Tomcat伺服器:執行的專案     * MyEclipse和Tomcat整合的步驟         * window -- 首選項 -- MyEclipse -- servers -- Tomcat7.x -- 配置JDK -- 配置Tomcat目錄 -- Enable,點選ok         * 啟動 -- 在server視窗中 -- 右鍵選擇啟動和關閉              * 如果在MyEclipse部署專案。(右鍵add相應的專案即可)

    **Context上下文(虛擬路徑)**          * 虛擬路徑:理解訪問路徑(預設和專案名稱是相同的)。     * 釋出到伺服器中,作為訪問路徑。     * 總結:在webapps的目錄下的專案的名稱其實是虛擬路徑(訪問路徑),虛擬的路徑預設情況下和專案名稱是相同的。          **部署專案(兩種方式)**          * 直接把專案複製到webapps的目錄下          * 原因:需要把你的系統部署到公司的伺服器。     * 在tomcat/conf/server.xml -- 在<Host>標籤的中間配置虛擬路徑(希望找到C盤oa的專案)         <Context path="/itcast"  docBase="C:/oa" />         * path="專案的虛擬路徑(訪問路徑)"         * docBase="指定真實專案的路徑"          * 也是配置虛擬路徑的方式,但是不用去修改tomcat/conf/server.xml。     * tomcat安裝路徑\conf\Catalina\localhost建立一個XML的配置檔案,名稱可以是任意(例子:hello5.xml),它就會以檔案的名稱作為虛擬路徑(訪問路徑)。我就會把hello5檔案的名稱作為虛擬路徑。 http://localhost/hello5.     * hello5檔案書寫的內容:         * 文件宣告<?xml version="1.0" encoding="UTF-8"?>         * 直接編寫<Context docBase="c:/ob"  />

**WEB通訊**              注意:hosts檔案中把上面兩個地址倒過來,例如: 10.2.4.86      www.baidu.com, 看下圖即可。

**配置虛擬主機(瞭解)**          在hosts檔案中的<Host>標籤中完成虛擬主機的配置。在原來的Host標籤上再加一個如下所示:

D盤下有一個mytaobao的資料夾,裡面新建一個ROOT資料夾,在此資料夾中新建index.html

          ## HTTP的協議(重點)重點掌握頭的資訊,固定的作用 ##

**HTTP協議的簡介**          * 什麼是HTTP的協議:協議:甲乙雙方根據一些規定達成的共識。人與人之間的協議。     * 人與計算機怎麼溝通呢?人通過瀏覽器與計算機的伺服器進行溝通。     * 客戶端與伺服器之間怎麼溝通:涉及到資料的傳輸。風姐傳到伺服器端,接收鳳姐,伺服器內部查詢內容,返回給你瀏覽器。     * 鳳姐是怎麼傳輸啊?圖片或者html的內部怎麼傳輸啊?     * HTTP的協議         * 把鳳姐資料封裝到協議規定的格式裡,傳送到伺服器。         * 伺服器把HTML,圖片的資料封裝到協議的規定的格式,返回給瀏覽器。     * HTTP協議的格式         * 咱們要學的是這些格式?這是格式有一些內容,需要學的?          * 請求:從客戶端發起,向伺服器端傳送請求。     * 響應:從伺服器做出迴應,接收到客戶端傳送過來的請求,對客戶端做出了響應。     

**HTTP協議的版本**          * HTTP協議1.0             * 從客戶端連結伺服器端,傳送請求,得到響應。立即斷開。     * HTTP協議1.1(現在使用)             * 從客戶端連結伺服器端,傳送請求,得到響應。不會立即斷開,連結一會,如果一段時間內,沒有請求,自動斷開。         **HTTP協議的請求**          * 請求行         * 請求方式             * 提交方式有哪些?             * 提交方式有很多,主要有兩種,get和post。之間區別:         * 提交的地址             * 協議版本    HTTP/1.1     * 請求頭         Accept: text/html,image/*             Accept-Charset: ISO-8859-1         Accept-Encoding: gzip         Accept-Language:zh-cn          Host: www.itcast.com:80         If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT         Referer: http://www.itcast.com/index.jsp         User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)         Connection: close/Keep-Alive            Date: Tue, 11 Jul 2000 18:23:51 GMT                      * 重點的有             * If-Modified-Since        需要和響應頭和304(狀態碼)和在一起使用,控制本地的快取。             * Referer                記住當前網頁的來源(作用:統計網站的訪問,防止盜鏈)             * User-Agent                獲取瀏覽器的版本資訊                  * 空行     * 請求體         * 封裝的是post提交方式的引數列表。          **HTTP協議的響應**          * 響應行         * 協議版本         * 狀態碼(重點記住)             * 200 :請求成功處理,一切OK                     * 302 :請求重定向             * 304 :伺服器端資源沒有改動,通知客戶端查詢本地快取              * 404 :客戶端訪問資源不存在             * 500 :伺服器內部出錯                       * 狀態碼描述     * 響應頭         Location: http://www.it315.org/index.jsp          Server:apache tomcat         Content-Encoding: gzip          Content-Length: 80          Content-Language: zh-cn          Content-Type: text/html; charset=GB2312          Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT         Refresh: 1;url=http://www.it315.org         Content-Disposition: attachment; filename=aaa.zip         Expires: -1         Cache-Control: no-cache           Pragma: no-cache            Connection: close/Keep-Alive            Date: Tue, 11 Jul 2000 18:23:51 GMT                  * 重點的響應頭                 * Location                    和302一起完成重定向             * Last-Modified    和 If-Modified-Since     和304一起來完成控制快取的操作。             * Refresh                    定時頁面重新整理(頁面定時跳轉)             * Content-Disposition        檔案下載的時候需要使用                     * 下面這三個頭需要一起使用                 Expires: -1                 Cache-Control: no-cache                   Pragma: no-cache                 作用:禁用瀏覽器快取。              * 空行     * 響應體:伺服器向客戶端返回的資料。