Servlet:server applet
官方給出的解釋是運行在服務器端的小程序瀏覽器通過ip和端口來找到服務器,服務器中的資源分爲兩類,
一類是靜態資源,
一類是動態資源
所謂動態資源,就是不同的用戶訪問到的頁面是不一樣的,這說明動態資源中肯定有一些邏輯性,來實現不同的用戶訪問同樣的資源看到的是不一樣的。而這些邏輯性,就要通過Java代碼(Java類)來實現。
也就是說瀏覽器請求動態資源的時候,訪問的就是服務器上的Java類
上面說的規則,就是Servlet,它本質上就是一個接口,定義了Java類被tomcat識別的規則
使用Servlet
- 創建JavaEE項目
- 在src目錄內定義一個類,實現Servlet接口
- 實現接口中的抽象方法
- 配置Servlet(一共有兩種方法,這裏先記錄第一種)在web.xml中配置
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>全類名(包名+類名)</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1(Servlet資源路徑)</url-pattern>
</servlet-mapping>
在web.xml中加上以上內容
- 當服務器接受到客戶端瀏覽器的請求後,會解析請求URL路徑,獲取訪問的Servlet的資源路徑
- 查找web.xml文件,是否有對應的url-pattern標籤體內容。
- 如果有,則通過映射找到對應的servlet-class全類名
- tomcat會將字節碼文件加載進內存,並且創建其對象
注意:這個實現了Servlet接口的類是由Tomcat通過反射創建的對象,並不是由程序員創建的 - 調用對象的方法
配置原理:
Servlet的生命週期
- 被創建:執行init()方法,該方法只執行一次
那麼Servlet在什麼時候被創建呢?
默認情況下,在資源第一次被訪問時,Servlet被創建
可以在web.xml文件中配置改變Servlet被創建的時機
在上面說到的servlet標籤下配置,具體下面有圖 - 提供服務:執行service方法,可以執行多次
每次訪問Servlet時,Service方法都會被調用一次。 - 被銷燬:執行destroy方法,只執行一次
只有服務器正常關閉時,纔會執行destroy方法。
destroy方法在Servlet被銷燬之前執行,一般用於釋放資源
設置Servlet被創建的時機
使用load-on-startup標籤,這是一個圍堵標籤,當標籤的值爲負數的時候,默認第一次被訪問時創建當標籤的值爲正數或0的時候,服務器啓動時創建
使用註解配置Servlet
在Servlet3.0以後,可以使用註解配置Servlet,相比較在web.xml文件中配置更加方便使用方法:
在類上加註解@WebServlet("資源路徑"),這樣就可以通過註解的資源路徑找到相應的類,直接將類加載進內存
Servlet體系結構
Servlet是一個接口,裏面有5個抽象方法,每次繼承Servlet接口的時候,都需要重寫這5個抽象方法,而實際上,很多時候並用不到其中的有些方法,所以每次都要重寫,很麻煩這樣,就有了Servlet的子類GenericServlet