1.常見的伺服器
1.1 WebLogic伺服器 BEA公司提供,支援j2EE規範
1.2 WebSphere IBM公司提供,支援j2EE規範
1.3 TomCat伺服器,Apache開源組織開發的開源免費的web伺服器,只能支援jsp和Servlet規範
2.下載和安裝Tomcat伺服器
2.1:http://tomcat.apache.org/
2.2安裝Tomcat:直接將壓縮包解壓即可,但是要注意tomcat所在目錄不要有中文和空白字元。
同時還要注意配置JAVA_HOME環境變數,指定tomcat啟動所用的JDK
CATALINA環境變數用於指定啟動那一個tomcat,當我們雙擊startup.bat的時候,會去檢查這個環境變數,如果設定了就啟動設定的tomcat,如果沒有設定就啟動當前tomcat,不需要的時候就不要配了。
如果發生連接埠衝突問題,可以在cmd視窗中使用 netstat -ano查看佔用連接埠的程式。
2.3Tomcat的目錄結構及其作用
bin ------ 啟動和關閉tomcat所用的批次程式
conf ----- tomcat運行所使用的設定檔,其中最重要的是server.xml
lib -----tomcat也是一個java程式,次檔案夾存放了tomcat運行所需的jar包
logs ----- tomcat運行時產生的記錄檔,當我們需要查看作業記錄的時候,上這裡找
temp ----- tomcat運行時的臨時目錄,是給tomcat自己用的。
webapps ---- web應用存放的目錄,之所以是他,是因為localhost的<Host>指定了 appBase為它
work ----tomcat 運行時的工作目錄,以後我們學jsp的時候會用到。
3.虛擬機器主機
3.1虛擬機器主機的概念:一台真實的伺服器安裝好以後,可以在上面跑很多個網站,但是對於瀏覽器來說,他在訪問這些網站的並不知道他們是跑在一台真實主機上的,看起來就像每個網站都跑在各自的主機上一樣,所以我們可以認為這些網站跑在各自的虛擬機器主機上,也就是說,一個網站就相當於一個虛擬機器主機
3.2如何配置一個虛擬機器主機到tomcat呢?
3.2.1可以在server.xml中 的<Engine>標籤中配置一個<Host>標籤,其中name屬性工作表征虛擬機器主機的主機名稱,appBase指定虛擬機器主機的真實目錄。
3.2.2拿著你的公網ip地址和主機名稱去DNS上註冊
*瀏覽器在通過主機名稱訪問伺服器的時候,其實是需要將主機名稱解析成真正的伺服器的ip地址,瀏覽器首先回去問本地的hosts(系統硬碟/windows/system32/dirvers/etc/hosts)檔案,如果裡面沒有對應的資訊就去問網路上的dns伺服器,所以我們在伺服器上配好虛擬機器主機後還要去DNS上註冊,我們在做實驗的時候可以使用hosts檔案來類比dns伺服器的作用。
3.2.3預設虛擬機器主機:當瀏覽器直接用伺服器的ip地址來訪問的時候,到底應該去找伺服器中多個虛擬機器主機中的哪一個呢?這是由<Engine>上的defaultHost屬性指定的。
3.2.4ie訪問伺服器的互動過程
(1)在ie地址欄裡輸入想訪問的URL
(2)瀏覽器拿著URL中的主機名稱去尋找本地host檔案,看本地是否有對應的ip地址資訊,如果有就跳過第3步
(3)如果host中沒有找到對應的ip資訊,就去訪問DNS伺服器,擷取虛擬機器主機對應的真實ip地址
(4)利用真實ip去串連伺服器
(5)發送請求訊息,請求訊息中帶著需要訪問的主機名稱和web應用程式名稱和web資源名
(6)伺服器接收到請求,分析出要找的主機名稱,交給響應虛擬機器主機
(7)虛擬機器主機找到對應的web應用
(8)尋找該web應用中的web資源
(9)把找到的web資源返還給瀏覽器
4.web應用
4.1web應用的概念:將web資源交給虛擬機器主機的時候,不能直接將web資源給過去,需要用目錄將這些web資源按照一定的規則群組織起來,這樣的用目錄組織起來的具有一定特定功能的web資源的集合我們就叫做一個web應用。
4.2web應用組織圖:
mail (web應用所在的目錄)
|
----- html、js、css (這些靜態資源可以直接放在web應用所在目錄下,他們可以直接被外界訪問到。)
|
-----WEB-INF (這是一個特殊的目錄,名稱不能寫錯,java程式、jar包、設定檔、web.xml都要放到這裡,這個檔案夾裡的資源外界不能直接存取)
|
---- classes(此目錄下存放java類)
|
---- lib (此目錄下存放程式運行所需的jar包)
|
-- web.xml
(整個web應用的設定檔,一個格式良好的web應用都應該有一個web.xml檔案,對於web應用的首頁、Servlet配置、過濾器等等等等配置都要通過它來實現)
*利用web.xml配置web應用的首頁,例子:
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
4.3web應用的虛擬路徑映射
4.3.1web應用組織好以後,還要交給虛擬機器主機去管理,這個過程是將本地硬碟中的真實路徑下的檔案夾映射成一個用在網路上的虛擬路徑的過程,所以這個過程就叫做 web應用的虛擬路徑映射。
4.3.2如何將一個web應用映射給虛主機
(方法1)在Server.xml設定檔的對應的虛擬機器主機<Host>標籤內配置<Context>標籤,其中用path屬性指定虛擬路徑名,docBase指定真實路徑名
*如果想要將該web應用配置為該虛擬機器主機的預設web應用,應該將path的值寫成空的:path=""。
*這种放發進行配置後,因為修改了設定檔,需要重啟伺服器,不推薦。
(方法2)在conf/Catalina/主機名稱/建立一個以虛擬路徑名為檔案名稱的xml檔案,在這個檔案中配置<context>,注意,這個時候的<context>就不用寫path了
*此檔案檔案名稱可以用#進行分割來帶表虛擬路徑的/,比如itheima#news.xml就對應著虛擬路徑名itheima/news
*可以將次檔案檔案名稱取成ROOT.xml,那這個檔案描述的web應用就成了該虛擬機器主機的預設web應用。
*這種方式配置web應用不需要重啟伺服器,推薦方式。
(方法3)直接將web應用扔到虛擬機器主機配置中appBase指定的虛擬機器主機的真實目錄下,例如,localhost主機對應的webapps目錄下
*這種方法最方便,但是上面兩種也要會
5.其他知識
5.1打war包:war包可以直接放到host對應的虛擬機器主機真實目錄下,war包就會自動解壓成web應用
(1)直接用壓縮公用程式,將web應用檔案夾內的內容壓縮成.zip格式的壓縮檔,修改副檔名為.war。
(2)jar -cvf news.war news
5.2通用Context配置、通用web.xml配置:
在conf目錄下有context.xml和web.xml設定檔,這是整個伺服器的通用context和web.xml的配置,其他的context和web.xml都繼承自它。
5.3Tomcat管理服務平台:可以直接存取tomcat首頁,左側有TomcatManager選項,點擊進入
是有許可權控制的,可以進入,conf下的tomcat-users.xml檔案中進行配置,請參看注釋內容配置。
5.4Tomcat體繫結構
Server:代表格服務器
Service:伺服器啟動時啟動服務
Connector:表示連接器,一個連接器處理一類協議的請求
Engine:處理引擎
Host:虛擬機器主機
Context:web應用
5.5Context的常用配置
path:虛擬路徑名
docBase:web應用所在的真是路徑
reloadable:當web應用下的class目錄和lib目錄變更是是否動態載入。一般我們開發時設為true,方便開發。發布時設為false,提高效能。
unpackwar:是否自動解壓war壓縮包,預設為true。
6.作業:在tomcat中配置一個虛擬機器主機www.itheima.cn,將c:\itcat作為虛擬機器主機的真實目錄,利用host檔案類比Dns,並在其中發布news和mailweb應用,並設定預設web應用,並設定預設web應用的首頁。
============================================
7.HTTP協議
7.1瀏覽器和伺服器之間想要傳輸資料,必須遵循一定的資料轉送規範,這個規範就是HTTP協議
HTTP協議是基於TCP/IP協議的應用協議
HTTP使用請求響應的模式,並且只能由瀏覽器發送請求,伺服器只能被動的等待。
7.2Telnet工具類比瀏覽器訪問伺服器的過程(使用win7的同學請參照老師提供的文檔手動開啟telnet功能)
(1)在cmd視窗打命令“telnet localhost 80”這會串連伺服器,但是介面上輸入什麼字元都不正確顯示
(2)CTRL+]進入編輯視窗,再按一次斷行符號,進入發送訊息模式
(3)輸入想要發送的請求,注意telnet採用輸入一個字元發送一個字元的模式,一但輸入錯誤沒有機會更改了,只能重新串連。
推薦先在文字編輯器中寫好,複製粘貼:
GET /news/1.html HTTP/1.1
HOST:localhost
(注意此行是一個斷行符號)
(4)HTTP協議1.0版本和1.1版本的區別:1.0一次串連只能擷取一個資源,每個資源都要重新串連擷取。1.1版本擷取資源後可以保持串連一段時間,一次串連可以擷取多個資源。我們推薦使用1.1版本。
思考:擷取一個帶有三幅圖片的html,會有幾次請求響應的過程?
7.3HTTP請求 : 請求行、若干要求標頭、一個空行、實體內容
7.3.1請求方式:POST、GET
*預設情況下瀏覽器發送請求都用get方式,包括在地址欄裡輸入地址、點擊一個超連結、form表單不設定method的提交
*如果想用post方式提交,就要把表達的method顯示設定為post
*get方式傳輸資料是在請求資源名後加?後加參數名=參數值例如:GET /news/3.html?user=xxxx HTTP/1.1,有資料大小的限制一般不能超過1k
*post方式傳輸資料是在實體內容中傳輸的。沒有資料大小的限制。
7.3.2要求標頭
Accept: text/html,image/* 表示瀏覽器可以接受的資料格式
Accept-Charset: ISO-8859-1 瀏覽器採用的字元集編碼
Accept-Encoding: gzip,compress 瀏覽器可以接受的資料壓縮格式
Accept-Language: en-us,zh-cn 瀏覽器的語言環境
Host: www.it315.org:80 想要訪問的主機名稱
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT
Referer: http://www.it315.org/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 目前時間
7.4HTTP響應:狀態行、若干訊息頭、一個空行、實體內容
7.4.1狀態行: HTTP版本號碼 狀態代碼 原因敘述<CRLF> 例子:HTTP/1.1 200 OK
7.4.2狀態代碼:200 請求成功 302請求轉寄(你找我借錢,我沒有,但是我可以告訴你誰有,你去找他)、304緩衝中取、307緩衝中取、404資源未找到、500伺服器端錯誤
7.4.3回應標頭:
Location: http://www.it315.org/index.jsp 配和302使用,通知瀏覽器跳轉到哪一個url
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 設定定時重新整理,並可以設定重新整理到哪個url
Content-Disposition: attachment;filename=aaa.zip 下載相關的頭
Expires: -1 控制瀏覽器是否要緩衝資源,如果設定為0或-1,瀏覽器就不緩衝,並且他還可以被設定為一個是兼職,指定資源被緩衝到什麼時候
Cache-Control: no-cache 控制瀏覽器是否要緩衝資源
Pragma: no-cache 控制瀏覽器是否要緩衝資源
?有這麼多控制是否緩衝的頭是由於曆史原因導致的。一般上面的三個頭一起使用
Connection: close/Keep-Alive 是否保持串連
Date: Tue, 11 Jul 2000 18:23:51 GMT目前時間