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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

servlet容器_Tomcat 容器与servlet的交互原理

發布時間:2023/12/19 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 servlet容器_Tomcat 容器与servlet的交互原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊藍字“程序員考拉”歡迎關注!

Tomcat 是Web應用服務器,是一個Servlet/JSP容器. Tomcat 作為Servlet容器,負責處理客戶請求,把請求傳送給Servlet,并將Servlet的響應傳送回給客戶.而Servlet是一種運行在支持Java語言的服務器上的組件. Servlet最常見的用途是擴展Java Web服務器功能,提供非常安全的,可移植的,易于使用的CGI替代品.下面我們描述一下Tomcat與Servlet是如何工作的,首先看下面的時序圖.

1、1、Web客戶向Servlet容器(Tomcat)發出Http請求

2、Servlet容器分析客戶的請求信息

3、Servlet容器創建一個HttpRequest對象,將客戶請求的信息封裝到這個對象中

4、Servlet容器創建一個HttpResponse對象

5、Servlet容器調用HttpServlet對象的service方法,把HttpRequest對象與HttpResponse對象作為參數

???? 傳給 HttpServlet對象

6、HttpServlet調用HttpRequest對象的有關方法,獲取Http請求信息

7、HttpServlet調用HttpResponse對象的有關方法,生成響應數據

8、Servlet容器把HttpServlet的響應結果傳給Web客戶

看到以上這個過程,那么我們會問Servlet容器與HttpServlet又是基于什么樣的約定進行交互的?

HttpServlet對象的生命周期如何?

首先我們來了解一下Servlet對象的API

Servlet的框架是由兩個Java包組成的:javax.servlet與javax.servlet.http。在javax.servlet包中定義了所有的Servlet類都必須實現或者擴展的通用接口和類。在javax.servlet.http包中定義了采用Http協議通信的HttpServlet類。Servlet的框架的核心是javax.servlet.Servlet接口,所有的Servlet都必須實現這個接口。

在Servlet接口中定義了5個方法,其中3個方法代表了Servlet的生命周期:

1、init方法:負責初始化Servlet對象。

2、service方法:負責響應客戶的請求。

3、destroy方法:當Servlet對象退出生命周期時,負責釋放占用的資源。

下面我們來看下面的類圖。

在javax.servlet.Servlet接口中有一些do方法,它們對應的是http的請求方式。下面我們就結合類圖來描述一下HttpServlet對象的生命周期。

一、創建Servlet對象的時機

1、Servlet容器啟動時:讀取web.xml配置文件中的信息,構造指定的Servlet對象,創建ServletConfig對象,同時將ServletConfig對象作為參數來調用Servlet對象的init方法。

2、在Servlet容器啟動后:客戶首次向Servlet發出請求,Servlet容器會判斷內存中是否存在指定的Servlet對象,如果沒有則創建它,然后根據客戶的請求創建HttpRequest、HttpResponse對象,從而調用Servlet對象的service方法。

3、Servlet的類文件被更新后,重新創建ServletServlet容器在啟動時自動創建Servlet,這是由在web.xml文件中為Servlet設置的屬性決定的。從中我們也能看到同一個類型的Servlet對象在Servlet容器中以單例的形式存在。

二、銷毀Servlet對象的時機

1、Servlet容器停止或者重新啟動:Servlet容器調用Servlet對象的destroy方法來釋放資源。

以上所講的就是Servlet對象的生命周期。那么Servlet容器如何知道創建哪一個Servlet對象?

Servlet對象如何配置?實際上這些信息是通過讀取web.xml配置文件來實現的。

我們來看一下web.xml文件中的Servlet對象的配置節信息

-------------------------------------------
<servlet>
????<servlet-name>action<servlet-name>
????<servlet-class>org.apache.struts.action.ActionServletservlet-class>
????<init-param>
????????<param-name>configparam-name>
????????<param-value>/WEB-INF/struts-config.xmlparam-value>
????init-param>
????<init-param>
????????<param-name>detailparam-name>
????????<param-value>2param-value>
????init-param>
????<init-param>
????????<param-name>debugparam-name>
????????<param-value>2param-value>
????init-param>
????<load-on-startup>2load-on-startup>
servlet>
<servlet-mapping>
????<servlet-name>actionservlet-name>
????<url-pattern>*.dourl-pattern>
servlet-mapping>
------------------------------------------

下面對上面的配置節信息進行解析

  • servlet-name:Servlet對象的名稱

  • servlet-class:創建Servlet對象所要調用的類

  • param-name:參數名稱

  • param-value:參數值

  • load-on-startup:Servlet容器啟動時加載Servlet對象的順序

  • servlet-mapping/servlet-name:要與servlet中的servlet-name配置節內容對應

  • url-pattern:客戶訪問的Servlet的相對URL路徑

當Servlet容器啟動的時候讀取配置節信息,根據配置節信息創建Servlet對象,

同時根據配置節信息創建HttpServletConfig對象,然后執行Servlet對象的init方法,并且根據配置節信息來決定創建Servlet對象的順序,如果此配置節信息為負數或者沒有配置,那么在Servlet容器啟動時,將不加載此Servlet對象。

當客戶訪問Servlet容器時,Servlet容器根據客戶訪問的URL地址,通過配置節中的

配置節信息找到指定的Servlet對象,并調用此Servlet對象的service方法。

原文鏈接:https://blog.csdn.net/u013063153/article/details/48156983

如果感覺推送內容不錯,不妨右下角點個在看,感謝支持!

總結

以上是生活随笔為你收集整理的servlet容器_Tomcat 容器与servlet的交互原理的全部內容,希望文章能夠幫你解決所遇到的問題。

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