2008-09-11 10 views
6

Dans ma servlet, je souhaite accéder à la racine du contexte afin de pouvoir effectuer une minimisation de JavaScript.Accès au chemin contextuel Tomcat à partir du servlet

Il serait possible de faire la minify dans le cadre du processus d'installation, mais je voudrais le faire au démarrage de Servlet pour réduire les coûts d'implémentation.

Est-ce que quelqu'un connaît une méthode pour obtenir le répertoire de contexte afin que je puisse charger et écrire des fichiers sur le disque?

Répondre

13

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

Javadoc Link

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

    ... 
} 
+0

Brillant! Exactement ce que j'étais après. Je pense que c'est ce que tirait dans sa réponse. Merci les gars. La qualité du contenu sur ce site continue de m'impressionner. –

-1

Voulez-vous dire:

public class MyServlet extends HttpServlet { 

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

    ... 
} 

Ou quelque chose de plus complexe?

+0

Cela pourrait être le bon chemin, mais je ne pense pas que cela m'amène tout le chemin. Je dois toujours pouvoir ouvrir les fichiers qui se trouvent dans le répertoire contextuel. –

0

Je numérisais le résultat et n'obtenais aucun résultat. Dans les pages JSP qui ont besoin d'utiliser Java Script pour accéder à l'actuel contextPath, il est en fait assez facile. Il suffit de mettre les lignes suivantes dans votre tête html à l'intérieur d'un bloc script.

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

Dans mon Servlet Je voudrais accéder à la racine du contexte afin que je puisse faire un peu de JavaScript minifying

Vous pouvez également accéder aux fichiers du WebContent par ServletContext#getResource(). Donc, si votre fichier JS est par exemple situé à WebContent/js/file.js vous pouvez ensuite utiliser ce qui suit dans votre Servlet pour obtenir une poignée File de 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 avez-vous besoin de réduire les fichiers JS? Je n'ai jamais vu la nécessité d'une minification basée sur les demandes, cela ne ferait qu'ajouter inutilement beaucoup de frais généraux. Vous voulez probablement le faire une seule fois au démarrage de l'application. Si oui, l'utilisation d'un Servlet pour cela est une mauvaise idée. Mieux utiliser ServletContextListener et faites votre chose sur contextInitialized().

Questions connexes