Servlet: server applet
- 概念:運作在伺服器端的小程式
- Servlet就是一個接口,定義了Java類被浏覽器通路到(tomcat識别)的規則。
- 将來我們自定義一個類,實作Servlet接口,複寫方法。
快速入門:
- 建立 JavaEE 項目
- 定義一個類,實作 Servlet 接口
public class ServletDemo1 implements Servlet
- 實作接口中的抽象方法
- 配置 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-pattern>/demo1</url-pattern>
</servlet-mapping>
執行原理:
- 當伺服器接受到用戶端浏覽器的請求後,會解析請求URL路徑,擷取通路的 Servlet 的資源路徑
- 查找 web.xml 檔案,是否有對應的
标簽體内容。<ul-pattern>
- 如果有,則在找到對應的
全類名<servlet-class>
- tomcat 會将位元組碼檔案加載進記憶體,并且建立其對象
- 調用其方法
servlet 基礎入門
Servlet中的生命周期方法
- 被建立:執行
方法,隻執行一次init
- Servlet什麼時候被建立?
- 預設情況下,第一次被通路時,Servlet 被建立
- 可以配置執行 Servlet 的建立時機。
-
在标簽下配置
1. 第一次被通路時,建立
<load-on-startup>
的值為負數
2. 在伺服器啟動時,建立
的值為0或正整數<load-on-startup>
-
<servlet>
<servlet-name>demo1</servlet-name>
<servlet-class>cn.itcast.web.servlet.ServletDemo1</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>demo1</servlet-name>
<url-pattern>/demo1</url-pattern>
</servlet-mapping>
- Servlet的
方法,隻執行一次,說明一個 Servlet 在記憶體中隻存在一個對象,Servlet 是單例的init
- 多個使用者同時通路時,可能存線上程安全問題。
- 解決:盡量不要在 Servlet 中定義成員變量。即使定義了成員變量,也不要對修改值
- 提供服務:執行
方法,執行多次service
- 每次通路 Servlet 時,Service 方法都會被調用一次。
- 被銷毀:執行
方法,隻執行一次destroy
- Servlet 被銷毀時執行。伺服器關閉時,Servlet 被銷毀
- 隻有伺服器正常關閉時,才會執行destroy 方法。
- destroy 方法在 Servlet 被銷毀之前執行,一般用于釋放資源
注解配置
Servlet3.0:支援注解配置。不需要web.xml。
步驟:
- 建立 JavaEE 項目,選擇 Servlet 的版本3.0以上,可以不建立 web.xml
- 定義一個類,實作 Servlet 接口
- 重寫方法
- 在類上使用
注解,進行配置@WebServlet
直接使用
@WebServlet("資源路徑")
即可
圖檔來源:黑馬教程