7
votes

@Websservlet annotation web.xml welcome-file

Je voudrais définir le fichier de bienvenue de mon projet JSP / Javabeans. J'ai un servlet nommé 'contrôleur.java' avec l'annotation @webserservlet suivante: xxx

et j'ai un fichier web.xml avec le contenu suivant: xxx < / Pre>

Presque toutes les choses vont bien, je peux ouvrir http: // localhost: 8080 / projet / login et http: // localhost: 8080 / projet / show_ds_dbs < / code> et je viens au contrôleur.java. Mais quand j'ouvre http: // localhost: 8080 / Project / I Obtenir une erreur 404.

J'utilise Eclipse avec un "projet Web dynamique", le contrôleur. Le fichier Java est situé sous / src (package par défaut) et le fichier web.xml est sous /webcontent/web-inf.

J'espère que vous avez un conseil pour moi.


3 commentaires

Je pourrais avoir tort mais je ne pense pas que vous puissiez mettre une classe Java dans la liste des fichiers de bienvenue. Créez un fichier JSP comme index.jsp et utilisez cela à la place. index.jsp . De cette façon, lorsque vous accédez à localhost: 8080 / projet , vous devriez être transmis à index.jsp


Merci pour votre réponse. Mais il doit être "contrôleur.java" car il gère la demande en fonction de la session.


Voir ceci Stackoverflow.com/questions/13450044/...


5 Réponses :


2
votes

Voici ce que votre web.xml devrait être. Créer un index.jsp. Utilisez l'index.jsp comme fichier de bienvenue. La classe de contrôleur est votre Sevlet. Donc, définissez un servlet dans votre web.xml comme suit. Cela devrait entraîner une ordonnance de toutes les demandes de la classe du contrôleur. Et vous devriez toujours pouvoir accéder à Localhost: 8080 / Projet /, auquel cas il sera dirigé vers votre fichier de bienvenue.

Si vous ne souhaitez pas créer index.jsp, vous pouvez utiliser votre fichier JSP existant, peut être votre fichier login.jsp comme fichier de bienvenue. Dans ce cas, il suffit de remplacer l'index.jsp avec login.jsp xxx


0 commentaires

8
votes

Dans la liste de fichiers de bienvenue, vous devez Spécifier les URIS . Mais vous avez spécifié le nom du servlet .

Citation du Java ™ Servlet Spécification version 3.0 (emphase mine):

10.10 Fichiers de bienvenue

Les développeurs d'applications Web peuvent définir un Liste de commande de URIS partielle appelé fichiers de bienvenue sur le Web Descripteur de déploiement d'application. La syntaxe de descripteur de déploiement Pour la liste est décrit dans le descripteur de déploiement de l'application Web schéma.

Le but de ce mécanisme est de permettre au déplocieur de Spécifiez une liste ordonnée d'URIS partielle pour le conteneur à utiliser pour Ajout aux URI lorsqu'il y a une demande d'URI qui correspond à à une entrée d'annuaire dans la guerre non mappée sur une composante Web. Cette Le type de demande est connu comme une demande partielle valide.

L'utilisation de cette installation est clarifiée par l'exemple courant suivant: un fichier de bienvenue de 'index.html' peut être défini afin qu'une demande à une URL aime hôte: port / webapp / répertoire / , où 'répertoire' est une entrée dans la guerre qui n'est pas mappé sur une page de servlet ou de JSP, est renvoyé au client Comme 'Host: port / webapp / répertoire / index.html' .

Si un conteneur Web reçoit une demande partielle valide, le conteneur Web doit examiner la Liste de fichiers de bienvenue définie dans le descripteur de déploiement. L'accueil La liste des fichiers est une liste de commande d'URL partielles sans fin ou dirigeant /. Le serveur Web doit ajouter chaque fichier d'accueil dans la commande spécifié dans le descripteur de déploiement sur la demande partielle et Vérifiez si une ressource statique dans la guerre est mappée sur cette demande Uri. Si aucune correspondance n'est trouvée, le serveur Web doit à nouveau annoncer chacun fichier d'accueil dans l'ordre spécifié dans le descripteur de déploiement à la demande partielle et vérifiez si un servlet est mappé sur cette demande URI. Le conteneur Web doit envoyer la demande à la première ressource dans la guerre qui correspond. Le conteneur peut envoyer la demande à la Ressource de bienvenue avec un retour, une redirection ou un conteneur spécifique mécanisme qui est indiscernable d'une demande directe.

Si aucun fichier de bienvenue correspondant n'est trouvé de la manière décrite, le conteneur Peut gérer la demande d'une manière qu'il trouve appropriée. Pour certaines configurations, cela peut signifie retourner une liste de répertoires ou pour d'autres renvoyant une réponse 404.


P.s.

Voir également les exemples de la spécification du chapitre 10.10


0 commentaires

9
votes

Merci pour votre aide. Voici ma solution:

Si vous souhaitez définir votre servlet en tant que fichier de bienvenue, vous devez effectuer ce qui suit:

Définissez un fichier HTML standard comme fichier de bienvenue tel que index.html dans votre web.xml : xxx

Assurez-vous que ce fichier (index.html) n'existe pas .

Définissez vos urlpatterns dans @weServillet comme ceci: xxx

maintenant chaque requête à http: //.../project/ (root) sera redirigé vers http http : //.../Project/index.html et cela appelle le servlet.


1 commentaires

En tant que note latérale, avec des servlets ce que vous définissez avec URL-motif est juste un chemin logique / virtuel pour le servlet. Encore une fois, ce n'est pas un véritable chemin vers l'emplacement physique de la classe de servlet, mais un chemin logique - vous le faites comme vous le souhaitez. Donc, cela pourrait être à peu près tout ce que vous voulez. Je veux dire, pas nécessairement index.html , il pourrait s'agir de / index ou foo ou foo.bar ou peu importe. P.s. Félicitations, maintenant, vous avez des points d'enogh à uPvote)))



0
votes

Vous pouvez spécifier l'URL "/ contrôleur" dans URLPatterns dans @WebServlet Annotation. Je pense que cela fonctionnera.


0 commentaires

1
votes

Le fichier de bienvenue par défaut est index.html , alors ajoutez simplement le motif d'URL. XXX


0 commentaires