日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

發布時間:2025/3/12 编程问答 8 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是Servlet?

Servlet其實就是一個遵循Servlet開發的java類。Servlet是由服務器調用的,運行在服務器端。

為什么要用到Servlet?

我們編寫java程序想要在網上實現 聊天、發帖、這樣一些的交互功能,普通的java技術是非常難完成的。sun公司就提供了Servlet這種技術供我們使用。

HTTP協議

什么是HTPP協議

超文本傳輸協議(HTTP,HyperText Transfer Protocol)是互聯網上應用最為廣泛的一種網絡協議。所有的WWW文件都必須遵守這個標準。它是TCP/IP協議的一個應用層協議

簡單來說,HTTP協議就是客戶端和服務器交互的一種通迅的格式。

例子:在瀏覽器點擊一個鏈接,瀏覽器就為我打開這個鏈接的網頁。

原理:當在瀏覽器中點擊這個鏈接的時候,瀏覽器會向服務器發送一段文本,告訴服務器請求打開的是哪一個網頁。服務器收到請求后,就返回一段文本給瀏覽器,瀏覽器會將該文本解析,然后顯示出來。這段文本就是遵循HTTP協議規范的。

HTTP1.0和HTTP1.1的區別

HTTP1.0協議中,客戶端與web服務器建立連接后,只能獲得一個web資源【短連接,獲取資源后就斷開連接】

HTTP1.1協議,允許客戶端與web服務器建立連接后,在一個連接上獲取多個web資源【保持連接】

HTTP請求

瀏覽器向服務器請求某個web資源時,稱之為瀏覽器向服務器發送了一個http請求。

