我的 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("/登录")
就在我的 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
。当我删除此注释时,服务器工作正常。据我了解,注释不应该对程序的运行时产生影响,而只是为了优化编译?顺便说一句,这个注释到底有什么作用?
最佳答案
您不能对注释和 web.xml 使用相同的映射,您可以使用其中之一。应用服务器将其视为重复的 url 映射。
基本上,在 web.xml 中声明 servlet 和 servlet-mapping 元素相当于使用 @WebServlet 注释 servlet 类。
关于java - 存在 "@WebServlet"注释时出现 Servlet 映射错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24740929/