Java如何使用@WebServlet注解定义servlet?
注解是Servlet3.0规范中引入的一项新功能。以前,要声明servlet,侦听器或过滤器,我们必须在web.xml文件中进行声明。现在,有了新的注解功能,我们可以使用@WebServlet注解对Servlet类进行注解。
package org.nhooo.example.servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet(
name = "HelloAnnotationServlet",
urlPatterns = {"/hello", "/helloanno"},
asyncSupported = false,
initParams = {
@WebInitParam(name = "name", value = "admin"),
@WebInitParam(name = "param1", value = "value1"),
@WebInitParam(name = "param2", value = "value2")
}
)
public class HelloAnnotationServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.write("<html><head><title>WebServlet Annotation</title></head>");
out.write("<body>");
out.write("<h1>Servlet Hello Annotation</h1>");
out.write("<hr/>");
out.write("Welcome " + getServletConfig().getInitParameter("name"));
out.write("</body></html>");
out.close();
}
}部署servlet后,您可以使用/hello或/helloannourl访问它。
下表简要说明了@WebServlet注解所接受的属性及其用途。
@WebInitParam的数组,可用于传递servlet配置参数。此属性是可选的。