WEB的發展歷程、Tomcat伺服器、與HTTP協議
阿新 • • 發佈:2019-01-27
1 web的發展歷程
C/S和B/S都是軟體架構的兩種不同的表現形式:
C/S架構:Client/Server:客戶端和服務端的架構.
該軟體執行在電腦桌面:比如,QQ,FeiQ,POS機/火車站買票.
開發語言:Delphi,VB,VC++,C#,JAVA awt ,swing等.
特點:一般的,服務端僅僅是安裝一個數據庫和資料儲存,所有程式的程式碼(功能/介面)都編寫在客戶端軟體中,(把所有業務邏輯都寫在客戶端,介面渲染也在客戶端).
優點:直觀,使用者體驗好,安全性高等.
缺點:每次升級,需要重新安裝,移植性較低,開發和維護成本較高.
B/S架構:Browser/Server:瀏覽器和服務端的架構(通過瀏覽器訪問的應用).
該軟體是通過瀏覽器訪問.比如入口網站,管理系統等.
其實B/S是特殊的C/S,因為瀏覽器是一個特殊的客戶端.
開發語言:JSP,PHP,ASP等.
特點:在服務端編寫程式碼,所有的業務邏輯都有服務端完成.客戶端只負責介面的渲染.
優點:可移植性很高,開發和維護較好.
缺點:使用者體驗不夠好,介面不夠豐富,安全性很低.
瘦客戶端:傳統的B/S:服務端:負責業務邏輯.客戶端:負責介面渲染. 富客戶端:超級BS=CS+BS;介面華麗. 服務端:負責業務邏輯. 客戶端:負責介面渲染+少量的業務邏輯. 開發技術:Ext.js,Flash,EasyUI,JavaFX等.
2 伺服器
伺服器分類:
軟體伺服器:其實就是一個軟體,提供了B/S應用執行環境。
硬體伺服器:其實就是一臺電腦,該電腦安裝了軟體伺服器。
JavaWeb的軟體伺服器的分類:
1):http伺服器,用於執行靜態的頁面.
2):Web伺服器,實現了JavaEE的部分功能(比如Servlet/JSP),沒有實現javaEE中的EJB規範.
Tomcat,Jetty等.
3):應用伺服器,實現了JavaEE全部的規範,支援EJB的
TomcatEE,GlassFish ,JBoss,Weblogic(12306),WebSphere
Servlet容器為JavaEeb應用提供執行環境,它負責管理Servlet和JSP的生命週期,以及管理他們的共享資料.
Servlet容器也稱為JavaWeb容器,或者Servlet/JSP容器--->Tomcat
Tomcat伺服器(7.0.64)的安裝使用:
(bin目錄):Tomcat的工具,啟動,關閉等.
(conf目錄):裝了 Tomcat的配置檔案.
(lib目錄):Tomcat的核心包和依賴的jar包.
logs目錄:裝了日誌檔案.
temp目錄:臨時目錄,上傳檔案的臨時檔案.
webapps目錄:預設情況下的部署專案的路徑.
work目錄:工作目錄,裝JSP翻譯成java檔案的程式碼
1.安裝目錄不能使用中文的,並且安裝路徑不允許出現空格,
2.啟動Tomcat伺服器:Tomcat根/bin/startup.bat
直到控制檯沒有列印重大的錯誤,Exception,沒有一閃而過,就表示啟動成功.Tomcat的預設埠是8080;
訪問:開啟瀏覽器:
http://伺服器所在的主機的IP:伺服器的埠號,/資源名字
http://伺服器所在主機的名字:伺服器的埠號/資源名字
若伺服器在本機:
http://本機的IP:伺服器的埠號/資源名字
http://127.0.0.1:伺服器的埠號/資源名字
http://localhost:伺服器的埠號/資源名字
Tomcat的常見錯誤:
1):沒有成功啟動Tomcat,就開始訪問.-->無法顯示此網頁
2):出現404的錯誤提示,HTTP Status 404
當前訪問的資源地址不存在的時候,就報404錯誤.
此時的問題是,是我們自己造成的,把資源的名字寫錯了.
3):Tomcat成功啟動之後,再去啟動當前的Tomcat.
Tomcat的埠已經被佔用,埠衝突.
4):不能亂改動Tomcat中配置檔案的結構.
檢視日誌檔案的,找到錯誤的的位置,錯誤原因-->再修改.
5):在XML配置檔案中使用中文,此時XML檔案必須使用UTF-8的編碼.
XML檔案:檔案內容的編碼和檔案本身的編碼要相同,都為UTF-8.
Tomcat的常見配置
Tomcat的預設埠是8080;
但是,HTTP協議的預設埠是80,而我們在訪問的時候,是遵循http協議的,
如果是80埠:http://localhost:80/index.jsp
http://localhost/index.jsp
修改Tomcat根/conf/server.xml檔案中,預設第71行.
每次配置完之後都要重新啟動Tomcat
Tomcat的安裝有兩種版本:
1):減壓版,減壓之後,配置java_home可用.
2):安裝版,在電腦上安裝一個伺服器.
本身沒有差別,但是設定在開機的時候,自動啟動Tomcat.
把Tomcat作為伺服器安裝在Windows的伺服器列表中:
使用Tomcat/bin/service.bat:
安裝服務:service install
解除安裝服務:service remove
安全配置:賬號跟密碼.
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user roles="manager-gui,admin-gui" password="123456" username="admin"/>
JavaWeb專案結構:
appDemo(web應用根目錄) 根目錄下的檔案外界可以直接訪問
--html,jsp,css,javascript檔案等.
--WEB-INF目錄 該目錄下的檔案外界無法直接訪問,由web伺服器負責呼叫.
-classes目錄-(java類編譯之後的class檔案)
-lib目錄-(java類執行所依賴的jar包)
-web.xml檔案-(web應用的配置檔案)
搭建專案的時候記得改變專案的輸出目錄:也就是改變classpath的路徑,從預設的bin目錄改變為webapp/WEB-INF/class中:
以後把專案給別人,只給webapp目錄.
新增Tomcat外掛
1).把外掛jar包拷貝到D:\Eclipes\Eclipes4jee\eclipse\dropins
2).記得在eclipse中的preferences中設定Tomcat的新增路徑為D:\JAVA\Tomcat\apache-tomcat-7.0.57
3).重新啟動Tomcat伺服器.
部署web專案:
方法1:直接把專案的web跟路徑,拷貝到Tomcat跟/webapps目錄中.
該方式可行,而且是MyEclipse工具的部署方式.
缺點:
1:不支援熱部署,(程式碼變動之後,需要重新部署,重新部署的成本很大).
2:把所有的專案都部署在該路徑,啟動越來越慢,若其中一個專案有問題,Tomcat是啟動不了.
方法2:告訴Tomcat伺服器,從指定的路徑去部署專案.
1):找到Tomcat根/conf/server.xml檔案.
2):在<Host>元素之間,編寫<Context>元素,具體程式碼如下:
<Context docBase="D:\Java EE\Cookie-Session\webapp" path=""/>
3):訪問當前專案的路徑:http://ip:port/contextPath/資源名稱
注意:多個<Context>元素的path不能相同.
虛擬主機配置:
需求:有兩個公司的web應用都發布在同一個Tomcat伺服器上,可以為每家公司建立一個虛擬主機.
www.daidu.com www.google.com
修改Windows系統中的C:/Windows/system32/driver/etc/hosts.
配置二級域名,會使用到.
3 HTTP協議
特點:無狀態,預設埠是80 https:
WEB瀏覽器與web伺服器之間的一問一答的互動過程必須遵循一定的規則,就是HTTP協議.
HTTP是hypertext transfer Protocol(超文字傳輸協議)的簡寫,它是TCP/IP協議上的一個應用層協議,用於定義WEB瀏覽器與web伺服器之間交換資料的過程以及資料本身的格式.
HTTP協議到底約束了什麼:
1.約束了瀏覽器以何種格式向服務端發生資料:
2.約束了伺服器應該以何種格式來接受客戶端發生的資料:
3.約束了伺服器應以何種格式來反饋資料給瀏覽器;
4.約束了瀏覽器應以何種格式來接收伺服器反饋的資料.
HTTP1.0規範 跟 HTTP1.1規範
HTTP1.0規範:若請求N個資源,得建立N次連線,傳送N次請求,接收N次響應,關閉N次連線,
每次請求之間都要建立單獨的連線,請求,響應,響應完關閉該次連線:
缺點:每請求一個資源都要單獨的建立新的連線,請求完並關閉連線.
解決方案:能在一次連線之間,多次請求,多次響應,響應完成之後再關閉連線.
HTTP1.1規範:能在一次連線之間,多次請求,多次響應,響應完之後再關閉連線.
特點: 在一個TCP連線上可以傳送多個HTTP請求和響應,多個請求和響應過程可以重疊進行,增加了更多的請求頭和響應頭
瀏覽器給伺服器傳送資料:一次請求
伺服器給瀏覽器反饋資料:一次響應
HTTP協議的版本:HTTP/1.0,HTTP1.1,HTTPS2.0
HTTP請求概述
請求資訊:
包含三大部分:請求行,請求頭,請求實體.
請求行:位於請求資訊的第一行,格式:請求方式get/post 資源路徑 HTTP版本號
get請求方式:a,若請求伺服器上的某個資源,沒有指定請求方式,則預設為GET方式
b,可以通過GET方式向伺服器傳遞資料,具體方式就是在URL請求路徑加上?多個引數分割
post請求方式:a,若使用post請求方式傳遞資料,可以藉助form表單的method="post"
b,資料安全,且長度沒有限制
請求頭:<1>,Accept:瀏覽器可接受的MIME型別(內容型別)(Tomcat安裝目錄/conf/web,xml中查詢)
<2>,Accept-Charset:告知伺服器,客戶端支援哪種字符集
<3>,Accept-Encoding:瀏覽器能夠進行解碼的資料編碼方式
<4>,Accept-Language:瀏覽器支援的語言.
<5>,Referer:當前頁面有哪個頁面訪問過來的.
<6>,Content-Type:通知伺服器請求正文的MIME型別.
<7>,Content-Length:請求正文的長度
<8>,If-Modified-Since:通知伺服器,快取的檔案的最後修改時間.
<9>User-Agent:通知伺服器瀏覽器型別.
<10>,Connection:表示是否需要持久連線.如果伺服器看到這裡的值為"keep-Alive",或者看到的請求使用的是HTTP 1.1(HTTP1.1預設進行持久連線)
請求實體:從第一個空行開始,後面的都是正文.(可以沒有),只有POST請求才有請求實體
響應資訊:
包含三大部分:
響應行:位於響應資訊的第一行.格式:HTTP版本號 狀態碼:200(OK) 404(資源名寫錯了) 500(服務端後臺的java程式碼寫錯了)
響應頭:Server:告訴客戶端伺服器使用的容器型別
Content-Type:當前響應的MIME格式:text/html--->網頁文字
Transfer-Encoding:是否要加密
Date:響應的時間,什麼時候響應的.
響應實體
GET和POST的區別(面試容易考到):
Get方式請求:
1):請求的資料全部在瀏覽器位址列(很不安全).
2):觀察請求資訊:請求資訊會全部儲存到請求行中.
Post方式請求:
1):請求的資料不會出現在瀏覽器的位址列(比較安全)
2):觀察請求資訊:請求資訊會全部儲存到請求實體中
引數連線:資源?引數名=引數值&引數名=引數值&....
資源後第一個引數使用?連線,其他使用&連線.
GET和POST請求的區別:
1):GET的請求資料在位址列,而POST不會,POST比GET跟安全.
2):POST請求的引數存放在請求實體中,而get存放於請求行中.
3):GET方式請求的資料不能超過2k,而POST沒有上限.
比如檔案上傳時,必須使用POST方式.
4):GET可以快取,而POST沒有快取
查詢的時候使用GET其他時候使用POST.表單全部使用post提交,
哪些時候是GET呢?
1:直接在瀏覽器位址列敲回車.
2:表單中,method=get.
3:超連結.
只有表單中使用method=post,才是POST方式.