tomcat HTTP

01_WEB服務器的概述


WEB
是網頁的意思,表示可以通過網絡訪問的資源

WEB資源的分類
靜態的WEB資源
HTML,CSS,JS等都是靜態的WEB資源技術
數據內容始終不會變化
動態的WEB資源  郵箱  在線郵箱  賬戶  
Servlet,JSP,PHP,Python
數據內容由程序動態的生成而來

軟件開發架構
B/S browser/server 瀏覽器端/服務器端
WEB版本的QQ 網遊 頁遊 
JavaWeb
優點:不需要本地資源,服務一旦更新,他就跟着更新
缺點:所有的代碼都在服務器,服務器的壓力比較大

C/S client/server 客戶端/服務器端
QQ exe
優點:運行速度快,效果炫,減少與服務器的交互
缺點:點用本地資源,服務器一旦更新,本地軟件也要更新
趨勢:BS AJAX可以將部分的代碼嵌入到瀏覽器,減少服務器壓力,而且現在的服務器性能不斷提升,並且可以搭建服務器集羣
  

服務器
硬件
一臺性能較好的電腦
軟件
WEB服務器,數據庫服務器  jdbc規範
局域網  公網ip     

常用的WEB服務器
Nginx    靜態的web服務器(靜態網頁) 反向代理服務
tomcat java中常用的動態web服務器 免費 支持servlet jsp規範  
weblogic Bea公司 支持所有的JavaEE的規範 收費
webspere IBM公司 支持所有的JavaEE的規範 收費的
apache 發佈php項目的 LAMP(linux Apache mysql php)
iis 發佈.net網站


02_Tomcat的安裝及常見問題


安裝注意:
啓動Tomcat需要JRE,還需要配置JAVA_HOME環境變量
端口號如果被佔用,則無法啓動Tomcat


網站訪問的過程

www: World Wide Web 世界寬域網,又稱萬維網,是因爲網頁誕生以來,涉及到很多網站網站的客戶端,
爲了能讓它們全部共享而組建的一個主機客服端!現在已經沒什麼特殊意義了。有他沒他都可以.

域名: 英文爲Domain Name,是互聯網上一個企業或機構的名字,是互聯網上企事業間相互聯繫的地址。
就象我們門牌號碼一樣。域名的形式是以若干個英文字母和數字組成,由“.”分隔成幾份。 
cctv.com    有限的  

DNS(Domain Name System,域名系統),萬維網上作爲域名和IP地址相互映射的一個分佈式數據庫,
能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。
通過域名,最終得到該域名對應的IP地址的過程叫做域名解析(或主機名解析)。


http 超文本傳輸協議  不提供任何方式的數據加密  
https 安全套接字超文本傳輸協議 在http基礎做了一層加密 ssL  

03_Tomcat的目錄結構
bin:可執行程序,可以啓動關閉tomcat
conf:配置文件
lib:jar包
logs:日誌文件
temp:臨時目錄
webapps:發佈的web項目
work:存放的是JSP轉換後的Java文件,和編譯後的class文件


04_JavaWeb項目的目錄結構
根目錄
WEB資源 HTML,CSS,JS,JSP
WEB-INF    只要有動態的資源,必須要有這個目錄
web.xml 整個項目的配置文件,Servlet2.5規範
classes class文件
lib jar包


05_發佈WEB項目的方式
發佈WEB項目至Tomcat根目錄下的webapps目錄
虛擬路徑
            

06_使用Eclipse創建WEB項目併發布
實現步驟 :  
1,將Eclipse切換爲JavaEE視圖
2,創建Web項目(Dynamic Web Project)
3,在WEB-INF目錄下創建index.html (內容隨意)
4,在Java Resoures目錄下創建任意的java文件
5,手動配置tomcat
1,Windown – Preferences – Server – Runtim Environments
2,Servers頁籤 – open – server locations
6,發佈項目




07_Tomcat的細節
默認的端口號
80 如果WEB服務器使用的端口號是默認的80,訪問該服務器可以不用輸入端口號
server.xml
默認的項目
ROOT 如果項目的名稱使用的是默認的ROOT,訪問該項目可以不用輸入項目的名稱
默認的頁面
welcome-file-list



01_HTTP協議概述
概述
是超文本傳輸協議,是TCP/IP協議的一個應用層協議,
用於定義客戶端和服務器端傳輸交換數據的過程,以及定義了數據本身的格式。
版本
HTTP/1.0  一次請求一次響應     建立 3次握手  你好嗎  我很好 段  3次握手  你吃了 我吃了 段
HTTP/1.1  一次請求多次響應       交流   斷開


