JavaWeb 之 tomcat與web程式結構與Http協議
Tomcat伺服器 和 HTTP協議
**WEB開發簡介** * 當前網路上兩種架構 * C/S Client/Server 客戶端/伺服器 需要下載客戶端軟體 例子:QQ 快播 暴風影音 * 優點:伺服器壓力相對比較小,安全性比較高。 * 缺點:需要下載客戶端軟體,總去更新。 * B/S Browser/Server 瀏覽器/伺服器 不需要下載客戶端軟體(客戶端就指瀏覽器) 例子:購物網站(淘寶 京東) 12306 * 缺點:伺服器壓力比較大(硬體比較強) * 優點:瀏覽器,不用更新,伺服器端去做更新了。 **WEB相關知識**
**伺服器的簡介** * 伺服器整體概念: * 硬體:一臺電腦。 * 軟體:伺服器的軟體,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 作用:禁用瀏覽器快取。 * 空行 * 響應體:伺服器向客戶端返回的資料。