@WebServlet 註解用於將一個類聲明爲 Servlet
該註解將會在部署時被容器處理,容器將根據具體的屬性配置將相應的類部署爲 Servlet。
該註解具有下表給出的一些常用屬性(以下所有屬性均爲可選屬性,但是 vlaue 或者 urlPatterns 通常是必需的,且二者不能共存,如果同時指定,通常是忽略 value 的取值):
屬性名 | 類型 | 描述 |
---|---|---|
name | String | 指定 Servlet 的 name 屬性, 等價於 。 如果沒有顯式指定, 則該 Servlet 的取值即爲類的全限定名。 |
value | String[] | 該屬性等價於 urlPatterns 屬性。 兩個屬性不能同時使用。 |
urlPatterns | String[] | 指定一組 Servlet 的 URL 匹配模式。 等價於 標籤。 |
loadOnStartup | int | 指定 Servlet 的加載順序, 等價於 標籤。 |
initParams | WebInitParam[] | 指定一組 Servlet 初始化參數, 等價於 標籤。 |
asyncSupported | boolean | 聲明 Servlet 是否支持異步操作模式, 等價於 標籤。 |
description | String | 該 Servlet 的描述信息, 等價於 標籤。 |
displayName | String | 該 Servlet 的顯示名,通常配合工具使用, 等價於 標籤。 |
案例:
@WebServlet(
urlPatterns = {"/simple" },
asyncSupported = true,
loadOnStartup = -1,
name = "SimpleServlet",
displayName = "ss",
initParams = {@WebInitParam(name = "username", value = "tom") })
等價於:
<servlet>
<display-name>ss</display-name>
<servlet-name>SimpleServlet</servlet-name>
<servlet-class>footmark.servlet.SimpleServlet</servlet-class>
<init-param>
<param-name>username</param-name>
<param-value>tom</param-value>
</init-param>
<load-on-startup>-1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
代碼:
@WebServlet(urlPatterns = "/Test",initParams = {@WebInitParam(name="username",value="king"),@WebInitParam(name="password",value="king")})
public class Test extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public Test() {
super();
// TODO Auto-generated constructor stub
}
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println(config.getInitParameter("username"));
System.out.println(config.getInitParameter("password"));
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.getWriter().append("Served at: ").append(request.getContextPath());
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
結果:
king
king