¿Realmente necesito web.xml para una aplicación web Java basada en servlets?

No he estado trabajando en proyectos web del mundo real. En la universidad usamos tanto Servlets como Spring para el desarrollo web de Java. En ambos proyectos, recibimos archivos web.xml ya configurados y solo realizamos cambios menores en ellos. Ahora necesito construir una aplicación web desde cero. Creé una nueva clase Servlet en Eclipse y no creó automáticamente ningún web.xml. Luego busqué en Google, y leí de varios recursos que web.xml no es realmente necesario, pero ese razonamiento se puso en par de frases, por lo que no estoy seguro de si usar anotaciones en lugar de web.xml no será ningún problema. Estaré muy contento si no hay necesidad de configurar web.xml, porque no configuré uno solo y quiero enfocarme más en la lógica comercial.

¡Gracias de antemano!

No necesita un archivo web.xml si tiene un contenedor que admita las últimas especificaciones j2ee. Aquí hay un enlace a un ejemplo de servlet simple que usa una anotación y aquí puede encontrar lo mismo para Spring MVC; Publiqué el ejemplo aquí para su conveniencia

 public class MyWebApplicationInitializer implements WebApplicationInitializer { @Override public void onStartup(ServletContext container) { ServletRegistration.Dynamic registration = container.addServlet("dispatcher", new DispatcherServlet()); registration.setLoadOnStartup(1); registration.addMapping("/example/*"); } } 

Aquí hay otro enlace que muestra cómo usar las otras anotaciones disponibles (@ServletFilter, @WebServletContextListener); Puede descargar el formulario de especificaciones aquí para obtener una vista más detallada de las anotaciones disponibles a través de j2ee.

A partir de Servlet 3, no se requiere web.xml. Querrá usar algo como Tomcat 7 u 8 (mejor opción). Para servlets sin procesar, este es un buen punto de partida .

Si quieres usar Spring moderno, Grails 3 es una excelente forma de hacerlo. De parte a lado todos estos problemas y Grails es un marco muy productivo para el desarrollo web. Puedes pensar en Ruby on Rails construido sobre Spring e Hibernate.

En este punto, no debería tener que escribir ningún web.xml para configurarlo a menos que use un marco que lo necesite. No sé sobre spring mvc, pero Grails no requiere que hagas eso y usa la mayoría de lo que ya estás acostumbrado a usar.

  yourapp   org.apache.maven.plugins maven-war-plugin 2.5  false     

En pom.xml, el código repetitivo evita que Maven arroje un error porque no hay un archivo web.xml. Se requiere un archivo web.xml en aplicaciones web Java; sin embargo, desde la especificación Servlet 3.0 (implementada en Tomcat 7 y versiones superiores), ya no es necesaria.

Otra forma (spring 3.1+) –

Una implementación de clase base abstracta de WebApplicationInitializer denominada AbstractDispatcherServletInitializer hace que sea aún más fácil registrar el DispatcherServlet simplemente redefiniendo los métodos para especificar la asignación de servlet y la ubicación de la configuración de DispatcherServlet.

 public class MyWebAppInitializer extends AbstractDispatcherServletInitializer { @Override protected WebApplicationContext createRootApplicationContext() { return null; } @Override protected WebApplicationContext createServletApplicationContext() { XmlWebApplicationContext cxt = new XmlWebApplicationContext(); cxt.setConfigLocation("/WEB-INF/spring/dispatcher-config.xml"); return cxt; } @Override protected String[] getServletMappings() { return new String[] { "/" }; } } 

Si necesita o no web.xml depende de qué especificación de servlet reclame en su aplicación. Si va a crear una aplicación con la especificación 3.0, puede usar anotaciones para declarar sus servlets y desplegarlo en un contenedor sin necesidad de un archivo web.xml. Esto fue hecho como parte de JSR-315 .

Use Spring Boot, que administrará el contenedor y toda la configuración repetitiva para usted. Puede generar un esqueleto listo para el lanzamiento con Initializr .

No, no habrá necesidad de web.xml para la servlet based application si está utilizando servlet versión >3.0 y tomcat 7 ya que no se ejecutará en las versiones anteriores de tomcat.

La anotación representa los metadatos. Si usa la anotación, no se requiere el descriptor de implementación (archivo web.xml). Eche un vistazo aquí para ver todas las anotaciones disponibles.