我的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
。当我删除此注释时,服务器工作正常。根据我的理解,注释不应该对程序的运行时有影响,而只是为了优化编译?在旁注中,该注释究竟做了什么?
答案 0 :(得分:2)
您不能对注释和web.xml使用相同的映射,您可以使用其中任何一个。应用服务器将其视为重复的网址映射。
基本上,在web.xml中声明servlet和servlet-mapping元素等同于用@WebServlet注释servlet类。