Modifier la page d'accueil par défaut dans le chemin root vers servlet avec doGet

j'ai un petit maven (indirectement via Netbeans 8.1 & tomcat setup)

et chaque fois que j'ai dirigé le projet il ouvre le navigateur avec un HelloWord sur la racine:

I. e la page sur http://localhost:8084/ est:

<html>
    <head>
        <title>Start Page</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>

j'ai essayé de créer un servlet pour le remplacer en utilisant:

@WebServlet(name = "HomeServlet", urlPatterns = {"/"}) cependant, il n'a pas fonctionné comme prévu.

i. e. il est toujours a montré le même hello world sur: http://localhost:8084

mais il a fait désordre avec tous les fichiers sur la racine i. e http://localhost:8084/foo.css était également manipulé par ce servlet et recevait sa réponse.

donc, ma question Est (en fait deux):

Comment puis-je changer le contenu de cette page en quelque chose d'autre ?

ou, à tout le moins (si le premier est impossible): puis-je utiliser un redirection permanente sur le chemin root pour éviter à l'utilisateur de voir cette page?

( Code http 301) pour déplacer l'utilisateur vers http://localhost:8084/home

10
demandé sur BalusC 2015-10-21 02:23:18

2 réponses

Comment puis-je changer le contenu de cette page en quelque chose d'autre ?

ouvrir le fichier JSP/HTML/XHTML sous-jacent dans un éditeur de texte. Cette page est identifiée par <welcome-file> entrée dans web.xml . Si c'est par exemple <welcome-file>index.jsp</welcome-file> , vous devez alors ouvrir le fichier /index.jsp dans le contenu web de votre projet dans L'éditeur de texte IDE builtin.


ou, à tout le moins (si le premier est impossible): puis-je utiliser une redirection permanente sur le chemin root pour éviter à l'utilisateur de voir cette page?

cette question est mal pensée. Vous ne voulez pas rediriger le visiteur en avant et en arrière tout le temps. Vous voulez mapper votre servlet sur webapp root. Pour mapper un servlet sur le chemin racine, utilisez le motif D'URL de chaîne vide "" au lieu du motif D'URL de servlet par défaut "/" comme dans votre tentative.

@WebServlet("")

Ou si vous n'êtes toujours pas sur Servlet 3.0 encore", voici la méthode à l'ancienne web.xml .

<servlet-mapping>
    <servlet-name>yourHomeServlet</servlet-name>
    <url-pattern></url-pattern> <!-- Yes, empty string! -->
</servlet-mapping>

si vous continuez à utiliser le modèle D'URL de servlet par défaut de "/" , alors vous devez prendre en charge toutes les responsabilités de la servlet par défaut du conteneur tel que servir des ressources statiques comme les fichiers CSS, ajouter des en-têtes de navigateur-cache, le soutien de téléchargement de fichier des résumés, etc. Voir également le premier lien ci-dessous pour plus de détails.

au moins il n'y a pas besoin d'abuser <welcome-file> pour cela. Cela ne représente pas le "fichier homepage" comme beaucoup de débutants semblent s'y attendre. Cela représente "le fichier par défaut du dossier à servir quand n'importe quel sous-dossier est demandé". Ainsi non seulement sur / , mais aussi sur /foo/ , /bar/ , etc.

voir aussi:

17
répondu BalusC 2017-05-23 12:10:11

chaque fois que vous définissez un <welcome-file>index.jsp</welcome-file> dans web.xml la page d'accueil, lorsque vous lancez l'application sera index.jsp page I. e par défaut, le chemin de servlet sera " / index.jsp" ( http://localhost:8084/index.jsp ). Cependant dans le navigateur qui ne s'affiche pas. Dans votre classe servlet, vous pouvez faire correspondre ce motif et le rediriger vers une autre page si nécessaire.

0
répondu Aditya C S 2016-06-03 21:26:29