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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【JavaWeb】servlet与http请求协议

發(fā)布時(shí)間:2023/11/28 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【JavaWeb】servlet与http请求协议 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Servlet:

概念:

server applet (服務(wù)端小程序)運(yùn)行在服務(wù)器端的小程序

  • Servlet就是一個(gè)接口,定義了Java類被瀏覽器訪問到(Tomcat識別)的規(guī)則。
  • 將我我們自定義一個(gè)類,實(shí)現(xiàn)Servlet接口,復(fù)寫方法

快速入門:

  1. 創(chuàng)建JavaEE項(xiàng)目
  2. 定義一個(gè)類,實(shí)現(xiàn)Servlet接口 public class ServletDemo1 implements Servlet
  3. 實(shí)現(xiàn)接口中的抽象方法
  4. 配置Servlet,在web.xml中配置
<!--配置Servlet-->
<servlet><servlet-name>demo1</servlet-name><servlet-class>cn.itcast,web.servlet.ServletDemo1</servlet-class>
</servlet>
<servlet-mapping><servlet-name>demo1</servlet-name><url-parttern>/demo1</url-parttern>
</servlet-mapping>


執(zhí)行原理:

  1. 當(dāng)服務(wù)器接收到客戶端瀏覽器的請求后,會解析請求URL路徑,獲取訪問的Servlet的資源路徑
  2. 查找web.xml文件,是否有對應(yīng)的標(biāo)簽體內(nèi)容
  3. 如果有,則再找到對應(yīng)的全類名
  4. Tomcat會將字節(jié)碼文件加載進(jìn)內(nèi)存,并且創(chuàng)建其對象
  5. 調(diào)用其方法

生命周期:

  • 被創(chuàng)建:執(zhí)行init方法,只執(zhí)行一次
    • 1.Servlet什么時(shí)候被創(chuàng)建?
      ?默認(rèn)情況下,第一次訪問時(shí),Servlet被創(chuàng)建
      ?可以配置執(zhí)行Servlet的創(chuàng)建時(shí)機(jī)
      ?? 在標(biāo)簽下配置
      ?????1. 第一次訪問時(shí)創(chuàng)建 <load-on-startup>的值為負(fù)數(shù)
      ?????2. 在服務(wù)器啟動時(shí)創(chuàng)建 <load-on-startup>的值為0或者正整數(shù)
    • 2.Servlet的init方法,只執(zhí)行一次,說明一個(gè)Servlet在內(nèi)存中只存在一個(gè)對象,Servlet是單例的
      ?多個(gè)用戶同時(shí)訪問時(shí),可能存在線程安全問題
      ?解決:盡量不要在Servlet中定義成員變量。即時(shí)定義了成員變量,也不要對其修改值
  • 提供服務(wù):執(zhí)行service方法,執(zhí)行多次
    ?每次訪問Servlet時(shí),Service都會被調(diào)用一次。
  • 被銷毀:執(zhí)行destory方法,只執(zhí)行一次
    ?Servlet被銷毀時(shí)執(zhí)行。服務(wù)器關(guān)閉時(shí),Servlet被銷毀
    ?只有服務(wù)器正常關(guān)閉時(shí),才會執(zhí)行destroy方法
    ?destroy方法在Servlet被銷毀之前執(zhí)行,一般用于釋放資源

Servlet3.0 注解配置:

  • 好處:支持注解配置。可以不需要web.xml了
  • 步驟:
    ?1.創(chuàng)建JavaEE項(xiàng)目,選擇Servlet的版本3.0以上,可以不創(chuàng)建Web.xml
    ?2.定義一個(gè)類,實(shí)現(xiàn)Servlet接口
    ?3.復(fù)寫方法
    ?4.在類上使用@WebServlet注解,進(jìn)行配置@WebServlet(" 資源路徑:")

體系結(jié)構(gòu):

Servlet------接口
? ? ?|
GenericServlet------抽象類
? ? ?|
HttpServlet------抽象類

  • GenericServlet:將Servlet接口中其他的方法做了默認(rèn)空實(shí)現(xiàn),只將service()方法作為抽象
    1. 將來定義Servlet時(shí),可以繼承GenericServlet,實(shí)現(xiàn)Service()方法即可
  • HttpServlet:對http協(xié)議的一種封裝,簡化操作
    1. 定義類繼承HttpServlet
    2. 復(fù)寫doGet/doPost方法

相關(guān)配置

  1. urlpartten:Servlet訪問路徑
    1. 一個(gè)Servlet可以定義多個(gè)訪問路徑:@WebServlet({"/d4","/d44","/d444"})
    2. 路徑定義規(guī)則:
      1. /xxx:路徑匹配
      2. /xxx/xxx:多層路徑,目錄結(jié)構(gòu)
      3. *.do:擴(kuò)展名匹配

