Comment configurer la liste des fichiers de bienvenue dans web.XML

j'ai ceci dans ma toile.document xml. J'essaie d'avoir une liste de bienvenue donc je n'ai plus besoin de taper le chemin pour la page d'accueil. Mais chaque fois qu'un cliqué sur l'application dans ma page tomcat il affiche la ressource demandée n'est pas disponible.

<listener>
    <listener-class>web.Init</listener-class>
</listener>

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
    <servlet-name>index</servlet-name>
    <servlet-class>web.IndexServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>index</servlet-name>
    <url-pattern>/index</url-pattern>
</servlet-mapping>

mon servlet pour la page jsp

package web;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.log4j.Logger;

public class IndexServlet extends HttpServlet
{
    private Logger logger = Logger.getLogger(this.getClass());
    private RequestDispatcher jsp;

    public void init(ServletConfig config) throws ServletException
    {
        ServletContext context = config.getServletContext();
        jsp = context.getRequestDispatcher("/WEB-INF/jsp/index.jsp");
    }

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
    {
        logger.debug("doGet()");
        jsp.forward(req, resp); 
    }
}

Pourquoi est-ce que cela ne fonctionne toujours pas?J'ai encore besoin de taper le /index dans mon url...Comment faire cela correctement?

34
demandé sur BalusC 2013-02-01 18:11:57

4 réponses

vous devez mettre le fichier JSP dans /index.jsp au lieu de /WEB-INF/jsp/index.jsp . De cette façon, le servlet entier est superflous d'ailleurs.

WebContent
 |-- META-INF
 |-- WEB-INF
 |    `-- web.xml
 `-- index.jsp

si vous êtes absolument certain que vous devez invoquer un servlet de cette façon étrange, alors vous devriez le mapper sur un motif D'URL de /index.jsp au lieu de /index . Vous avez seulement besoin de le changer pour obtenir le régulateur de demande de request au lieu de config et se débarrasser de l'ensemble init() méthode.

dans le cas où vous avez réellement l'intention d'avoir un" servlet de page d'accueil "(et donc pas un fichier de bienvenue - qui a un but tout à fait différent; à savoir le fichier par défaut qui devrait être servi quand un dossier est demandé, qui n'est donc pas spécifiquement le dossier racine), alors vous devriez mapper le servlet sur le motif D'URL de chaîne vide.

<servlet-mapping>
    <servlet-name>index</servlet-name>
    <url-pattern></url-pattern>
</servlet-mapping>

Voir aussi Différence entre / et /* dans le servlet de cartographie de modèle d'url .

52
répondu BalusC 2017-05-23 12:34:50

je suppose que ce que vous voulez est votre servlet d'index pour agir comme la page d'accueil, alors passez à:

<welcome-file-list>
   <welcome-file>index</welcome-file>
</welcome-file-list>

pour que le servlet d'index soit utilisé. Notez que vous aurez besoin d'un conteneur servlet spec 2.4 Pour pouvoir faire cela.

Notez aussi, @BalusC obtient mon vote, car votre servlet d'index en lui-même est superflu.

21
répondu beny23 2013-02-01 14:22:02

j'ai vu une bonne solution dans ce stackoverflow link qui peut aider les lecteurs de la question de la gestion de servlet defulat en utilisant la chaîne de caractères vide URL pattern ":

@WebServlet("")

ou

<servlet-mapping>
    <servlet-name>yourHomeServlet</servlet-name>
    <url-pattern></url-pattern> <!-- Yes, empty string! -->
</servlet-mapping>
1
répondu mohamed sulibi 2017-05-23 12:26:33

est basé sur le fichier à partir duquel vous essayez d'accéder à ces fichiers.

si c'est dans le même dossier où se trouve votre fichier de projet, alors vous pouvez utiliser seulement le nom du fichier. pas besoin de chemin.

si elle est dans un autre dossier qui est sous le même dossier parent de votre dossier de projet de travail, alors vous pouvez utiliser l'emplacement comme dans le /javascript/exemple suivant.js

Dans votre exemple, si vous essayez d'accéder à votre fichier js à partir de votre fichier html, vous pouvez utiliser l'emplacement suivant

../javascript/échantillon.js

le préfixe../ aller au dossier parent du fichier(Dossier voyage ascendant)

-2
répondu orbit informatics 2015-10-06 09:30:02