【问题标题】:Servlet Mapping Error appears when "@WebServlet" annotation is present存在“@WebServlet”注释时出现 Servlet 映射错误
【发布时间】:2014-09-04 15:05:46
【问题描述】:

我的web.xml 看起来像这样:

    <servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.ajayramesh.jrecycled.servlets.Login</servlet-class>
    </servlet>

  <servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/login</url-pattern>
  </servlet-mapping>

我有一个名为 Login.java 的类,它带有一个自动生成的注释,上面写着:

@WebServlet("/login")

就在我的HttpServlet 类扩展声明的上方。如果存在此注释,则在尝试启动服务器时出现以下错误:

The servlets named [LoginServlet] and [com.ajayramesh.jrecycled.servlets.Login] are both mapped to the url-pattern [/login] which is not permitted

我的web.xml 中只有一个定义,并且只有一个web.xml。当我删除此注释时,服务器工作正常。据我了解,注释不应该对程序的运行时产生影响,而只是为了优化编译?顺便说一句,该注释到底有什么作用?

【问题讨论】:

    标签: java xml servlets


    【解决方案1】:

    您不能对 annotation 和 web.xml 使用相同的映射,您可以使用其中任何一个。应用服务器将其视为重复的 url 映射。

    基本上,在 web.xml 中声明 servlet 和 servlet-mapping 元素等同于使用 @WebServlet 注释 servlet 类。

    【讨论】:

    • 知道了,谢谢。那么它们在以前版本的 Tomcat 中是共存的吗?我已经看到了它们的示例代码。
    猜你喜欢
    • 2021-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    相关资源
    最近更新 更多