天天看點

JavaWeb 後端 <一> 之 Tomcat伺服器 - Http協定 學習筆記二、HTTP協定:必須記住(很重要)

1.1伺服器上的資源分類:

a、靜态資源:指web頁面中供人們浏覽的資料始終是不變。html css js 圖檔 多媒體

b、動态資源:指web頁面中供人們浏覽的資料是由程式産生的,不同時間點通路web頁面看到的内容各不相同。JSP/Servlet、php、asp

下面為簡單的java程式 模拟伺服器提供資源 通路 本地端口1111即可得到伺服器的資源

0、JavaEE規範:

JavaEE規範由JCP組織(www.jcp.org)制定和維護的。很多Java開發技術的總稱。都是由抽象類和接口組成的(jar)。

常用的技術:JSP/Servlet、JPA、JTA、JNID、JDBC、JMX、JAXP、EJB等

1、常用的伺服器:

WebLogic:實作了JavaEE規範,重量級的伺服器,JavaEE容器。

WebSphereAS:實作了JavaEE規範,重量級的伺服器,JavaEE容器。

JbossAS:實作了JavaEE規範,重量級的伺服器,JavaEE容器。

Tomcat:實作了JSP/Servlet規範,輕量級的伺服器,Servlet容器。

2、JSP/Servelt規範:Servlet2.5版

Tomcat的版本

Servlet/JSP版本

JDK

JavaEE

備注

Tomcat8.X

3.1/2.3

7.X

7

預設編碼UTF-8

Tomcat7.X

3.0/2.2

6.X

6

ISO-8859-1

Tomcat6.X

2.5/2.1

5.X

5

用這個ISO-8859-1

3、安裝Tomcat

解壓壓縮包

預設端口:8080

*webapps目錄:該目錄中有幾個檔案夾就說明有幾個應用

4、啟動:Tomcat\bin\startup.bat

找到 startup.bat輕按兩下運作 或者dom裡運作 cd \  → cd Apache → cd bin →  startup.bat

沒有異常,最終說明用時,證明啟動成功!

5、啟動時遇到的常見問題

a、一閃而過:原因,沒有配置環境變量JAVA_HOME=C:\jdk1.7.0_45

b、啟動過程中出現很多異常:因為端口被占用了

端口被占用了:dom 使用 netstat -a -o  檢查端口的使用情況

幹掉占用8080端口的程序;

更改Tomcat的預設端口:

修改 Tomcat\conf\server.xml

5、http協定使用的預設端口是80(上線運作)

不用加端口通路

注意80端口可能被占用。(Window如果裝了IIS--web伺服器,預設用80)

MyApp 應用名稱

1.html

css\main.css

WEB-INF      必須有,大小寫一緻。該目錄中的資源用戶端無法通路的

lib   存放本應用用到的jar包。(Tomcat\lib中的jar為所有應用共享的)

classes: 存放本應用的class位元組碼。(優先級:classes--自己的jar---Tomcat中的jar,優先級依次降低)

web.xml 目前應用的配置檔案。

方式一:直接把應用拷貝到Tomcat\webapps目錄中

方式二:把應用打成war包。

就可以通過伺服器通路

1、在MyEclipse中配置Tomcat

2、開發目錄結構和運作目錄結構

通過Tomcat\conf\server.xml配置進行配置(Tomcat的核心配置檔案)

l  配置虛拟目錄(Context)

可以把磁盤上任意位置的檔案夾當做一個應用交給Tomcat管理。

方式一:直接修改server.xml配置檔案(需要重新啟動Tomcat,不推薦)

方式二:在Tomcat\conf\[引擎名稱]\[主機名稱]\目錄中,建立一個xml的配置檔案,檔案名就是應用的通路虛拟目錄:PPP.xml

http://localhost/PPP/1.html

l  配置虛拟主機(Host)

一台硬體伺服器上運作多個網站

域名解析:

l  配置預設端口(Connector)、預設應用、預設首頁

預設端口:80。修改Tomcat\conf\server.xml,把一個Connector的端口改為80

TOmcat中預設的應用webapps\ROOT

方法一:把作為預設應用的應用改為ROOT即可。

方式二:在Tomcat\conf\引擎名稱\主機名稱\ROOT.xml的配置檔案

應用的預設首頁:

修改web.xml

HTTP是什麼?超文本傳輸協定。

描述用戶端和伺服器端的資料标準,該協定由W3C維護和管理。

版本:

HTTP1.0:每次送出請求都需要建立網絡連接配接

HTTP1.1:(主流)在一次網絡連接配接上發出多次請求和得到多次響應。多了一些頭。

明确:

浏覽器遇到以下标記時,會自動送出請求

2.1請求部分

2.2響應部分

3.1請求行:

GET /app1/1.html HTTP/1.1

GET:請求方式。

常用的請求方式:GET(預設的)、POST、HEAD、OPTIONS等

GET:預設的

<a href="http://localhost:8080/app1/1.html?username=abc&amp;password=123">http://localhost:8080/app1/1.html?username=abc&amp;password=123</a>

送出的資料顯示出來了,相對不安全,協定的第一行有長度限制,&lt;1kb.

(有請求資料時推薦)POST:可以通過&lt;form method=”post”/&gt;

                    username=abc&amp;password=123

                       送出的資料在請求正文中的,相對安全,長度沒有限制。

              /app1/1.html :請求的資源位址。(URI)

                     URL:協定+主機:端口+資源位址

                            http://localhost:8080/app1/1.html

HTTP/1.1:用戶端浏覽器使用的協定的版本。

3.2請求消息頭:

作用:向伺服器端傳遞附加資訊(暗号指令)

l  Accept:告知伺服器,用戶端可以接受的資料類型(MIME類型)

檔案系統:通過檔案的擴充名區分不同的檔案的。txt jpeg

MIME類型:大類型/小類型。  txt---&gt;text/plain   html----&gt;text/html js----&gt;text/javascript (具體對應關系:可參考 Tomcat\conf\web.xml)

l  Accept-Encoding:告知伺服器,用戶端可以接受的壓縮編碼。比如gzip

l  Accept-Language:告知伺服器,用戶端支援的語言。

l  Referer:告知伺服器,從哪個頁面過來的。(作用:統計廣告的投放效果;防止盜鍊。)

l  Content-Type:告知伺服器,請求正文的MIME類型

預設類型:application/x-www-form-urlencoded(表單enctype屬性的預設取值)

具體展現:username=abc&amp;password=123

其他類型:multipart/form-data(檔案上傳時用的)

l  If-Modified-Since:告知伺服器,目前通路的資源,緩存中的檔案的最後修改時間。

l  User-Agent:告知伺服器,浏覽器的類型

l  Content-Length:請求正文的資料長度

l  Cookie:(*****重要)會話管理有關

3.3請求正文:

資料能送出到伺服器,表單中的輸入域必須有name屬性值

POST請求是才有正文

username=abc&amp;password=123

4.1響應行:

HTTP/1.1 200 OK

HTTP/1.1 :說明伺服器端用的協定版本

200 :響應狀态碼

1XX 2XX 3XX 4XX 5XX

2XX:處理完畢

4XX:請求有誤

5XX:伺服器有誤

記住常用的響應碼:

200:一切正常

302/307:請求重定向

304:伺服器上的資源沒有發生改變

404:通路的位址不存在

500:伺服器端錯誤

OK:響應碼描述

4.2響應消息頭:

作用:伺服器端向用戶端傳遞的附加資訊(暗号指令)

l  Location:告知用戶端,你去通路的位址。

和302/307實作請求重定向

l  Content-Encoding:告知用戶端,響應正文使用的壓縮編碼(gzip)

l  Content-Length:告知用戶端,響應正文的長度

l  Content-Type:告知用戶端,響應文正的MIME類型。預設text/html

l  Refresh:告知用戶端,定時重新整理

l  Content-Disposition:告知用戶端,用下載下傳的方式打開  attachment;filename=23.jpg

l  Set-Cookie:(*****)會話有關

-------------

l  Expires: -1 控制時間的

l  Cache-Control: no-cache (1.1) 

l  Pragma: no-cache   (1.0)

三頭一塊用,用于告知浏覽器,不要緩存。

----------------------

4.3響應正文:

浏覽器解析的正文内容,右鍵檢視源碼一樣的。