一個完整http請求應該包含三個部分:

  • 請求行【描述客戶端的請求方式、請求的資源名稱,以及使用的HTTP協議版本號】
  • 多個消息頭【描述客戶端請求哪臺主機,以及客戶端的一些環境信息等】
  • 一個空行
  • 請求行

    請求行:GET /java.html HTTP/1.1

    請求行中的GET稱之為請求方式,請求方式有:POST,GET,HEAD,OPTIONS,DELETE,TRACE,PUT。

    常用的有:POST,GET

    一般來說,當我們點擊超鏈接,通過地址欄訪問都是get請求方式。通過表單提交的數據一般是post方式。

    可以簡單理解GET方式用來查詢數據,POST方式用來提交數據,get的提交速度比post快

    GET方式:在URL地址后附帶的參數是有限制的,其數據容量通常不能超過1K。

    POST方式:可以在請求的實體內容中向服務器發送數據,傳送的數據量無限制。

    請求頭

    • Accept: text/html,image/* 【瀏覽器告訴服務器,它支持的數據類型】
    • Accept-Charset: ISO-8859-1 【瀏覽器告訴服務器,它支持哪種字符集】
    • Accept-Encoding: gzip,compress 【瀏覽器告訴服務器,它支持的壓縮格式】
    • Accept-Language: en-us,zh-cn 【瀏覽器告訴服務器,它的語言環境】
    • Host: www.it315.org:80【瀏覽器告訴服務器,它的想訪問哪臺主機】
    • If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT【瀏覽器告訴服務器,緩存數據的時間】
    • Referer: http://www.it315.org/index.jsp【瀏覽器告訴服務器,客戶機是從那個頁面來的—反盜鏈】
    • User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)【瀏覽器告訴服務器,瀏覽器的內核是什么】
    • Cookie【瀏覽器告訴服務器,帶來的Cookie是什么】
    • Connection: close/Keep-Alive 【瀏覽器告訴服務器,請求完后是斷開鏈接還是保持鏈接】
    • Date: Tue, 11 Jul 2000 18:23:51 GMT【瀏覽器告訴服務器,請求的時間】

    HTTP響應

    一個HTTP響應代表著服務器向瀏覽器回送數據

    一個完整的HTTP響應應該包含四個部分:

  • 一個狀態行【用于描述服務器對請求的處理結果。】
  • 多個消息頭【用于描述服務器的基本信息,以及數據的描述,服務器通過這些數據的描述信息,可以通知客戶端如何處理等一會兒它回送的數據】
  • 一個空行
  • 實體內容【服務器向客戶端回送的數據】
  • 狀態行

    格式: HTTP版本號 狀態碼 原因敘述

    狀態行:HTTP/1.1 200 OK

    狀態碼用于表示服務器對請求的處理結果,它是一個三位的十進制數。響應狀態碼分為5類

    響應頭

    • Location: http://www.it315.org/index.jsp 【服務器告訴瀏覽器要跳轉到哪個頁面】
    • Server:apache tomcat【服務器告訴瀏覽器,服務器的型號是什么】
    • Content-Encoding: gzip 【服務器告訴瀏覽器數據壓縮的格式】
    • Content-Length: 80 【服務器告訴瀏覽器回送數據的長度】
    • Content-Language: zh-cn 【服務器告訴瀏覽器,服務器的語言環境】
    • Content-Type: text/html; charset=GB2312 【服務器告訴瀏覽器,回送數據的類型】
    • Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT【服務器告訴瀏覽器該資源上次更新時間】
    • Refresh: 1;url=http://www.it315.org【服務器告訴瀏覽器要定時刷新】
    • Content-Disposition: attachment; filename=aaa.zip【服務器告訴瀏覽器以下載方式打開數據】
    • Transfer-Encoding: chunked 【服務器告訴瀏覽器數據以分塊方式回送】
    • Set-Cookie:SS=Q0=5Lb_nQ; path=/search【服務器告訴瀏覽器要保存Cookie】
    • Expires: -1【服務器告訴瀏覽器不要設置緩存】
    • Cache-Control: no-cache 【服務器告訴瀏覽器不要設置緩存】
    • Pragma: no-cache 【服務器告訴瀏覽器不要設置緩存】
    • Connection: close/Keep-Alive 【服務器告訴瀏覽器連接方式】
    • Date: Tue, 11 Jul 2000 18:23:51 GMT【服務器告訴瀏覽器回送數據的時間】

    Servlet的作用

    Servlet帶給我們最大的作用就是能夠處理瀏覽器帶來HTTP請求,并返回一個響應給瀏覽器,從而實現瀏覽器和服務器的交互。

    JAVAWEB目錄結構


    以上圖說明:

    • bbs目錄代表一個web應用
    • bbs目錄下的html,jsp文件可以直接被瀏覽器訪問
    • WEB-INF目錄下的資源是不能直接被瀏覽器訪問的
    • web.xml文件是web程序的主要配置文件
    • 所有的classes文件都放在classes目錄下
    • jar文件放在lib目錄下

    實現Servlet接口編寫Servlet程序

    程序我都是由idea下寫,首先要在idea上配置Tomcat,這里不再贅述;

    編寫Servlet程序的步驟

    • 創建一個自定義類,實現Servlet接口
    • 我們發現有5個方法需要重寫,有init【初始化】,destroy【銷毀】,service【服務】,ServletConfig【Servlet配置】,getServletInfo【Servlet信息】。
    • 在此一看,發現service()方法是最有可能是寫邏輯代碼的地方。
    • 首先寫一個hellword入門先
    • 調用ServletResponse對象的方法向瀏覽器輸出HelloWorld
    • 配置xml文件,光寫了Servlet是不行的,Tomcat還要知道瀏覽器怎么訪問這個Servlet。
    • 訪問自己寫的Servlet程序

    Servlet生命周期

    • 下面我們看看Servlet的生命周期

    • 第一次訪問Servlet,我們發現init()和service()都被調用了

    • 第二次訪問Servlet,service()被調用了

    • 第三次訪問Servlet,還是service()被調用了

    • 當我們關閉Tomcat服務器的時候,destroy()被調用了!

    Servlet生命周期可分為5個步驟

  • 加載Servlet。當Tomcat第一次訪問Servlet的時候,Tomcat會負責創建Servlet的實例
  • 初始化。當Servlet被實例化后,Tomcat會調用init()方法初始化這個對象
  • 處理服務。當瀏覽器訪問Servlet的時候,Servlet 會調用service()方法處理請求
  • 銷毀。當Tomcat關閉時或者檢測到Servlet要從Tomcat刪除的時候會自動調用destroy()方法,讓該實例釋放掉所占的資源。一個Servlet如果長時間不被使用的話,也會被Tomcat自動銷毀
  • 卸載。當Servlet調用完destroy()方法后,等待垃圾回收。如果有需要再次使用這個Servlet,會重新調用init()方法進行初始化操作。
  • 簡單總結:

    • 只要訪問Servlet,service()就會被調用。init()只有第一次訪問Servlet的時候才會被調用。

    • destroy()只有在Tomcat關閉的時候才會被調用。

    繼承HttpServlet編寫Servlet程序

    在上面我們實現Servlet接口,要實現5個方法。這樣太麻煩了!而HttpServlet類已經實現了Servlet接口的所有方法,編寫Servlet時,只需要繼承HttpServlet,重寫你需要的方法即可,并且它在原有Servlet接口上添加了一些與HTTP協議處理方法,它比Servlet接口的功能更為強大。

    • 一般我們開發的時候,都是重寫doGet()和doPost()方法的。對于idea而言,創建Servlet的時候已經幫你重寫好了

    總結

    以上是生活随笔為你收集整理的Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。