@WebServlet注解:
@WebServlet注解一般在類上聲明使用。一般情況下此類要繼承 Servlet
案例如下:
@WebServlet(urlPatterns = "/druid/*", initParams={ @WebInitParam(name="allow",value="127.0.0.1"),// IP白名單 (沒有配置或者為空,則允許所有訪問) @WebInitParam(name="deny",value=""),// IP黑名單 (存在共同時,deny優先於allow) @WebInitParam(name="loginUsername",value="admin"),// 用戶名 @WebInitParam(name="loginPassword",value="123456"),// 密碼 @WebInitParam(name="resetEnable",value="true")// 禁用HTML頁面上的“Reset All”功能 }) public class DruidStatViewServlet extends StatViewServlet { private static final long serialVersionUID = 2359758657306626394L; }
對應的xml為:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 3 4 <servlet> 5 6 <servlet-name>DruidStatViewServlet </servlet-name> 7 8 <servlet-class>com.xfwbing.DruidStatViewServlet </servlet-class> 9 10 <init-param> 11 12 <param-name>allow</param-name> 13 14 <param-value>127.0.0.1</param-value> 15 16 </init-param> 17 18 </servlet> 19 20 <servlet-mapping> 21 22 <servlet-name> 23 DruidStatViewServlet 24 </servlet-name> 25 26 <url-pattern> 27 /druid/* 28 </url-pattern> </servlet-mapping> </web-app>
只要在類上面設置@WebServlet標注,容器就會自動讀取當中的信息。 上面案例中的@WebServlet告訴容器,如果請求的URL是 "/druid/*",那么就由DruidStatViewServlet來提供服務。
若沒有設置@WebServlet的name屬性,默認值會是Servlet的類完整名稱。
當應用程序啟動后,事實上並沒有創建所有的Servlet實例。容器會在首次請求需要某個Servlet服務時,才將對應的Servlet類實例化、進行初始化操作,然后再處理請求。這意味着第一次請求該Servlet的客戶端,必須等待Servlet類實例化、進行初始動作所必須花費的時間,才真正得到請求的處理。
如果希望應用程序啟動時,就先將Servlet類載入、實例化並做好初始化動作,則可以使用loadOnStartup設置。設置大於0的值(默認值為-1),表示啟動應用程序后就要初始化Servlet(而不是實例化幾個Servlet)。數字代表了Servlet的初始順序,容器必須保證有較小數字的Servlet先初始化
,在使用標注的情況下,如果有多個Servlet在設置loadOnStartup時使用了相同的數字,則容器實現廠商可以自行決定要如何載入哪個Servlet。
@WebServlet常用屬性
| 屬性 | 類型 | 是否必須 | 說明 |
|---|---|---|---|
| asyncSupported | boolean | 否 | 指定Servlet是否支持異步操作模式 |
| displayName | String | 否 | 指定Servlet顯示名稱 |
| initParams | WebInitParam[] | 否 | 配置初始化參數 |
| loadOnStartup | int | 否 | 標記容器是否在應用啟動時就加載這個Servlet |
| name | String | 否 | 指定Servlet名稱 |
| urlPatterns/value | String[] | 否 | 這兩個屬性作用相同,指定Servlet處理的url |
