Solución:
He leído que no es necesario mencionar el servlet en web.xml.
Probablemente se esté confundiendo con el Tomcat-incorporado heredado InvokerServlet
que estaba presente en versiones anteriores de Apache Tomcat (y aún se menciona en tutoriales / libros deficientes y desactualizados). De hecho, permitió invocar servlets como ese sin la necesidad de mapear nada. Sin embargo, más tarde se confirmó que se trataba de un agujero de seguridad y vulnerable a los ataques. Fue deshabilitado y obsoleto en Tomcat 5.0 y eliminado en Tomcat 7.0. En tal caso, realmente necesita mapear su servlet en web.xml
(¡y ponlo en un paquete!).
Otra fuente de confusión puede ser el nuevo Servlet 3.0 @WebServlet
anotación. Cuando ya está usando un contenedor Servlet 3.0 como Tomcat 7.0, entonces puede usar esta anotación para mapear el servlet sin la necesidad de jugar con web.xml
.
package com.example;
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
// ...
}
Entonces podrás acceder a él de la forma que quieras.
Ver también:
- Nuestra página wiki de Servlets
su archivo web.xml tiene que ser así
<web-app>
<servlet>
<servlet-class>mypackage.myservlet</servlet-class>
<!-- the full name of your class -->
<servlet-name>name</servlet-name>
<!-- name has be the same in servlet and servlet-mapping -->
</servlet>
<servlet-mapping>
<servlet-name>name</servlet-name>
<url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>