使用此注解来快速注册一个Servlet。
name 属性
实际上就是默认的字符串参数。
通配符
它不仅仅可以是一个固定值,还可以进行通配符匹配:
@WebServlet("/test/*")
// 或者
@WebServlet("*.js")
/
如果是只有一个 /
时,此路径和Tomcat默认为我们提供的Servlet冲突,会直接替换掉默认的,而使用我们的。
多个访问路径
可以为一个Servlet配置多个访问路径:
@WebServlet({"/test1", "/test2"})
loadOnStartup
loadOnStartup属性,决定了是否在Tomcat启动时就加载此Servlet,默认情况下,Servlet只有在被访问时才会加载,它的默认值为-1,表示不在启动时加载。
我们可以将其修改为大于等于0的数,来开启启动时加载。并且数字的大小决定了此Servlet的启动优先级。
@Log
@WebServlet(value = "/test", loadOnStartup = 1)
public class TestServlet extends HttpServlet {
@Override
public void init() throws ServletException {
super.init();
log.info("我被初始化了!");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
resp.getWriter().write("<h1>恭喜你解锁了全新玩法</h1>");
}
}
initParams 初始化参数
初始化参数类似于初始化配置需要的一些值,比如我们的数据库连接相关信息,就可以通过初始化参数来给予Servlet,或是一些其他的配置项,也可以使用初始化参数来实现。
@WebServlet(value = "/login", initParams = {
@WebInitParam(name = "test", value = "我是一个默认的初始化参数")
})
通过 Servlet 的 getInitParameter
方法获取:
System.out.println(getInitParameter("test"));
全局参数
在单个注解中的参数只在该servlet中有效,也可以在 web.xml 中编写全局参数。
<context-param>
<param-name>lbwnb</param-name>
<param-value>我是全局初始化参数</param-value>
</context-param>
通过使用 ServletContext 来读取全局初始化参数:
ServletContext context = getServletContext();
System.out.println(context.getInitParameter("lbwnb"));