開發者學堂課程【Servlet入門:Servlet的細節1】學習筆記,與課程緊密聯系,讓使用者快速學習知識。
課程位址: https://developer.aliyun.com/learning/course/34
Servlet的細節1
一、 Servlet與線程安全
二、 讓伺服器在啟動時就建立 Servlet
三、 <url-pattern>
1. Servlet與線程安全
因為一個類型的 Servlet隻有一個執行個體對象,那麼就有可能會現時出一個Servlet同時處理多個請求,那麼Servlet是否為線程安全的呢?答案是:“不是線程安全的”。這說明 Servlet的工作效率很高,但也存線上程安全問題!
解決辦法:
1) 不要在Servlet中建立成員,建立局部變量即可。
2) 可以建立無狀态成員。
3) 可以建立有狀态的成員,但狀态必須為隻讀的。
是以我們不應該在 servlet 中便宜建立成員變量,因為可能會存在一個線程對這個成員變量進行寫操作,另一個線程對這個成員變量進行讀操作。
2. 讓伺服器在啟動時就建立 Servlet
預設情況下,伺服器會在某個Servlet第一次收到請求時建立它。也可以在 web.xml 中對 Servlet進行配置,使伺服器啟動時就建立Servlet。
3. <url-pattern>
是的子元素,用來指定 Servlet的通路路徑,即 URL。它必須是以“/”開頭!
1) 可以在中給出多個,例如:
那麼這說明一個 Servlet綁定了兩個 URL,無論通路/AServlet還是/BSerMet,通路的都是AServlet。
1) 還可以在中使用通配符,所謂通配符就是星号“*”,星号可以比對任何 URL字首或字尾,使用通配符可以命名一個 Servlet綁定一組 URL,例如:
a) /servlet/*:/servlet/a、/servlet/b,都比對/servlet/*;
b) *.do:/abc/def/ghi.do、/a.do,都比對".do;
c) /*:比對所有URL;
請注意,通配符要麼為字首,要麼為字尾,不能出現在URL中間位置,也不能隻有通配符。例如:/*.do 就是錯誤的,因為星号出現在 URL 的中間位置上了。*.*也是不對的,因為一個 URL 中最多隻能出現一個通配符。