Heim >Java >javaLernprogramm >Was macht „ServletContext.getRealPath('/')` und warum sollte ich die Verwendung in modernen Java EE-Anwendungen vermeiden?

Was macht „ServletContext.getRealPath('/')` und warum sollte ich die Verwendung in modernen Java EE-Anwendungen vermeiden?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-22 13:11:10658Durchsuche

What does `ServletContext.getRealPath(

Was bedeutet servletcontext.getRealPath("/") und wann sollte ich es verwenden?

Einführung

In einer Java-Servlet-Anwendung ist die Die Methode ServletContext#getRealPath() wird verwendet, um einen relativen Webinhaltspfad in einen absoluten Dateisystempfad auf der Festplatte zu konvertieren. Der angegebene Pfad kann entweder eine Datei oder ein Verzeichnis innerhalb des Webinhalts sein. Diese Methode sollte jedoch mit Vorsicht verwendet werden und wird in der modernen Java EE-Entwicklung generell nicht empfohlen.

Verwendung von getRealPath("/")

The / in getRealPath("/") stellt das Stammverzeichnis des Webinhaltsverzeichnisses dar. Es handelt sich um den absoluten Dateisystempfad zu dem Verzeichnis, das die web.xml-Datei der Webanwendung enthält. Beispielsweise in der folgenden Projektstruktur:

YourWebProject/
    src/
    :
    web/
        META-INF/
        WEB-INF/
        index.jsp
        login.jsp
        :

Wenn Sie getRealPath("/") ausführen, wird der Dateisystempfad zum Webverzeichnis zurückgegeben, z. B. /path/to/server/work /folder/some.war/web.

Vorsicht und Einschränkungen

While getRealPath() kann in bestimmten Situationen nützlich sein, hat mehrere Einschränkungen und wird im Allgemeinen aus folgenden Gründen nicht empfohlen:

  • Schreibvorgänge sind nicht dauerhaft:Änderungen an Dateien, die mit getRealPath geschrieben wurden () geht bei der erneuten Bereitstellung der WAR-Datei verloren.
  • Erweiterungsabhängigkeit: Die Die Zuverlässigkeit von getRealPath() hängt von der Serverkonfiguration zum Erweitern von WAR-Dateien ab. Wenn die WAR-Datei nicht auf das Festplattendateisystem erweitert wird, gibt getRealPath() möglicherweise falsche oder Nullpfade zurück.
  • Keine portablen Anwendungsfälle: Normalerweise gibt es portablere und zuverlässigere Alternativen zur Verwendung von getRealPath ().

Alternativen zu getRealPath()

Anstatt getRealPath() zu verwenden, sollten Sie diese Alternativen in Betracht ziehen:

  • Verwenden Sie ServletContext#getResourceAsStream(), um einen InputStream für eine Ressource im Web abzurufen Inhalt.
  • Verwenden Sie ServletContext#getResourcePaths(), um eine Liste abzurufen der verfügbaren Ressourcenpfade.
  • Verwenden Sie ServletContext#getResource(), um eine URL für eine Ressource zu erhalten.
  • Informationen zum Hochladen von Dateien oder zum Erstellen temporärer Dateien finden Sie unter den Links „Siehe auch“ unten.

Siehe auch

  • [getResourceAsStream() vs FileInputStream](https://stackoverflow.com/questions/4212943/resource-as-inputstream-in-java-best-practice)
  • [Empfohlener Weg zu Hochgeladene Dateien in einem Servlet speichern Anwendung](https://stackoverflow.com/questions/5797716/recommended-way-to-save-uploaded-files-in-a-servlet-application)
  • [Einfache Möglichkeiten, Daten bei der erneuten Bereitstellung von zu speichern Java EE 7-Web Anwendung](https://stackoverflow.com/questions/11736935/simple-ways-to-keep-data-on-redeployment-of-java-ee-7-web-application)

Das obige ist der detaillierte Inhalt vonWas macht „ServletContext.getRealPath('/')` und warum sollte ich die Verwendung in modernen Java EE-Anwendungen vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn