JavaWeb基礎-HTTP和Servlet

一、HTTP概念作用及特點

  • 概念:
    • 超文本傳輸協議
  • 作用:
    • 規範了瀏覽器和服務器數據交互格式
  • 特點:
    • 簡單快速:基於鍵值對發送,客戶向服務器請求服務,只需要傳送請求方法和路徑,http服務器程序規模小,因而通信速度很快
    • 靈活:允許傳輸任意類型的數據對象,傳輸的類型由content-type 標記
    • 無連接:每次連接只處理一個一個請求,服務器處理完請求後,接到用戶應答後,斷開連接。節省傳輸時間
      HTTP1.1之後支持可持續連接
    • 無狀態:協議對事務處理沒有記憶,後續如果需要前面的信息,必須重重,但是可能會導致每次連接傳送的數據量增大,好處是在服務器不需要前面信息的時候應答就比較快了

二、HTTP的交互流程

  1. 客戶端和服務器創建連接
  2. 客戶端發送請求數據到服務器端
  3. 服務器接受請求,進行處理,將處理結果響應客戶端
  4. 關閉客戶端和服務端的連接(HTTP1.1之後不會立即關閉)

三、請求格式

  1. 請求頭:請求方式、請求地址、HTTP 版本
  2. 請求行:客戶端要使用的一些附加信息
  3. 空行:位於請求行和請求數據之間
  4. 請求數據:非必須

四、請求方式

HTTP1.0 定義了三種:Get、Post、HEAD方法
HTTP1.1新增了五種:Options、TRACE、DELETE、CONNECT

get:請求指定頁面,返回實體主體
head:類似宇get請求、只是返回的響應中沒有具體內容,用於獲取請求頭
post:像指定資源提交數據進行處理,數據被包含在請求體中。POST請求可能會導致新資源的建立,或者已有資源的修改
put:從客戶端向服務器傳送的數據取代指定的文檔內容
delete:請求服務器刪除指定頁面
connect:預留能夠將連接改爲管道方式的代理服務器
options:允許客戶端查看服務器的性能
trace:回顯服務器收到的請求,主要用於測試或診斷

五、get和post請求方式的區別:

get請求方式:

   請求數據會以?的形式隔開拼接再請求頭的請求地址中,不安全,沒有請求實體部分
HTTP協議雖然沒規定請求數據大小,但是瀏覽器對URL長度有所限制,所以Get請求不能攜帶數據

post請求方式:

   請求數據在請求實體中進行發送,在url中看不到具體的請求數據,數據封裝到請求數據體中,安全,適合數據量大的數據發送

六、響應:

格式:
	響應行(狀態行):HTTP版本、狀態碼、狀態消息
	響應頭:消息報頭、客戶端房附加的信息
	空行:響應頭和響應實體之間的,必須存在
	響應實體:正文,服務器返回給瀏覽器的信息

七、狀態碼

含義:
	狀態碼由三個十進制數組成,第一位定義了狀態碼的類型,後兩個數字沒有分類的作用
類型:
	1**:信息,服務器收到請求,需要請求者繼續執行操作
	2**:成功,操作被成功接受並處理
	3**:重定向,需要進一步操作完成請求
	4**:客戶端錯誤,請求包含語法錯誤或無法完成請求
	5**:服務器錯誤,服務器在處理請求的過程中發生了錯誤
	
常見的狀態碼:
	200 OK	客戶端請求成功
	400 Bad Request	客戶端請求有語法錯誤,不能被服務器所理解
	401 Unauthorized	請求未經授權,代碼必須和www-Authenticate包頭域一起使用
	403 Forbidden	服務器收到請求,但是拒絕提供服務
	404 Not Found	請求資源不存在/輸入了錯誤的URL
	500 Internal Server Error 	服務器發生不可預期的錯誤 
	503 Server unavailable	服務器當前不能處理客戶端請求,一段時間後恢復

八、什麼是Servlet

定義:
	Servlet指規範了服務器能夠認知的接口規範,廣義上只要實現了這個接口的類,都被稱爲Servlet類
使用:
	創建普通java類,並繼承HttpServlet
	複寫service方法
	在service方法中書寫邏輯代碼
	在web.xml配置servlet(目前可直接使用註解)

一、Servlet聲明週期

  • 從第一次調用到服務器關閉
  • 如果Servlet在web.xml中配置了load-on-startup,生命週期爲從服務器啓動到服務器關閉

注: init方法是對Servlet進行初始化的一個方法,會在Servlet第一次加載進內存時執行
destory方法是在Servlet被銷燬時執行,也就是服務器關閉時
load-on-startup:數字表示加載順序,每個Servlet可能都會配load-on-startup
因爲每次tomcat都會將內容先加載到內存,因此每次修改都需要重啓tomcat服務器

二、Service方法和doGet、doPost方法

  • Service方法:
    • 可以處理get、post方法是請求,如果servlet中有service方法,系統會有限調用service 方法對請求進行處理
  • doGet方法:
    • 可以處理get方式的請求
  • doPost方法:
    • 可以處理post方式的請求

三、Servlet常見錯誤

404錯誤:資源未找到
	1、請求地址中servlet的別名拼寫錯誤
	2、請求地址中虛擬項目名稱拼寫錯誤
500錯誤:
	1、java.lang.ClassNotFoundExeception
	解決:
		在web.xml中教案servlet類全限定路徑錯誤,目前使用註解,基本及已經解決該問題
	2、Servlet中,方法體中代碼出現邏輯語法錯誤
	解決:
		根據錯誤提示對方法體中的錯誤進行更改
405錯誤:請求方式不支持
	1、請求方式和servlet中的方法不匹配所造成
	解決:使用service中進行處理,並且不要在service中調用父類service 方法

感謝閱讀,只是記錄自己的漫漫IT學習之路,如有錯漏,還請不吝賜教

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