01-web開發相關概念與常見web伺服器
Web開發的相關知識
Web,在英語中web即表示網頁的意思,它用於表示Internet主機上供外界訪問的資源。
Internet上供外界訪問的Web資源分為:
靜態web資源(如html介面):指web頁面中供人們瀏覽的資料始終是不變的。
動態web資源:指web頁面中供人們瀏覽的資料是由程式產生的,不同時間點訪問web頁面看到的內容各不相同。
靜態web資源開發技術
Html
常用動態web資源開發技術
JSP/Servlet、ASP、PHP等
在Java中,動態web資源開發技術稱為Javaweb,我們課程的重點也是教大家如何使用Java技術開發動態web資源,即動態web頁面。
WEB伺服器
學習web開發,需要先安裝一台web伺服器,然後再在web伺服器中開發相應的web資源,供使用者使用瀏覽器訪問。
常見WEB伺服器
WebLogic是BEA公司的產品,是目前應用最廣泛的Web伺服器,支援J2EE規範,而且不斷的完善以適應新的開發要求。
另一個常用的Web伺服器是IBM公司的WebSphere,支援J2EE規範。
在小型的應用系統或者有特殊需要的系統中,可以使用一個免費的Web伺服器:Tomcat,該伺服器支援全部JSP以及Servlet規範。
JBOSS支援J2EE規範,和Tomcat共同搭建起支援J2EE規範的伺服器。
Tomcat官方網站:
http://jakarta.apache.org
擷取Tomcat安裝程式包
tar.gz檔案時Linux作業系統下的安裝版本
exe檔案時Windows系統下的安裝版本
zip檔案時Windows系統下的壓縮版本
安裝Tomcat
互連網上常用協議的工作連接埠
http 80
smtp 25
pop3 110
ftp 23
https 443
02-web伺服器啟動問題
常見啟動問題
Java_home環境變數
在windows中設定java_home環境變數
只要在setclasspath.bat批次檔第一次使用JAVA_HOME環境變數之前的任何地方,將JAVA_HOME環境變數設定為JDK的主目錄,就可以使用startup.bat檔案啟動Tomcat了。
連接埠佔用問題
Catalina_home環境變數的設定問題
03-tomcaat伺服器目錄結構
04-web應用和虛似目錄的映射
Web應用程式
Web應用程式指供瀏覽器訪問的程式,通常也簡稱為web應用。
一個web應用由多個靜態web資源和動態web資源群組成,如:
html、css、js檔案
Jsp檔案、java程式、支援jar包
設定檔等等......
組成web應用的這些檔案通常我們會使用一個目錄組織,這個目錄稱之為web應用所在目錄。
Web應用開發好後,若想供外界訪問,需要把web應用所在目錄交給web伺服器管理,這個過程稱之為虛擬目錄的映射。
<Context path="/itcast" docBase="c:\news"/>這種配置不好,需要重啟伺服器。
For Tomcat 6, unlike Tomcat 4.x, it is NOT recommended to place <Context> elements directly in the server.xml file. This is because it makes modifing the Context configuration more invasive since the main conf/server.xml file cannot be reloaded without restarting
Tomcat.
Context elements may be explicitly defined:
1.In the $CATALINA_BASE/conf/context.xml file: the Context element information will be loaded by all webapps.
2.In the $CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default file: the Context element information will be loaded by all webapps of that host.
3.In individual files (with a ".xml" extension) in the $CATALINA_BASE/conf/[enginename]/[hostname]/ directory. The name of the file (less the .xml extension) will be used as the context path. Multi-level context paths may be defined using #, e.g. foo#bar.xml
for a context path of /foo/bar. The default web application may be defined by using a file called ROOT.xml.
4.Only if a context file does not exist for the application in the $CATALINA_BASE/conf/[enginename]/[hostname]/, in an individual file at /META-INF/context.xml inside the application files. If the web application is packaged as a WAR then /META-INF/context.xml
will be copied to $CATALINA_BASE/conf/[enginename]/[hostname]/ and renamed to match the application's context path. Once this file exists, it will not be replaced if a new WAR with a newer /META-INF/context.xml is placed in the host's appBase.
5.Inside a Host element in the main conf/server.xml.
05-web應用組織圖和web.xml檔案的作用
Web應用的組成結構
開發web應用時,不同類型的檔案有嚴格的存放規則,否則不僅可能會使web應用無法訪問,還會導致web伺服器啟動報錯。
web.xml檔案
Web.xml檔案是整個web應用中最重要的設定檔,它必須放在WEB-INF目錄中。在開發web應用時,但凡涉及到對web應用中的web資源進行配置,通通是在web.xml檔案中進行設定。例如:
某個web資源配置為網站首頁
將servlet程式映射到某個url地址上
為web應用配置監聽器
為web應用配置過濾器
……
認識web.xml檔案的作用:
通過web.xml檔案把某個web資源配成網站首頁。
06-配置虛似主機(搭建網站)
配置虛擬機器主機
在一個tomcat伺服器中可以放置多個網站,所謂配置虛擬機器主機,就是在tomcat伺服器中配置一個網站。
如需在WEB伺服器中配置一個網站,需使用Host元素進行配置,例:
<Host name="site1" appBase="c:\app"></Host>
配置的主機(網站)要想被外部存取,必須在DNS伺服器或windows系統中註冊。
配置多個網站。
預設虛擬機器主機。
<Host name="www.sina.com" appBase="c:\sina">
<Context path="/mail" docBase="c:\sina\mail"/>
</Host>
07-UML描述web資源訪問流程
其它問題
畫圖示範web資源的訪問過程
打包web應用war
jar -cvf news.war news 打成war包後伺服器可以自動解壓
配context元素的reloadable元素,讓tomcat自動載入更新後的web應用,實際開發最好不要配置
Tomcat的體繫結構和配置https連接器 公開金鑰 私密金鑰
keytool -genkey -alias tomcat -keyalg RSA
Tomcat伺服器的管理平台
web應用的開發前景B/S C/S
08-tomcat體繫結構
09-軟體密碼學基礎和配置tomcat的https連接器
作業
在webapps目錄下建立一個可供外界訪問的web應用。
在server.xml檔案中進行配置,把c:盤下的某一個web應用映射成可供外界訪問的虛擬目錄。
在catalina/localhost目錄下進行設定,把c:盤下的某一個web應用映射成可供外界訪問的虛擬目錄。
在server.xml檔案中配置一台www.itcast.cn的虛擬機器主機,然後在window系統中註冊www.itcast.cn這台主機。
在虛擬機器主機的根目錄下建立一個名稱為itcast的web應用,並在該應用下建立一個index.html頁面,然後把web應用映射成預設web應用。index.html版面設定為web應用的首頁。
將web伺服器連接埠更改為80連接埠。
畫圖說明瀏覽器是如何訪問到web伺服器下的web主機下的web應用下的web資源的。
Context元素常用屬性
dcoBase
path
reloadable
unpackWar
10-http協議概述和動手實踐認識Http協議
HTTP協議
什麼是HTTP協議
用戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需遵守一定的通訊格式,HTTP協議用於定義用戶端與web伺服器通訊的格式。
使用telnet程式連上web伺服器,並使用HTTP協議擷取某個頁面,快速瞭解HTTP協議的作用。
安裝IE瀏覽器外掛程式HttpWatch,查看IE瀏覽器通過HTTP協議擷取某個頁面。
cmd.exe-->telnet localhost 8080-->GET /hailangxing/1.html HTTP/1.1
Host:(預設主機直接斷行符號)
HTTP協議簡介
HTTP是hypertext transfer protocol(超文字傳輸通訊協定 (HTTP))的簡寫,它是TCP/IP協議的一個應用程式層協議,用於定義WEB瀏覽器與WEB伺服器之間交換資料的過程。
HTTP協議是學習JavaWEB開發的基石,不深入瞭解HTTP協議,就不能說掌握了WEB開發,更無法管理和維護一些複雜的WEB網站。
HTTP協議的版本:HTTP/1.0、HTTP/1.1
HTTP1.0和HTTP1.1的區別
在HTTP1.0協議中,用戶端與web伺服器建立串連後,只能獲得一個web資源。
HTTP1.1協議,允許用戶端與web伺服器建立串連後,在一個串連上擷取多個web資源。
使用telnet舉例說明。
一個好多同學搞不清楚的問題:
一個web頁面中,使用img標籤引用了三幅圖片,當Client Access Server中的這個web頁面時,用戶端總共會訪問幾次伺服器,即向伺服器發送了幾次HTTP請求。
設計的時候要減少HTTP請求數
11-Http請求行和請求方式詳解
HTTP請求
用戶端連上伺服器後,向伺服器請求某個web資源,稱之為用戶端向伺服器發送了一個HTTP請求。一個完整的HTTP請求包括如下內容:
一個請求行、若干要求標頭、以及實體內容。
舉例:
GET /book/java.html HTTP/1.1 請求行
Accept:*/* 多個訊息頭
Accept-Language:en-us
Connection:Keep-Alive
Host:localhost
Referer:http://localhost/links.asp
User-Agent:Mozilla/4.0
Accept-Encoding:gzip,deflate
一個空行
請求行:請求行用於描述用戶端的請求方式、請求的資源名稱、以及使用的HTTP協議版本號碼。
要求標頭:要求標頭用於描述用戶端請求哪台主機,以及用戶端的一些環境資訊等。
HTTP請求的細節——請求行
請求行中的GET稱之為請求方式,請求方式有:
POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用的有:GET、POST
使用者如沒有設定,預設情況下瀏覽器向伺服器發送的都是get請求,例如在瀏覽器直接輸地址訪問,點超連結訪問等都是get,使用者如想把請求方式改為post,可通過更改表單的提交方式實現。
不管POST或GET,都用於向伺服器請求某個WEB資源,這兩種方式的區別主要表現在資料傳遞上:
如請求方式為GET方式,則可以在請求的URL地址後以?的形式帶上交給伺服器的資料,多個資料之間以&進行分隔,例如:
GET/mail/1.html?name=abc&password=xyz HTTP/1.1
GET方式的特點:在URL地址後附帶的參數是有限制的,其資料容量通常不能超過1K。
如請求方式為POST方式,則可以在請求的實體中內容中向伺服器發送資料,Post方式的特點:傳送的資料量無限制。
預設get,可以改為post
<form action="/1.html" method="post">
<input type="text" name="username"><input type="submit" value="提交">
</form>
12-Http要求標頭各個頭欄位詳解
HTTP請求的細節——訊息頭
用於HTTP請求中的常用頭
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;MSIE5.5;Windows NT 5.0)
Cookie
Connection:close/Keep-Alive
Data:Tue,11 Jul 2000 18:23:51 GMT
要求標頭
Accept:用於告訴伺服器,客戶機支援的資料類型
Accept-Charset:用於告訴伺服器,客戶機採用的編碼
Accept-Encoding:用於告訴伺服器,客戶機支援的資料壓縮格式
Accept-Language:客戶機的語言環境
Host:客戶機通過這個頭告訴伺服器,想訪問的主機名稱
If-Modified-Since:客戶機通過這個頭告訴伺服器,資源的緩衝時間
Referer:客戶機通過這個頭告訴伺服器,它是從哪個資源來訪問伺服器的(防盜鏈)
User-Agent:客戶機通過這個頭告訴伺服器,客戶機的軟體環境
Cookie:客戶機通過這個頭可以向伺服器帶資料
Connection:close/Keep-Alive
Date:Tue,11 Jul 2000 18:23:51 GMT
13-Http響應和響應狀態行詳解
HTTP響應
一個HTTP響應代表格服務器向用戶端回送的資料,它包括:
一個狀態頭、若干訊息頭、以及實體內容。
舉例:
HTTP/1.1 200 OK 狀態行
Server:Microsoft-IIS/5.0 多個回應標頭
Date:Thu,13 Jul 2000 05:46:53 GMT
Content-Length:2291
Content-Type:text/html
Cache-control:private
一個空行
<HTML> 實體內容
<BODY>
……
狀態行:狀態行用於描述伺服器對請求的處理結果。
多個回應標頭:訊息頭用於描述伺服器的基本資料,以及資料的描述,伺服器通過這些資料的描述資訊,可以通知用戶端如何處理等一會兒它回送的資料。
實體內容:代表格服務器向用戶端回送的資料。
狀態行
格式:HTTP版本號碼 狀態代碼 原因敘述<CRLF>
舉例:HTTP/1.1 200 OK
狀態代碼用於表示伺服器對請求的處理結果,它是一個三位的十進位數。響應狀態代碼分為5類,如下所示:
狀態代碼 含義
100~199 表示成功接收請求,要求用戶端繼續提交下一次請求才能完成整個處理過程
200~299 表示成功接收請求並已完成整個處理過程,常用200
300~399 為完成請求,客戶需進一步細化請求。例如,請求的資源已經移動到一個新地址,常用302、307和304
400~499 用戶端的請求有錯誤,常用404、403
500~599 伺服器端出現錯誤,常用500
200-->OK
302-->找別人
307、304-->拿緩衝
403-->有資源, 但沒有存取權限
404-->伺服器沒這個資源
500-->伺服器端出問題了
14-Http回應標頭欄位詳解
HTTP需要細節——常用回應標頭
HTTP請求中的常用回應標頭
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
Transfer-Encoding:chunked
Set-Cookie:SS=Q0=5Lb_nQ;path=/search
ETag:W/"7777-1242234904000"
Expires:-1
Cache-Control:no-cache
Pragma:no-cache
Connection:close/Keep-Alive
Date:Tue,11 Jul 2000 18:23:51 GMT
回應標頭:
Location:這個頭配合302狀態代碼使用,用於告訴客戶找誰
Server:伺服器通過這個頭,告訴瀏覽器伺服器的類型
Content-Encoding:伺服器通過這個頭,資料的壓縮格式
Content-Length:伺服器通過這個頭,告訴瀏覽器回送資料的長度
Content-Type:伺服器通過這個頭,告訴瀏覽器回送資料的類型
Last-Modified:伺服器通過這個頭,告訴瀏覽器當前資源緩衝時間
Refresh:伺服器通過這個頭,告訴瀏覽器隔多長時間重新整理一次
Content-Disposition:伺服器通過這個頭,告訴瀏覽器以下載方式開啟資料
Transfer-Encoding:伺服器通過這個頭,告訴瀏覽器資料的傳送格式
ETag:緩衝相頭的頭
Expires:伺服器通過這個頭,告訴瀏覽器把回送的資源緩衝多長時間,-1或0,則是不緩衝
Cache-Control:no-cache
Pragma:no-cache
伺服器通過以上兩個頭,也是控制瀏覽器不要快取資料