IDEA與Tomcat的相關(guān)配置

1. IDEA會為每一個(gè)tomcat部署的項(xiàng)目單獨(dú)建立一份配置文件
????????1 查看控制臺的log:Using CATALINA_BASE:“c:\Users\fqy.IntelliJIdea2018.1\system\tomcat_itcast”
2. 工作空間項(xiàng)目 和 tomcat部署的web項(xiàng)目
?????? ?1. tomcat真正訪問的是“tomcat部署的web項(xiàng)目”,“tomcat部署的web項(xiàng)目”對應(yīng)著“工作空間項(xiàng)目”的web目錄下的所有資源
?????? ?2. WEB-INF目錄下的資源不能被瀏覽器直接訪問
????????3. 虛擬目錄是項(xiàng)目的訪問方式
3. 斷點(diǎn)調(diào)試:使用“小蟲子”啟動debug模式

HTTP

概念:Hyper Text Transfer Protocol 超文本傳輸協(xié)議

  • 傳輸協(xié)議:定義了客戶端和服務(wù)端通信時(shí),發(fā)送數(shù)據(jù)的格式

  • 特點(diǎn):

    1. 基于TCP/IP的高級協(xié)議
    2. 默認(rèn)端口號:80
    3. 基于請求/響應(yīng)模型的:一次請求對應(yīng)一次響應(yīng)
    4. 無狀態(tài)的:每次請求之間相互獨(dú)立。不能交互數(shù)據(jù)
  • 歷史版本:

    • 1.0:每一次請求響應(yīng)都會建立新的連接
    • 1.1:復(fù)用連接

請求消息

客戶端發(fā)送給服務(wù)器端的數(shù)據(jù)

數(shù)據(jù)格式

  1. 請求行
    請求方式?? 請求url ?? 請求協(xié)議/版本
    ?????|?????????????????|????????????????????|
    ??GET????/login.html????HTTP/1.1

    請求方式(HTTP協(xié)議有7種請求方式,常用的有兩種:
    GET:

    1. 請求參數(shù)在請求行中,在url后。
    2. 請求的url長度有限制的
    3. 不太安全

    POST:

    1. 請求參數(shù)在請求體中
    2. 請求的url長度沒有限制的
    3. 相對安全
  2. 請求頭
    請求頭名稱:請求頭值
    常見的請求頭:

    1. User-Agent:瀏覽器告訴服務(wù)器,我訪問你使用的瀏覽器版本信息
      可以在服務(wù)器端獲取該頭的信息,解決瀏覽器的兼容性問題
    2. Referer:http://localhost/login.html
      告訴服務(wù)器,我(當(dāng)前請求)從哪里來?
      作用:
      1. 防盜鏈
      2. 統(tǒng)計(jì)工作

  3. 請求空行
    空行

  4. 請求體(正文)
    封裝POST請求消息的請求參數(shù)的字符串

響應(yīng)消息

服務(wù)端發(fā)送給客戶端的消息

數(shù)據(jù)格式

  1. 響應(yīng)行
    1. 組成:協(xié)議/版本 響應(yīng)狀態(tài)碼 狀態(tài)碼描述
    2. 響應(yīng)狀態(tài)碼:服務(wù)器告訴客戶端瀏覽器本次請求和相應(yīng)的一個(gè)狀態(tài)
      1. 狀態(tài)碼都是3位數(shù)字
      2. 分類:
        1. 1xx:服務(wù)器就收客戶端消息,但沒有接受完成,等待一段時(shí)間后,發(fā)送1xx狀態(tài)碼
        2. 2xx:成功。代表:200
        3. 3xx:重定向。代表:302(重定向),304(訪問緩存)
        4. 4xx:客戶端錯(cuò)誤。
        ?????????????代表:
        ?????????????????404(請求路徑?jīng)]有對應(yīng)的資源)
        ?????????????????405(請求方式?jīng)]有對應(yīng)的doxxx方法)
        6. 5xx:服務(wù)器錯(cuò)誤。代表:500(服務(wù)器內(nèi)部出現(xiàn)異常)
  2. 響應(yīng)頭
    1. 格式:頭名稱:值
    2. 常見的相應(yīng)頭:
      1. Content-Type:服務(wù)器告訴客戶端本次響應(yīng)體數(shù)據(jù)格式以及編碼格式
      2. 服務(wù)器告訴客戶端以什么格式打開響應(yīng)體數(shù)據(jù)
        值:
        in-line:默認(rèn)值,在當(dāng)前頁面內(nèi)打開
        attachment;filement=xxx:以附件形式打開響應(yīng)體。文件下載
  3. 響應(yīng)空行
  4. 響應(yīng)體:傳輸?shù)臄?shù)據(jù)


總結(jié)

以上是生活随笔為你收集整理的【JavaWeb】servlet与http请求协议的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。