1、web概述
靜態web資源:內容是靜態的,不一樣的人在不一樣的時間來訪問時都是相同的內容。HTML、CSS、JS
動態web資源:內容是由程序生成的,不一樣的人在不一樣的時間訪問的內容極可能是不一樣的。
常見的動態web資源開發技術:
ASP、PHP、JSP/Servlet
C/S B/S之爭:
雲、移動互聯網、html五、物聯網
web服務器軟件
一、WebLogic是BEA公司的產品,是目前應用最普遍的Web服務器,支持J2EE規範,並且不斷的完善以適應新的開發要求,啓動界面如圖
商用付費、企業經常使用、持續更新
二、
另外一個經常使用的Web服務器是IBM公司的WebSphere,支持J2EE規範,啓動界面如圖
三、在小型的應用系統或者有特殊須要的系統中,可使用一個免費的Web服務器:Tomcat,該服務器支持所有JSP以及
Servlet規範,啓動界面如圖
2、TOMCAT服務器的安裝與配置
1.常見服務器:WebLogic(BEA)、webSphere(IBM)、Tomcat(Apache)
2.Tomcat 的下載與安裝
下載地址:http://tomcat.apache.org/
安裝目錄不能包含中文和空格
JAVA_HOME環境變量指定Tomcat運行時所要用的jdk所在的位置,注意,配到目錄就好了,不用指定到bin
端口占用問題:netstat -ano命令查看端口占用信息
Catalina_Home環境變量:startup.bat啓動哪一個tomcat由此環境變量指定,若是不配置則啓動當前tomcat,推薦不要配置此環境變量
啓動:雙擊bin目錄下的startup.bat
輸入 http://localhost:8080/驗證是否啓動成功
端口占用問題:
netstat -ano命令:查看佔用端口的進程pid,在用任務管理器關閉
1.tomcat的安裝配置
tomcat5要求jdk1.4以上
tomcat6要求jdk1.5以上
tomcat7要求jdk1.6以上
JAVA_HOME環境變量: 指定tomcat啓動時使用的jdk所在的位置
Catalina_Home環境變量:指定tomcat在啓動時啓動哪一個tomcat,通常不推薦配置
localhost:127.0.0.1 瀏覽器默認端口:80
修改tomcat/conf/server.xml 修改默認端口爲80
3.Tomcat的目錄結構
bin--存放tomcat啓動關閉所用的批處理文件
conf--tomcat的配置文件,最終要的是server.xml
*實驗:修改servlet.xml,更改tomcat運行所在的端口號,從8080改成80
lib--tomcat運行所需jar包
logs--tomcat運行時產生的日誌文件
temp--tomcat運行時使用的臨時目錄,不須要咱們關注
webapps--web應用所應存放的目錄
work--tomcat工做目錄,後面學jsp用到
4.虛擬主機(一個真實主機能夠運行多個網站,對於瀏覽器來講訪問這些網站感受起來就像這些網站都運行在本身的獨立主機中同樣,因此,咱們能夠說這裏的每個網站都運行在一個虛擬主機上,一個網站就是一個虛擬主機)
虛擬主機:
一個tomcat能夠認爲是一臺真實主機.在一臺真實主機中能夠配置多個站點,這些站點在訪問者看來訪問他們就像在訪問各自獨立的主機同樣,因此咱們能夠認爲這些站點都運行在tomcat這臺真實主機當中的各自的虛擬主機當中.一個網站就能夠認爲是一個虛擬主機。
web應用:
一個虛擬主機中會有不少的web資源,可是web資源不能直接交給虛擬主機管理,須要按照必定方式
組織成web應用虛擬主機
才能使用.通常來講咱們會按照功能將某一功能相關的全部的web資源組織成一個web應用後再交給虛擬主機。
4.1 爲
虛擬主機
配置web應用:
一、在server.xml中<Engine>標籤下配置<Host>,其中name屬性指定虛擬主機名,appBase指定虛擬主機所在的目錄
<Context path="" docBase="F:\news"><!-- path是虛擬路徑,docBase是真實路徑-->
引出一個概念:web應用的虛擬目錄映射(在下面5.3)
二、只在servlet.xml中配置Hosts,還不能是其餘人經過虛擬主機名訪問網站,還須要在DNS服務器上註冊一把,咱們可使用hosts文件模擬這個過程
三、默認虛擬主機:在配置多個虛擬主機的狀況下,若是瀏覽器使用ip地址直接訪問網站時,該使用哪一個虛擬主機響應呢?能夠在<Engine>標籤上設置defaultHost來指定
4.2
配置
虛擬主機
一種:在conf/server.xml中<Engin>標籤下配置<Host>標籤就能夠爲tomcat增長一臺虛擬主機了 一、name -- 指定虛擬主機的名稱,瀏覽器經過這個名稱訪問虛擬主機 二、appBase -- 虛擬主機管理的目錄,放置在這個目錄下的web應用當前虛擬主機能夠自動加載
*因爲瀏覽器訪問地址時,須要將地址翻譯成對應的ip才能找到服務器,這其中翻譯的過程是由DNS服務器來實現的.咱們在作實驗的時候沒有辦法去修改dns服務器,此時可使用hosts文件模擬dns的功能,從而完成實驗. *缺省虛擬主機:若是來訪者是經過ip來訪問,這個時候服務器沒法辨別當前要訪問的是哪臺虛擬主機中的資源,此時訪問缺省虛擬主機.缺省虛擬主機能夠在server.xml中engin標籤上經過defaultHost屬性進行配置.
5.web應用(web資源不能直接交給虛擬主機,須要按照功能組織用目錄成一個web應用再交給虛擬主機管理)
配置虛擬主機的例子: =======================================================
配置一臺虛擬主機,修改hosts文件模擬DNS的做用使其能夠訪問,用三種方式爲其配置三個web應用,並配置其中一個web應用爲缺省web應用, 並配置其主頁。
十一、 baidu
|--game(ROOT)
|--1.html
|--WEB-INF
|--
classes文件夾
|--
lib文件夾
|--
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<welcome-file-list>
<welcome-file>1.html</welcome-file>
</welcome-file-list>
</web-app>
2二、 配置tomcat/conf/server.xml:<Engin>標籤下配置<Host>標籤
<Host name="www.baidu1.com" appBase="F:\webexample\baidu" />
修改C:\Windows\System32\drivers\etc下的hosts文件:讓本地能夠訪問。
添加: 127.0.0.1 www.baidu1.com
緣由:tomcat/conf/下的server.xml文件中有一個缺省虛擬主機:若是來訪者是經過ip來訪問,這個時候服務器沒法辨別當前要訪問的是哪臺虛擬主機中的資源,此時訪問缺省虛擬主機。
但:缺省虛擬主機能夠在server.xml中engin標籤上經過defaultHost屬性進行配置.
<Engine name="Catalina" defaultHost="localhost">
=======================================================================
5.1 web應用的目錄結構
開發web應用時,不一樣類型的文件有嚴格的存放規則,不然不只可能會使web應用沒法訪問,還會致使web服務器啓動報錯。
web應用目錄
|
-html、css、js、jsp
|
-WEB-INF
|
-classes
|
-lib
|
-web.xml
web應用目錄結構: 若是目錄結構不合法可能會出現各類奇葩的問題.
news
|
|--靜態資源和JSP文件均可以直接放置在web應用的目錄下,直接放在web應用下的內容,瀏覽器能夠直接訪問到
|
|--WEB-INF -- 能夠沒有,可是最好有,若是有則必定要保證他的目錄結構是完整的.放置在WEB-INF目錄下的全部資源瀏覽器沒有辦法直接進行訪問
|--classes -- 動態web資源運行時的class文件要放在這個目錄下
|--lib -- 動態web資源運行時所依賴的jar包要放在這個目錄下
|--web.xml -- 整個web應用的配置文件,配置主頁/Servlet的映射/過濾器監聽器的配置都須要依賴這個文件進行
5.2 web.xml文件的做用:
某個web資源配置爲web應用首頁
將servlet程序映射到某個url地址上
爲web應用配置監聽器
爲web應用配置過濾器
但凡涉及到對web資源進行配置,都須要經過web.xml文件
*實驗:配置一個web應用的主頁
5.3 web應用的虛擬目錄映射
(1)在server.xml的<Host>標籤下配置<Context path="虛擬路徑" docBase="真實路徑">若是path=""則這個web應用就被配置爲了這個虛擬主機的默認web應用
下面的不太好,每次改過都要重啓服務器,不推薦(1):
*web應用的虛擬路徑映射 -- 就是爲web應用的真實存在的路徑配置一個瀏覽器訪問的虛擬路徑
<Context path="/news" docBase="E:\news" />
*配置缺省web應用 -- 默認的web應用,當不寫web應用名時就訪問這個web應用
<Context path="" docBase="E:\news" />
(2)在tomcat/conf/引擎名/虛擬主機名 之下創建一個.xml文件,其中文件名用來指定虛擬路徑,若是是多級的用#代替/表示,文件中配置<Context docBase="真實目錄">,若是文件名起爲ROOT.xml則此web應用爲默認web應用
(21)E:\tomcat8\conf\Catalina\localhost下 新建news2.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="E:\news"/>
好處:不用重啓tomcat; 缺點:文件名不能包含符號「/」
文件名爲代替。
news3#xxx.xml
(23)
*配置
缺省web應用
-- 默認的web應用,當不寫web應用名時就訪問這個web應用
文件名爲ROOT.xml(全大寫)
每次改過都不用重啓服務器,推薦。
(3)直接將web應用放置到虛擬主機管理的目錄下,虛擬主機就能夠找到這個web應用,從而管理這個web應用
放入 E:\tomcat8\webapps
只要將web應用文件夾的名稱改成ROOT,這個web應用就是缺省web應用
~若是三處都配置默認web應用則server.xml > config/.../xx.xml > webapps
5.4雜項:開發一個網站,將開發好的web應用發給別人,須要網絡傳輸,則:
(1)打web應用的war包:java提供的打包工具
方式一:jar -cvf news.war * 方式二:直接用壓縮工具壓縮爲zip包,該後綴爲.war
例如上面baidu的例子:
將ROOT.war拷貝到
F:\tomcat8\webapps中,幾秒後出現一個ROOT文件夾,裏面有:
(2)
疑問之處:1)、 本來的ROOT中未配置主頁,爲何會打開Tomcat主頁呢?緣由是在conf文件夾下的其父類web.xml文件中有配置,其繼承了父類。
通用context和通用web.xml的配置解釋上述疑問:全部的<Context>都繼承子conf/context.xml,全部的web.xml都繼承自conf/web.xml
(3)配context元素的reloadable元素,讓tomcat自動加載更新後的web應用,當java程序修改後不用重啓,服務器自動重新加載。
reloadable讓tomcat自動加載更新後的web應用,當java程序修改後不用重啓,服務器自動重新加載,開發時設爲true方便開發,發佈時設爲false,提升性能
l查看tomcat關於context元素的文檔
(4)Tomcat管理平臺,能夠在conf/tomcat-users.xml下配置用戶名密碼及權限
6.做業
***************************************************************************************************************************************************************************************************************************************下
配置一臺虛擬主機,修改hosts文件模擬DNS的做用使其能夠訪問,用三種方式爲其配置三個web應用,並配置其中一個web應用爲缺省web應用, 並配置其主頁。
6.一、 google
|--game(ROOT)
|--1.html
|--WEB-INF
|--
classes文件夾
|--
lib文件夾
|--
web.xml
在conf/server.xml中<Engin>標籤下配置<Host>標籤:
<Host name="www.google.com" appBase="F:\webexample\google" />
6.二、配置hosts文件:
6.三、配置三種web應用:
6.3.一、與google文件夾同目錄文件夾:game,其中有一個1.html文件。
(1) 配置tomcat/conf/server.xml:<Engin>標籤下配置<Host>標籤以下:
<Host name="www.google.com" appBase="F:\webexample\google" > <Context path="game" docBase="F:\webexample\game"/> </Host>
(2)
將game改成缺省web應用:將
<Engin>標籤下配置<Host>標籤改成以下:
<Host name="www.google.com" appBase="F:\webexample\google" > <Context path="" docBase="F:\webexample\game"/> </Host>
當同時配置三種缺省web應用6.3.3(2)和6.3.2(2)、6.3.1(2)的時候,
6.3.1(2)
方法起到做用。
6.3.二、與google文件夾同目錄文件夾:mail,其中有一個1.html文件。
<?xml version="1.0" encoding="UTF-8"?> <Context docBase="F:\webexample\mail"/>
當同時配置兩種缺省web應用6.3.3(2)和6.3.2(2)的時候,
6.3.2(2)
方法起到做用。
6.3.三、與google文件夾同目錄文件夾:ftp,其中有一個1.html文件。
將ftp文件夾拷貝到F:\webexample\google文件夾下
6.3.四、若想把6.3.3(2)中文件變爲主頁,在ROOT文件夾下添加以下文件夾和文件:
google
|--ROOT
|--1.html
|--WEB-INF
|--
classes文件夾
|--
lib文件夾
|--
web.xml
web.xml
的內容爲:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<welcome-file-list>
<welcome-file>1.html</welcome-file>
</welcome-file-list>
</web-app>
****************************************************************************************************************************************************************************************************************************************上
Tip
:
Tomcat
體系架構
===========================================================================================================================================
===========================================================================================================================================
2、HTTP協議
OSI網絡七層協議:應用層(HTTP、FTP、SMTP、POP三、TELNET)-》表示層-》會話層-》傳輸層(TCP、UDP,簡稱爲TCP/IP協議)-》網絡層(IP,標識)-》數據鏈路層-》物理層css
1. HTTP協議概述
HTTP協議用於定義客戶端與web服務器通迅的格式。
HTTP是hypertext transfer protocol(超文本傳輸協議)的簡寫,它是TCP/IP協議的一個
應用層協議,用於定義WEB瀏覽器與WEB服務器之間交換數據的過程。
HTTP使用
請求-響應的方式進行傳輸,
一個請求對應一個響應,而且請求只能是由
客戶端發起的。
HTTP協議的版本:HTTP/1.0、HTTP/1.1,其中1.0一次請求發起一次鏈接,響應事後鏈接自動斷開。1.1裏每次請求響應後鏈接將保持一段時間,這段時間內能夠再執行請求響應。
HTTP幾句話:
功能:規定客戶端和服務器如何進行交互
基於TCP/IP協議的應用層協議
HTTP協議基於請求響應模型
一次請求對應一次響應
請求只能由客戶端發出,服務器只能被動的等待請求作出響應
telnet/httpwatche
十一、HTTP使用請求-響應的方式進行傳輸,一個請求對應一個響應,而且請求只能是由客戶端發起的。
2二、
利用Telnet演示請求與響應的過程(只是演示,不使用的,推薦用33)
cmd運行--》輸入telnet localhost 80,回車--》按鍵「ctrl+]」出現:
--》再回車(
時間過長,會提示:遺失對主機的鏈接
),出現
(停留
時間過長,會提示:遺失對主機的鏈接
)
:
(1)、在F:\tomcat8\webapps配置一個web應用:game文件夾,下面有個1.html文件;
(2)、重複
Telnet的過程,輸入:下面圖中前兩行,回車出現以下圖所示內容,最後一行是1.html文件中的內容;中間是HTTP響應消息
3三、安裝IE瀏覽器插件HttpWatch,查看IE瀏覽器經過HTTP協議獲取某個頁面。
IE中,菜單欄--》查看--》瀏覽器欄--》HttpWatch Professional,出現:
4四、
HTTP協議的版本:HTTP/1.0、HTTP/1.1,兩者區別:
(1)在HTTP1.0協議中,客戶端與web服務器創建鏈接後,只能得到
一個web資源。
(2)HTTP1.1協議,容許客戶端與web服務器創建鏈接後,在一個鏈接上獲取
多個web資源。
(3)利用telnet演示HTTP1.0和HTT1.1的區別
後面有一個閃爍的「_」,即等待符,能夠繼續輸入:GET......
(4)一個好多同窗搞不清楚的問題:
一個web頁面中,使用img標籤引用了三幅圖片,當客戶端訪問服務器中的這個web頁面時,客戶端總共會訪問幾回服務器,即向服務器發送了幾回HTTP請求。
2.
HTTP請求
2.1請求行
GET /news/1.html HTTP/1.1
請求方式 請求的資源名 所遵循的協議
七種請求方式: POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
(1)經常使用的有: GET、 POST
(2)
用戶如沒有設置,默認狀況下瀏覽器向服務器發送的都是get請求,例如在瀏覽器直接輸地址訪問,點超連接訪問等都是get,用戶如想把請求方式改成post,可經過更改表單的提交方式實現。
2.1.1請求方式:GET、POST:
GET請求方式和POST請求區別在於
請求參數在傳遞的過程當中方式不一樣。
若是是GET提交,
請求參數將會附加在請求的URL後面做爲
請求地址的一部分帶到服務器端,能夠傳輸的數據大小有限制通常
不容許超過1K。
若是是POST提交,請求參數
將會在http請求的實體內容中進行傳輸,這種方式傳輸的數據沒有大小限制。
利用form表單提交數據時,form代表明確的聲明要用POST提交,這時請求參數就是POST提交。
除此之外全部方式的請求參數都是GET提交。
即:其中GET方式在請求資源的URL後跟「?參數名=參數值&參數名=。。。」方式傳遞參數,傳輸的數據內容最大爲1K。
其中POST方式在請求實體中傳輸數據。
除了用Form表單明確用method指定用post方式提交數據之外,其餘的方式都是GET提交方式
2.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 想要訪問的虛擬主機名 localhost
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) 客戶端的一些基本信息
Cookie 會在後面講會話技術的時候單講
Connection: close/Keep-Alive 指定是否繼續保持鏈接
Date: Tue, 11 Jul 2000 18:23:51 GMT 當前時間
2.3實體內容
3.
HTTP響應
狀態碼 |
含義 |
100~199 |
表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程 |
200~299 |
表示成功接收請求並已完成整個處理過程,經常使用200 |
300~399 |
爲完成請求,客戶需進一步細化請求。例如,請求的資源已經移動一個新地址,經常使用30二、307和304 |
400~499 |
客戶端的請求有錯誤,經常使用404 |
500~599 |
服務器端出現錯誤,經常使用 500 |
3.1狀態行
HTTP/1.1 200 OK
格式: HTTP版本號 狀態碼 緣由敘述<CRLF>
狀態碼:用來表示本次請求的處理結果的代碼。
200:請求處理成功
302:請求重定向——在其餘地址發現了請求data。
30四、307:服務器通知瀏覽器使用緩存
304:發送附帶條件的請求時,條件不知足時返回,與重定向無關。(GET)
307:臨時重定向,與302相似,僅強制使用POST方法。
404:資源未找到——服務器沒法找到對應的資源。
500:服務器端錯誤(內部)
3.2若干響應頭
Location: http://www.it315.org/index.jsp 配合302實現請求重定向
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地址指定多長時間後刷新到哪一個URL
Content-Disposition: attachment;filename=aaa.zip 與下載相關的頭
Transfer-Encoding: chunked 傳輸類型,若是是此值是一個chunked說明當前的數據是一塊一塊傳輸的
Set-Cookie:SS=Q0=5Lb_nQ; path=/search 和cookie相關的頭,後面課程單講
ETag: W/"83794-1208174400000" 和緩存機制相關的頭
Expires: -1 通知瀏覽器是否緩存當前資源 ,若是這個頭的值是一個以毫秒爲單位值就是通知瀏覽器緩存資源到指定的時間點,若是值是0或-1則是通知瀏覽器禁止緩存
Cache-Control: no-cache 通知瀏覽器是否緩存資源:緩存相關的頭,若是爲no-cache則通知瀏覽器不緩存;
Pragma: no-cache 通知瀏覽器是否緩存資源:緩存相關的頭,若是爲no-cache則不緩存
以上三個頭都是用來控制緩存的,是由於歷史緣由形成的,不一樣的瀏覽器認識不一樣的頭,咱們一般三個一塊兒使用保證通用性。
Connection: close/Keep-Alive 是否保持鏈接
Date: Tue, 11 Jul 2000 18:23:51 GMT 當前時間
3.3實體內容
*額外做業:重寫學生信息管理系統的DAO,用Dom4j去實現