一、http協議
- http協議
它其實就是約定了客戶端和服務器端在執行網絡交互動作的時候一種規則。 執行http請求的時候,遵守的一種規范
http://www.baidu.com /
- http協議版本
使用最廣泛的是1.1的版本。 它是一種請求 - 響應 模型的協議。
1.0
請求 - 響應完畢后,連接關閉 , 如果還想接著請求,必須得重新連接
1.1
請求 - 響應完畢后,連接未關閉 ,還可以繼續發起請求
Http請求背后細節
http協議傳輸的數據包含三個部分 , 信息行 、 信息頭 、 信息體
* 請求
請求行
請求頭
請求體
* 響應
響應行
響應頭
響應體
GET請求
提交的數據:
請求行 :
GET /LoginDemo/login?username=admin&password=123456 HTTP/1.1
表示使用Get請求 , 表示請求什么路徑地址 ,表示使用什么版本的協議
請求頭
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://localhost:8080/LoginDemo/login.html
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Accept-Encoding: gzip, deflate
Host: localhost:8080
Connection: Keep-Alive
Accept : 聲明客戶端可以接收什么類型的數據
Referer : 表示請求從哪里過來的
Accept-Language : 表示客戶端支持的語言
User-Agent : 表示客戶端的信息
Accept-Encoding : 表示客戶端支持的壓縮格式
Host : 表示主機地址
Connection : 表示連接狀態。
請求體:
GET方式的請求,沒有請求體。 因為數據都是拼接到了地址上去了。
獲取到的數據:
響應行
HTTP/1.1 200 OK
表示服務器也支持1.1的版本協議 , 對這次請求處理的狀態碼是200 ,OK
響應頭
Server: Apache-Coyote/1.1 : 服務器版本
Content-Length: 75 : 返回的數據長度
Date: Sun, 21 May 2017 07:09:28 GMT : 響應時間
響應體
login failed ~ please use username : itheima , password : 10086 try again~
POST請求
提交的數據
請求行
POST /LoginDemo/login HTTP/1.1
意思和get請求的意思一樣,只不過這里的地址再也不跟數據了。
請求頭
Accept: application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */*
Referer: http://localhost:8080/LoginDemo/login.html
Accept-Language: zh-CN
User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
Host: localhost:8080
Content-Length: 29
Connection: Keep-Alive
Cache-Control: no-cache
Content-Type : 其實就是說明提交上去的數據是什么類型數據 。 是一個經過url編碼的form表單數據
Content-Length : 提交的數據長度
Cache-Control : 表示再次請求的時候,是否讀緩存。
請求體
username=itheima&password=123
是以流的形式寫給服務器的。
響應數據
響應行
響應頭
響應體
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Length: 75
Date: Sun, 21 May 2017 07:32:12 GMT
login failed ~ please use username : itheima , password : 10086 try again~
GET 和 POST方式的區別
-
GET
它的地址會帶上數據, http://www.HiWeb.com?name=aa&age=18
能夠帶的數據有限制。
由于數據會拼接到地址欄上面,所以不安全
-
POST
它的地址不帶數據,就是很干凈的地址而已。
帶的數據沒有限制。 (因為數據是以流的方式寫過去。)
由于數據沒有拼接,所以數據比較安全
額外多兩個頭字段 Content-Type Content-Length.
軟件架構
-
C/S架構
client【客戶端】 / server【服務器端】
如: QQ 、微信、 迅雷 、 LOL
必須得安裝一個客戶端,才能和服務器對接。
優點:
1. 視覺比較炫酷 、 用戶體驗好
2. 一部分資源|數據放在了本地 、減輕服務器壓力
缺點:
1. 占用本地硬盤空間
2. 更新比較困難、 服務器只要一更新,客戶端也得跟著更新
3. 平臺、系統環境的限制
-
B/S架構
browser【瀏覽器】 / server【服務器端】
如: 網頁游戲 、 網頁QQ 、
通過瀏覽器來和服務器對接
優點:
1. 不用安裝 、只要有瀏覽器就行。
2. 一般也不用做更新。
3. 不受平臺限制 、 不占用本地的空間。
缺點:
1. 用戶體驗不好。 比較卡。
2. 服務器壓力比較大、因為所有的資源都放在服務器。
Web資源
就是網絡上的任意資源都可稱之為web資源 、 就是服務器里面所有東西,都可以看做是web資源。
- 靜態資源
不管什么時候來,什么情況下見到的數據永遠不變。 圖片、 html網頁、 音樂、 ....
- 動態資源
根據不同的請求情況 、不同的時機、 顯示出來的數據內容不一樣、 那么這些產生變化的數據就稱之為動態資源。 jsp / servlet
常見的服務器軟件:
Tomcat : Apache 提供的一個免費小型服務器軟件 , 支持JSP/Servlet 規范
WebLogic : Bea公司提供的收費大型服務器軟件 , 支持EE的所有規范
WebSphere : IBM公司收費大型服務器軟件 , 支持EE的所有規范
JBoss : 一個基于J2EE開放源碼的服務器軟件 核心不支持 JSP/Servlet ,一般與tomcat 或者 jetty配合使用
安裝Tomcat
1. 解壓
2. 進入tomcat /bin , 點擊startup.bat
3. 如果見到一閃而過的情形, 那么打開dos窗口,然后拖拽startup.bat進去后,回車,即有提示,一般都是沒有配置環境變量 JAVA_HOME CATALINA_HOME : 其實就是tomcat的根目錄路徑。
4. 配置好之后,在執行即可
5. 打開瀏覽器,然后輸入地址 http://localhost:8080,頁面成功顯示即為安裝成功
Tomcat目錄解釋
backup : 備份
##bin : 啟動和停止的指令
##conf : 配置
server.xml web.xml catalina
lib : tomcat運行必須的jar
logs : tomcat運行的日志
temp : 臨時文件
##webapps : 項目發布的地方,一般配合eclipse使用 。
work : 這里是存放jsp 翻譯成的java文件 --- class文件
##wtpwebapps : 這是eclipse工具默認發布項目存放的位置。 與上面的webapps 意思一樣。
新建Web項目
1. 修改工作空間編碼 為 UTF-8
2. 配置tomcat環境 。 以后只要在這里運行項目,那么項目就會自己發布到tomcat里面。
3. 新建動態web工程
4. 在webContent下面新建一個html網頁
5. 右鍵工程 --- run on server
6. 在瀏覽器里面訪問該網頁 ,路徑如下:
http://localhost:8080/項目名/資源名
http://localhost:8080/HiWeb/hi.html
- run as Server 背后做了什么工作?
對我們的項目進行編譯處理(java) ,然后拷貝項目到 tomcat根目錄\wtpwebapps 目錄下。
localhost : 本機
8080 : 端口
localhost:8080 : 找我們這臺電腦上端口號是8080 的那一個軟件 tomcat
http://localhost:8080/HiWeb/hi.html : 找到tomcat 位置后,進入那個默認的目錄 wtpwebapps 里面有一個文件夾 HiWeb 文件夾里面有一個文件 hihtml
得出一個結論:
一個項目其實就是tomcat\wtpwebapps | webapps 下面的一個文件夾。
http://localhost:8080/文件夾名字/資源名
發布Web項目
- 問題 : 如何發布一個項目(文件夾)到tomcat去呢 ?
1. 拷貝這個文件夾到tomcat\webapps
訪問路徑 : localhost:8080/文件夾名稱/文件名稱 即可
2. 設置虛擬路徑
a . 在tomcat /conf/server.xml Host標簽里面,寫上以下內容
<!--
http://localhost:8080/HiWeb02/icon_13.jpg
docBase : 項目路徑
path : 就是這個項目映射出來的路徑,這個路徑并不存在,所以稱之為虛擬路徑 -->
<Context docBase="D:\img08" path="/HiWeb02"/>
b . 在 tomcat / conf/catalina/localhost設置
1. 在該目錄下,新建一個文件heima13.xml,這個文件必須是xml文件。 文件的名稱就是我么你的虛擬路徑, 當然可以隨便寫。
2. xml的文件內容如下:
<?xml version="1.0" ?>
<Context docBase="E:\html\"/>
3. 那么文件的名稱就是設置的虛擬路徑 ,訪問的格式如下:
http://localhost:8080/文件名/資源名稱
http://localhost:8080/heima13/aa.txt