Question

Dans mon servlet, j'aimerais accéder à la racine du contexte afin de pouvoir effectuer une réduction JavaScript.

Il serait possible de faire la réduction dans le cadre du processus d'installation mais j'aimerais le faire au démarrage du servlet pour réduire le coût de mise en œuvre.

Quelqu'un connaît-il une méthode pour obtenir le répertoire contextuel afin de pouvoir charger et écrire des fichiers sur le disque ?

Était-ce utile?

La solution

Cela devrait vous donner le véritable chemin que vous pouvez utiliser pour extraire/éditer des fichiers.

Lien Javadoc

Nous faisons quelque chose de similaire dans un écouteur de contexte.

public class MyServlet extends HttpServlet {

    public void init(final ServletConfig config) {
        final String context = config.getServletContext().getRealPath("/");
        ...
    }

    ...
}

Autres conseils

Dans mon servlet, j'aimerais accéder à la racine du contexte afin de pouvoir minifier JavaScript.

Vous pouvez également accéder aux fichiers du WebContent en ServletContext#getResource().Donc si votre fichier JS se trouve par exemple à WebContent/js/file.js alors vous pouvez utiliser ce qui suit dans votre Servlet pour obtenir un File gérer celui-ci :

File file = new File(getServletContext().getResource("/js/file.js").getFile());

ou pour obtenir un InputStream:

InputStream input = getServletContext().getResourceAsStream("/js/file.js");

Cela dit, à quelle fréquence devez-vous réduire les fichiers JS ?Je n'ai jamais vu la nécessité d'une réduction basée sur les requêtes, cela ne ferait qu'ajouter inutilement beaucoup de frais généraux.Vous souhaiterez probablement le faire une seule fois au démarrage de l'application.Si c'est le cas, alors en utilisant un Servlet car c'est une mauvaise idée.Meilleure utilisation ServletContextListener et fais ton truc contextInitialized().

Je cherchais le résultat sur Google et je n'arrivais nulle part.Dans les pages JSP qui doivent utiliser Java Script pour accéder au courant chemincontexte c'est en fait assez simple.

Mettez simplement les lignes suivantes dans votre tête HTML à l'intérieur d'un script bloc.

// set up a global java script variable to access the context path
var contextPath = "${request.contextPath}" 

Tu veux dire:

public class MyServlet extends HttpServlet {

    public void init(final ServletConfig config) {
        final String context = config.getServletContext();
        ...
    }

    ...
}

Ou quelque chose de plus complexe ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top