02_HTTP協議的請求詳解
請求行
GET /subject/schools/index.shtml HTTP/1.1
請求方式 資源地址 HTTP協議版本
請求頭
主機名
Host: www.itcast.cn
連接方式
Connection: keep-alive
控制緩存
Cache-Control: max-age=0
瀏覽器支持的版本
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36
瀏覽器支持的類型格式
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,**;q=0.8
瀏覽器支持的解碼格式
Accept-Encoding: gzip, deflate
瀏覽器支持的語言
Accept-Language: zh-CN,zh;q=0.8
請求體
username=zhangsan
注意:POST請求方式纔有請求體



03_HTTP協議的響應詳解
響應行
HTTP/1.1 200 OK
HTTP協議的版本 響應碼/狀態碼
響應碼
200 ok,響應成功
304 未更新,緩存是最新的版本
404 not found,找不到資源
500 服務器端出現了異常
響應頭
響應的時間
Date: Thu, 28 Sep 2017 14:47:44 GMT
WEB服務器的版本
Server: Apache/2.4.23 (Win64) OpenSSL/1.0.2h PHP/5.6.28
服務器端支持範圍(部分)請求
Accept-Ranges: bytes
連接的超時時間,和連接的允許最大請求數量
Keep-Alive: timeout=5, max=100
連接的方式
Connection: Keep-Alive
不明確響應體的大小
Transfer-Encoding: chunked
響應體的類型
Content-Type: text/html
響應體

一,Tomcat的目錄結構
bin  啓動關閉的命令
conf 配置文件
lib  啓動的時候加載jar
logs 日誌文件
temp 臨時文件
webapps 發佈web項目的目錄
work jsp轉換成的java文件,和編譯之後class文件



【WEB動態資源目錄結構】
website
|-----靜態資源
|-----WEB-INF
                |-----web.xml :必須的
                |-----classes :可選的
                |-----lib :可選的

二,發佈WEB項目的方式
方式一: 直接將項目拷貝到webapps下面
方式二: 配置虛擬路徑
虛擬路徑: 將硬盤上某個路徑(項目)起一個別名,然後就可以直接訪問別名
修改Tomcat的核心配置文件(server.xml)

<Context path="/kaka" docBase="c:/aa"></Context>
//即/heima這個虛擬路徑映射到了c:/aa目錄下,修改完以後要重啓tomcat服務器
通俗講就是我們把項目放在任何位置只要只要在docBase中配置了項目路徑,並且我們給路徑定義一個虛擬的路徑/kaka ,
我們訪問項目的時候就要以該虛擬路徑進行訪問項目,並加資源的位置



方式三:配置虛擬路徑(推薦)
在conf\Catalina\localhost創建一個xml
<Context docBase="c:/aa"></Context>
//不需要寫path,虛擬目錄就是文件名


擴展:不用項目名,如何直接訪問tomcat服務器下的某個項目,例如http://localhost:8080/會直接訪問到目標項目,
   只需要將目標的web項目的文件夾名改爲ROOT即可,但注意web項目內使用絕對路徑的寫法
   
    【沒有配置JAVA_HOME引發tomcat一閃消失】
* 一定要配置JAVA_HOME環境變量.
【端口號衝突的問題】
* 一種:將佔用端口的應用結束.
         * netstat -ano
         * 打開任務管理器結束:
* 二種:修改自身應用的端口號.
         * tomcat/conf/server.xml

三,用eclipse發佈web項目步驟
1,創建項目
2,配置運行環境 關聯Tomcat
3,添加一個servers並配置
4,發佈項目

注意點:
如果要修改servers裏面的選項
1,如果有項目先移除項目
2,右鍵clean 再重新點open打開修改


publish的作用就是及時發佈項目,而我們是使用start功能只是在啓動時在發佈項目到tomcat的webAPPs下,
clean的作用就是:一般public提示有錯誤或者更改沒有效果,clean一下就可以清除之前編譯好的class文件


 四,什麼是http協議
規定瀏覽器端和服務器端交流的格式,瀏覽器向服務器發送什麼格式的數據,服務器才能解析 
服務器向瀏覽器發送什麼樣的數據,瀏覽器才能解析

特性
基於請求響應的模型
必須先有請求再有響應
請求和響應必須成對出現  404 500 200



