摘要:一個完整請求應(yīng)該包含三個部分請求行描述客戶端的請求方式請求的資源名稱,以及使用的協(xié)議版本號多個消息頭描述客戶端請求哪臺主機(jī),以及客戶端的一些環(huán)境信息等一個空行請求行請求行請求行中的稱之為請求方式,請求方式有。
什么是Servlet?
Servlet其實就是一個遵循Servlet開發(fā)的java類。Servlet是由服務(wù)器調(diào)用的,運(yùn)行在服務(wù)器端。
為什么要用到Servlet?我們編寫java程序想要在網(wǎng)上實現(xiàn) 聊天、發(fā)帖、這樣一些的交互功能,普通的java技術(shù)是非常難完成的。sun公司就提供了Servlet這種技術(shù)供我們使用。
HTTP協(xié)議 什么是HTPP協(xié)議超文本傳輸協(xié)議(HTTP,HyperText Transfer Protocol)是互聯(lián)網(wǎng)上應(yīng)用最為廣泛的一種網(wǎng)絡(luò)協(xié)議。所有的WWW文件都必須遵守這個標(biāo)準(zhǔn)。它是TCP/IP協(xié)議的一個應(yīng)用層協(xié)議
簡單來說,HTTP協(xié)議就是客戶端和服務(wù)器交互的一種通迅的格式。
例子:在瀏覽器點擊一個鏈接,瀏覽器就為我打開這個鏈接的網(wǎng)頁。
原理:當(dāng)在瀏覽器中點擊這個鏈接的時候,瀏覽器會向服務(wù)器發(fā)送一段文本,告訴服務(wù)器請求打開的是哪一個網(wǎng)頁。服務(wù)器收到請求后,就返回一段文本給瀏覽器,瀏覽器會將該文本解析,然后顯示出來。這段文本就是遵循HTTP協(xié)議規(guī)范的。
HTTP1.0和HTTP1.1的區(qū)別HTTP1.0協(xié)議中,客戶端與web服務(wù)器建立連接后,只能獲得一個web資源【短連接,獲取資源后就斷開連接】
HTTP1.1協(xié)議,允許客戶端與web服務(wù)器建立連接后,在一個連接上獲取多個web資源【保持連接】
HTTP請求瀏覽器向服務(wù)器請求某個web資源時,稱之為瀏覽器向服務(wù)器發(fā)送了一個http請求。
一個完整http請求應(yīng)該包含三個部分:
請求行【描述客戶端的請求方式、請求的資源名稱,以及使用的HTTP協(xié)議版本號】
多個消息頭【描述客戶端請求哪臺主機(jī),以及客戶端的一些環(huán)境信息等】
一個空行
請求行請求行:GET /java.html HTTP/1.1
請求行中的GET稱之為請求方式,請求方式有:POST,GET,HEAD,OPTIONS,DELETE,TRACE,PUT。
常用的有:POST,GET
一般來說,當(dāng)我們點擊超鏈接,通過地址欄訪問都是get請求方式。通過表單提交的數(shù)據(jù)一般是post方式。
可以簡單理解GET方式用來查詢數(shù)據(jù),POST方式用來提交數(shù)據(jù),get的提交速度比post快
GET方式:在URL地址后附帶的參數(shù)是有限制的,其數(shù)據(jù)容量通常不能超過1K。
POST方式:可以在請求的實體內(nèi)容中向服務(wù)器發(fā)送數(shù)據(jù),傳送的數(shù)據(jù)量無限制。
請求頭Accept: text/html,image/* 【瀏覽器告訴服務(wù)器,它支持的數(shù)據(jù)類型】
Accept-Charset: ISO-8859-1 【瀏覽器告訴服務(wù)器,它支持哪種字符集】
Accept-Encoding: gzip,compress 【瀏覽器告訴服務(wù)器,它支持的壓縮格式】
Accept-Language: en-us,zh-cn 【瀏覽器告訴服務(wù)器,它的語言環(huán)境】
Host: www.it315.org:80【瀏覽器告訴服務(wù)器,它的想訪問哪臺主機(jī)】
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT【瀏覽器告訴服務(wù)器,緩存數(shù)據(jù)的時間】
Referer: http://www.it315.org/index.jsp【瀏覽器告訴服務(wù)器,客戶機(jī)是從那個頁面來的---反盜鏈】
8.User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)【瀏覽器告訴服務(wù)器,瀏覽器的內(nèi)核是什么】
Cookie【瀏覽器告訴服務(wù)器,帶來的Cookie是什么】
Connection: close/Keep-Alive 【瀏覽器告訴服務(wù)器,請求完后是斷開鏈接還是保持鏈接】
Date: Tue, 11 Jul 2000 18:23:51 GMT【瀏覽器告訴服務(wù)器,請求的時間】
HTTP響應(yīng)一個HTTP響應(yīng)代表著服務(wù)器向瀏覽器回送數(shù)據(jù)
一個完整的HTTP響應(yīng)應(yīng)該包含四個部分:
一個狀態(tài)行【用于描述服務(wù)器對請求的處理結(jié)果。】
多個消息頭【用于描述服務(wù)器的基本信息,以及數(shù)據(jù)的描述,服務(wù)器通過這些數(shù)據(jù)的描述信息,可以通知客戶端如何處理等一會兒它回送的數(shù)據(jù)】
一個空行
實體內(nèi)容【服務(wù)器向客戶端回送的數(shù)據(jù)】
狀態(tài)行格式: HTTP版本號 狀態(tài)碼 原因敘述
狀態(tài)行:HTTP/1.1 200 OK
狀態(tài)碼用于表示服務(wù)器對請求的處理結(jié)果,它是一個三位的十進(jìn)制數(shù)。響應(yīng)狀態(tài)碼分為5類
響應(yīng)頭Location: http://www.it315.org/index.jsp 【服務(wù)器告訴瀏覽器要跳轉(zhuǎn)到哪個頁面】
Server:apache tomcat【服務(wù)器告訴瀏覽器,服務(wù)器的型號是什么】
Content-Encoding: gzip 【服務(wù)器告訴瀏覽器數(shù)據(jù)壓縮的格式】
Content-Length: 80 【服務(wù)器告訴瀏覽器回送數(shù)據(jù)的長度】
Content-Language: zh-cn 【服務(wù)器告訴瀏覽器,服務(wù)器的語言環(huán)境】
Content-Type: text/html; charset=GB2312 【服務(wù)器告訴瀏覽器,回送數(shù)據(jù)的類型】
Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT【服務(wù)器告訴瀏覽器該資源上次更新時間】
Refresh: 1;url=http://www.it315.org【服務(wù)器告訴瀏覽器要定時刷新】
Content-Disposition: attachment; filename=aaa.zip【服務(wù)器告訴瀏覽器以下載方式打開數(shù)據(jù)】
Transfer-Encoding: chunked 【服務(wù)器告訴瀏覽器數(shù)據(jù)以分塊方式回送】
Set-Cookie:SS=Q0=5Lb_nQ; path=/search【服務(wù)器告訴瀏覽器要保存Cookie】
Expires: -1【服務(wù)器告訴瀏覽器不要設(shè)置緩存】
Cache-Control: no-cache 【服務(wù)器告訴瀏覽器不要設(shè)置緩存】
Pragma: no-cache 【服務(wù)器告訴瀏覽器不要設(shè)置緩存】
Connection: close/Keep-Alive 【服務(wù)器告訴瀏覽器連接方式】
Date: Tue, 11 Jul 2000 18:23:51 GMT【服務(wù)器告訴瀏覽器回送數(shù)據(jù)的時間】
Servlet的作用Servlet帶給我們最大的作用就是能夠處理瀏覽器帶來HTTP請求,并返回一個響應(yīng)給瀏覽器,從而實現(xiàn)瀏覽器和服務(wù)器的交互。
JAVAWEB目錄結(jié)構(gòu)以上圖說明:
bbs目錄代表一個web應(yīng)用
bbs目錄下的html,jsp文件可以直接被瀏覽器訪問
WEB-INF目錄下的資源是不能直接被瀏覽器訪問的
web.xml文件是web程序的主要配置文件
所有的classes文件都放在classes目錄下
jar文件放在lib目錄下
實現(xiàn)Servlet接口編寫Servlet程序程序我都是由idea下寫,首先要在idea上配置Tomcat,在我別的博文中有教程!
編寫Servlet程序的步驟創(chuàng)建一個自定義類,實現(xiàn)Servlet接口
我們發(fā)現(xiàn)有5個方法需要重寫,有init【初始化】,destroy【銷毀】,service【服務(wù)】,ServletConfig【Servlet配置】,getServletInfo【Servlet信息】。
在此一看,發(fā)現(xiàn)service()方法是最有可能是寫邏輯代碼的地方。
首先寫一個hellword入門先
調(diào)用ServletResponse對象的方法向瀏覽器輸出HelloWorld
配置xml文件,光寫了Servlet是不行的,Tomcat還要知道瀏覽器怎么訪問這個Servlet。
訪問自己寫的Servlet程序
Servlet生命周期下面我們看看Servlet的生命周期
第一次訪問Servlet,我們發(fā)現(xiàn)init()和service()都被調(diào)用了
第二次訪問Servlet,service()被調(diào)用了
第三次訪問Servlet,還是service()被調(diào)用了
當(dāng)我們關(guān)閉Tomcat服務(wù)器的時候,destroy()被調(diào)用了!
Servlet生命周期可分為5個步驟加載Servlet。當(dāng)Tomcat第一次訪問Servlet的時候,Tomcat會負(fù)責(zé)創(chuàng)建Servlet的實例
初始化。當(dāng)Servlet被實例化后,Tomcat會調(diào)用init()方法初始化這個對象
處理服務(wù)。當(dāng)瀏覽器訪問Servlet的時候,Servlet 會調(diào)用service()方法處理請求
銷毀。當(dāng)Tomcat關(guān)閉時或者檢測到Servlet要從Tomcat刪除的時候會自動調(diào)用destroy()方法,讓該實例釋放掉所占的資源。一個Servlet如果長時間不被使用的話,也會被Tomcat自動銷毀
卸載。當(dāng)Servlet調(diào)用完destroy()方法后,等待垃圾回收。如果有需要再次使用這個Servlet,會重新調(diào)用init()方法進(jìn)行初始化操作。
簡單總結(jié):**只要訪問Servlet,service()就會被調(diào)用。init()只有第一次訪問Servlet的時候才會被調(diào)用。
destroy()只有在Tomcat關(guān)閉的時候才會被調(diào)用。**
繼承HttpServlet編寫Servlet程序在上面我們實現(xiàn)Servlet接口,要實現(xiàn)5個方法。這樣太麻煩了!而HttpServlet類已經(jīng)實現(xiàn)了Servlet接口的所有方法,編寫Servlet時,只需要繼承HttpServlet,重寫你需要的方法即可,并且它在原有Servlet接口上添加了一些與HTTP協(xié)議處理方法,它比Servlet接口的功能更為強(qiáng)大。
一般我們開發(fā)的時候,都是重寫doGet()和doPost()方法的。對于idea而言,創(chuàng)建Servlet的時候已經(jīng)幫你重寫好了
如果文章有錯的地方歡迎指正,大家互相交流。習(xí)慣在微信看技術(shù)文章的同學(xué),可以關(guān)注微信公眾號:Java3y
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68413.html
摘要:前言由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導(dǎo)航。 前言 由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號:Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡單 注解就這么簡單 Druid數(shù)據(jù)庫連接池...
摘要:本文介紹如何在中開發(fā)接口,以及接口如何同時支持和兩種協(xié)議。該功能很簡單,就是通過一個人的姓名查詢這個人的詳細(xì)信息。就是關(guān)鍵,如本次請求報文如下就是,對應(yīng)。測試使用進(jìn)行測試,通過地址導(dǎo)入文件進(jìn)行測試。測試這樣就實現(xiàn)了和同時提供的目的。 介紹spring boot web模塊提供了RestController實現(xiàn)restful,第一次看到這個名字的時候以為還有SoapController,...
摘要:軟件開發(fā)體系架構(gòu)兩層架構(gòu)傳統(tǒng)的客戶服務(wù)器系統(tǒng)僅只簡單地基于兩層體系來構(gòu)建,即客戶端前臺和企業(yè)信息系統(tǒng)后臺,沒有任何中間件,業(yè)務(wù)邏輯層與表示層或數(shù)據(jù)層混在一起。 showImg(https://segmentfault.com/img/remote/1460000007090113); 理想的建筑師應(yīng)該既是文學(xué)家又是數(shù)字家,他還應(yīng)通曉歷史,熱衷于哲學(xué)研究,精通音樂,懂得醫(yī)藥知識,具有法學(xué)...
閱讀 1904·2021-11-22 09:34
閱讀 3042·2021-09-28 09:35
閱讀 13499·2021-09-09 11:34
閱讀 3608·2019-08-29 16:25
閱讀 2840·2019-08-29 15:23
閱讀 2051·2019-08-28 17:55
閱讀 2440·2019-08-26 17:04
閱讀 3056·2019-08-26 12:21