成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Servlet第一篇【介紹Servlet、HTTP協(xié)議、WEB目錄結(jié)構(gòu)、編寫入門Servlet程序、

zzbo / 2984人閱讀

摘要:一個完整請求應(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

相關(guān)文章

  • Java3y文章目錄導(dǎo)航

    摘要:前言由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導(dǎo)航。 前言 由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導(dǎo)航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導(dǎo)航哦~想要獲取最新原創(chuàng)的技術(shù)文章歡迎關(guān)注我的公眾號:Java3y Java3y文章目錄導(dǎo)航 Java基礎(chǔ) 泛型就這么簡單 注解就這么簡單 Druid數(shù)據(jù)庫連接池...

    KevinYan 評論0 收藏0
  • spring boot開發(fā)soap webservice

    摘要:本文介紹如何在中開發(fā)接口,以及接口如何同時支持和兩種協(xié)議。該功能很簡單,就是通過一個人的姓名查詢這個人的詳細(xì)信息。就是關(guān)鍵,如本次請求報文如下就是,對應(yīng)。測試使用進(jìn)行測試,通過地址導(dǎo)入文件進(jìn)行測試。測試這樣就實現(xiàn)了和同時提供的目的。 介紹spring boot web模塊提供了RestController實現(xiàn)restful,第一次看到這個名字的時候以為還有SoapController,...

    Ashin 評論0 收藏0
  • 從懵逼到再入門——JavaEE完整體系架構(gòu)

    摘要:軟件開發(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é)...

    ZweiZhao 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<