@WebServlet 用于将一个类声明为 Servlet,该注解将会在部署时被容器处理,容器将根据具体的属性配置将相应的类部署为 Servlet。该注解具有下表给出的一些常用属性(以下所有属性均为可选属性,但是 vlaue 或者 urlPatterns 通常是必需的,且二者不能共存,如果同时指定,通常是忽略 value 的取值)
(String)name:指定servlet的name属性,等价于配置中的<servlet-name>。如果没有显示的给出,则会取类的全限定名称(类名)
(String [ ])urlPatterns:指定了一组servlet匹配模式,等价于<servlet-pattern>。
(String [ ])value:等价于urlPatterns,但二者通常只是用其中一个。
(int)loadOnStartup:
该元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。
当该数值为0或者大于0的时候,就表示在应用启动的时候就加载并且初始化该servlet。其中,当正值越小,代表着优先级越高,越先被加载。有两个值相同的时候,按照顺序加载。
当该数值小于0或者未被指定的时候,就表示在容器可以自行决定何时加载该servlet。
等价于<load-on-startup>
一般情况下,大多数的Servlet是在应用启动的时候加载的,但是通过使用这个属性,可以改变这种状况。
(WebInitParam[ ])initParam:声明一组servlet初始化的参数
(String)description:servlet的描述信息,等价于<description>
(String)displayName:设置serlvet的显示名,通常配合工具使用。(?)
eg:
@WebServlet(displayName = "UserServlet" //描述
, name = "UserServlet", //servlet名称
urlPatterns = { "/user" }, //url
loadOnStartup = 1, //启动项initParams = { @WebInitParam(name = "username", value = "张三") })
<servlet>
<servlet-name>UserServlet</servlet-name>
<servlet-class>javax.faces.webapp.UserServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>username</param-name>
<param-value>张三</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>UserSerlvet</servlet-name>
<url-pattern>/user</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>