【问题标题】:Is it OK not to specify class name with @WebListener (unlike @WebServlet)?可以不使用@WebListener 指定类名(与@WebServlet 不同)吗?
【发布时间】:2019-06-29 03:33:50
【问题描述】:

我是否必须像 @WebServlet("/MyClassname") 那样为 @WebListener 注释指定类名?

在我的应用程序中,只有 @WebListener 工作正常,但我只有 single ServletContextListener - 如果我有几个可能会有所不同?

@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
...
}

@WebListener
public class InitWebAppServlet implements ServletContextListener {
...
}

【问题讨论】:

    标签: servlets jakarta-ee servlet-listeners


    【解决方案1】:

    @WebServlet 中的值不是类名。它是一个 URL 路径。当您只使用一个参数时,它相当于:

    @WebServlet(urlPatterns = {"/MyServlet"})
    

    您的代码也可以这样:

    @WebServlet("/bobsyouruncle")
    public class MyServlet extends HttpServlet {
    ...
    }
    

    这意味着您将使用 URL /bobsyouruncle 而不是 /MyServlet 访问您的 servlet。有关详细信息,请参阅WebServlet javadocs。请注意,对于注释,如果您只有一个参数,它会设置元素 value

    @WebListener 参数的可选值用于对侦听器的描述(请参阅the WebListener javadocs)。同样,它不是类名。您可以拥有任意数量的 @WebListener 类,但通过使用注解方法而不是 web.xml 方法,您无法保证 servlet 容器运行它们的顺序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多