2008-09-11 14 views
6

In meinem Servlet möchte ich auf den Stamm des Kontexts zugreifen, so dass ich einige JavaScript-Verkleinerung tun kann.Zugriff auf Tomcat Kontextpfad von Servlet

Es wäre möglich, die Minify als Teil des Installationsprozesses zu tun, aber ich würde es gerne beim Servlet-Start tun, um die Implementierungskosten zu reduzieren.

Kennt jemand eine Methode zum Abrufen des Kontextverzeichnisses, damit ich Dateien auf die Festplatte laden und schreiben kann?

Antwort

13

Dies sollte Ihnen den echten Pfad geben, den Sie zum Extrahieren/Bearbeiten von Dateien verwenden können.

Javadoc Link

Wir sind etwas Ähnliches in einem Kontext Zuhörer zu tun.

public class MyServlet extends HttpServlet { 

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

    ... 
} 
+0

Brilliant! Genau das, was ich wollte. Ich vermute, das ist, was wrumsby in seiner Antwort geschossen hat. Danke Jungs. Die Qualität der Inhalte auf dieser Seite beeindruckt mich weiterhin. –

-1

Meinen Sie:

public class MyServlet extends HttpServlet { 

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

    ... 
} 

Oder etwas komplexer?

+0

Dies könnte der richtige Weg sein, aber ich denke nicht, dass es mich den ganzen Weg dorthin bringt. Ich muss noch in der Lage sein, Dateien zu öffnen, die sich im Kontextverzeichnis befinden. –

0

Ich googelte das Ergebnis und bekam nirgendwo hin. In JSP-Seiten, die Java Script verwenden müssen, um auf den aktuellen ContextPath zuzugreifen, ist es eigentlich ziemlich einfach.

Setzen Sie einfach die folgenden Zeilen in Ihren html Kopf in einem script Block.

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

In meinem Servlet so möchte ich die Wurzel des Kontextes zuzugreifen, dass ich einige JavaScript

Sie auch die Dateien im WebContent von ServletContext#getResource() zugreifen können minifying tun können. Also, wenn Ihr JS-Datei zum Beispiel auf WebContent/js/file.js befinden, dann können Sie die folgenden in Ihrem Servlet verwenden, um einen File Griff um es zu bekommen:

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

oder InputStream zu bekommen:

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

Das heißt , wie oft müssen Sie JS-Dateien minimieren? Ich habe noch nie die Notwendigkeit einer anforderungsbasierten Minimierung gesehen, es würde nur unnötig zusätzlichen Aufwand verursachen. Wahrscheinlich möchten Sie dies nur einmal während des Starts der Anwendung tun. Wenn ja, dann ist die Verwendung einer Servlet dafür eine schlechte Idee. Bessere Verwendung ServletContextListener und tun Sie Ihr Ding auf contextInitialized().

Verwandte Themen