web-dev-qa-db-fra.com

Ai-je vraiment besoin de web.xml pour une application Web basée sur Servlet Java application Web?

Je n'ai pas travaillé sur des projets Web réels. À l'université, nous avons utilisé à la fois des servlets et Spring pour Java développement Web. Dans les deux projets, nous avons reçu des fichiers web.xml déjà configurés et nous n'y apportions que des modifications mineures. Maintenant, je dois créer un application Web à partir de zéro. J'ai créé une nouvelle classe de servlet dans Eclipse et il n'a pas créé automatiquement de web.xml. Ensuite, j'ai googlé, et j'ai lu sur plusieurs ressources que web.xml n'est pas vraiment nécessaire, mais que le raisonnement a été mis en quelques phrases, donc je ne sais pas si utiliser des annotations au lieu de web.xml ne sera pas un problème. Je serai vraiment content s'il n'y a pas besoin de configurer web.xml, car je n'en ai pas configuré moi-même et je veux de se concentrer davantage sur la logique métier.

Merci d'avance!

35
giliev

Vous n'avez pas besoin d'un web.xml fichier si vous avez un conteneur qui prend en charge les dernières spécifications j2ee. Ici est un lien vers un exemple de servlet simple qui utilise une annotation et ici vous pouvez trouver la même chose pour Spring MVC; Je poste l'exemple ici pour votre commodité

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/*");
    }

}

ici est un autre lien qui montre comment utiliser les autres annotations disponibles (@ServletFilter, @WebServletContextListener); vous pouvez télécharger le formulaire de spécifications ici afin d'avoir une vue plus détaillée des annotations disponibles via j2ee.

15
Giovanni

À partir de Servlet 3, aucun fichier web.xml n'est requis. Vous allez vouloir utiliser quelque chose comme Tomcat 7 ou 8 (meilleur choix). Pour les servlets bruts c'est un bon point de départ .

Si vous souhaitez utiliser Spring moderne, Grails 3 est une excellente façon de procéder. Il fait face à toutes ces questions et Grails est un cadre très productif pour le développement Web. Vous pouvez le considérer comme Ruby on Rails construit sur Spring et Hibernate).

À ce stade, vous ne devriez pas avoir à écrire de fichier web.xml pour la configuration, sauf si vous utilisez un framework qui en a besoin. Je ne connais pas le printemps mvc, mais Grails ne vous oblige pas à le faire et il utilise la plupart de ce que vous avez déjà l'habitude d'utiliser.

11
Mike Thomsen

Une autre façon (Spring 3.1+) -

Une implémentation de classe de base abstraite de WebApplicationInitializer nommée AbstractDispatcherServletInitializer facilite encore plus l'enregistrement du DispatcherServlet en remplaçant simplement les méthodes pour spécifier le mappage de servlet et l'emplacement de la configuration 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[] { "/" };
    }

}
3
Aniket Thakur

Que vous ayez besoin de web.xml ou non dépend de la spécification de servlet que vous revendiquez dans votre application. Si vous créez une application à l'aide de la spécification 3.0, vous pouvez utiliser des annotations pour déclarer vos servlets et la déployer dans un conteneur sans avoir besoin d'un fichier web.xml. Cela a été fait dans le cadre de JSR-315 .

2
Chris

Ici, j'ai trouvé un exemple d'application Web sans utiliser le fichier descripteur de déploiement (web.xml). Le seul point à considérer ici est que cela fonctionnera avec les dernières versions de Tomcat> = 7.0

Visitez http://Java-demos.blogspot.com/2014/01/servlet-web-application-without-webxml.html

Visitez https://www.baeldung.com/Java-web-app-without-web-xml

0
Vimal Panchal

Utilisez Spring Boot, qui gérera le conteneur et toute la configuration du passe-partout pour vous. Vous pouvez générer un squelette prêt à être lancé avec Initializr .

0
chrylis

Non, il n'y aura pas besoin de web.xml pour servlet based application si vous utilisez la version de servlet >3.0 et Tomcat 7 car il ne fonctionnera pas dans les versions précédentes de Tomcat.

L'annotation représente les métadonnées. Si vous utilisez une annotation, le descripteur de déploiement (fichier web.xml) n'est pas requis. Jetez un œil ici pour toutes les annotations disponibles.

0
Naman