五,請求
請求行
請求方式 get和post
1,get請求的數據會顯示到地址欄中,相對不安全,post不會顯示到地址欄上
2,get請求請求參數是拼接到請求地址上,post請求參數在請求體裏面
3,get方式有大小的限制,post方式沒有大小限制
請求路徑:訪問路徑
協議版本:HTTP/1.1
請求頭
Referer  代表網頁的來源,可以防盜鏈
User-Agent 代表瀏覽器的信息,處理文件下載的亂碼  IE 火狐 url  base64  
Cookie  攜帶用戶保存Cookie信息    
請求體 

六,響應
響應行
協議版本:HTTP/1.1
響應狀態碼 
200 響應成功
302 重定向 
304 查找本地緩存
404 路徑不存在
500 服務器內部錯誤
響應狀態碼介紹

響應頭
Location 結合302狀態碼完成重定向
conten-Disposition 文件下載
Content-Type : 瀏覽器打開方式 處理中文亂碼
Last-Modified: 與請求的if-Modified-Since一起使用查找本地緩存
set-cookie 從服務器向瀏覽器回寫Cookie

響應體

頁面的正文


HTTP的協議的概述】

Ø 協議:

* 什麼是協議:規定雙方需要遵守的規則.

Ø HTTP協議:

* 什麼是HTTP協議:用來規定瀏覽器與服務器之前需要遵守的規則.

Ø HTTP協議的作用:規範瀏覽器和服務器之間的數據傳遞.

Ø HTTP協議的特點:

* 基於請求和響應的模型.

    * 必須先有請求後有響應.

    * 請求和響應必須成對出現.

* 默認的端口號是80.

Ø HTTP協議的版本:

* 1.0:每次響應後即刻關閉了連接.

* 1.1:現在使用.不是每次響應後掛斷,等待長時間以後沒有請求會掛斷.

HTTP協議的演示】

抓包分析:GET方式:

* 請求部分:

GET /day09/demo1-http/demo2.html?name=aaa&age=23 HTTP/1.1

Accept: text/html, application/xhtml+xml, */*

X-HttpWatch-RID: 59176-10011

Referer: http://localhost:8080/day09/demo1-http/demo1.html

Accept-Language: zh-CN

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

Accept-Encoding: gzip, deflate

Host: localhost:8080

DNT: 1

Connection: Keep-Alive

 

抓包分析:POST方式:

POST /day09/demo1-http/demo2.html HTTP/1.1

Accept: text/html, application/xhtml+xml, */*

X-HttpWatch-RID: 59176-10031

Referer: http://localhost:8080/day09/demo1-http/demo1.html

Accept-Language: zh-CN

User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko

Content-Type: application/x-www-form-urlencoded

Accept-Encoding: gzip, deflate

Host: localhost:8080

Content-Length: 15

DNT: 1

Connection: Keep-Alive

Cache-Control: no-cache

 

name=bbb&age=38

 

* 響應部分:

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Accept-Ranges: bytes

ETag: W/"145-1461807615933"

Last-Modified: Thu, 28 Apr 2016 01:40:15 GMT

Content-Type: text/html

Content-Length: 145

Date: Thu, 28 Apr 2016 01:43:52 GMT

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<h1>Demo2.html</h1>

</body>

</html>

HTTP協議的詳解】

Ø 請求部分

* 請求行

    * 提交方式:

        * 提交方式有很多,常用的GETPOST:

        * GETPOST的區別:

            * GET的提交的參數會顯示到地址欄上,POST不顯示.

            * GET往往是有大小限制的,POST沒有大小的限制.

            * GET沒有請求體,POST有請求體.

    * 提交路徑:

    * 協議版本:

* 請求頭

    * 都是鍵值對的形式顯示的.一般一個key對應一個value,也有個別的是一個key對應多個value.

    * User-Agent:代表瀏覽器的類型. --- 文件下載:下載中文文件:IE使用URLEncodor進行編碼,Firefox使用Base64編碼.

    * Referer:代表的是網頁的來源. --- 防盜鏈.

    * If-Modified-Since:通常與響應中的頭Last-Modified一起使用查找本地緩存.

* 請求體

    * 就是POST提交方式的提交的參數.

Ø 響應部分

* 響應行:

    * 協議版本

    * 狀態碼

        * 200:成功

        * 302:重定向

        * 304:查找本地緩存

        * 404:資源不存在

        * 500:服務器內部錯誤

    * 狀態碼描述

* 響應頭:鍵值對,一般一個key對應一個value,也有一個key對應多個value.

    * Last-Modified:與請求中的If-Modified-Since一起使用查找本地緩存.

    * Content-Dispostion:文件下載的使用使用的一個頭信息.

    * Location:重定向的跳轉的路徑.

    * Refresh:定時刷新/定時跳轉.

* 響應體:顯示瀏覽器的頁面的內容.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章