Maison > Java > javaDidacticiel > Que fait `ServletContext.getRealPath('/')` et pourquoi devrais-je éviter de l'utiliser dans les applications Java EE modernes ?

Que fait `ServletContext.getRealPath('/')` et pourquoi devrais-je éviter de l'utiliser dans les applications Java EE modernes ?

Patricia Arquette
Libérer: 2024-12-22 13:11:10
original
704 Les gens l'ont consulté

What does `ServletContext.getRealPath(

Que signifie servletcontext.getRealPath("/") et quand dois-je l'utiliser ?

Introduction

Dans une application de servlet Java, le La méthode ServletContext#getRealPath() est utilisée pour convertir un chemin de contenu Web relatif en chemin absolu du système de fichiers sur disque. Le chemin spécifié peut être un fichier ou un répertoire dans le contenu Web. Cependant, cette méthode doit être utilisée avec prudence et est généralement déconseillée dans le développement Java EE moderne.

Utilisation de getRealPath("/")

Le / in getRealPath("/") représente la racine du répertoire de contenu Web. Il s'agit du chemin absolu du système de fichiers vers le répertoire contenant le fichier web.xml de l'application Web. Par exemple, dans la structure de projet suivante :

YourWebProject/
    src/
    :
    web/
        META-INF/
        WEB-INF/
        index.jsp
        login.jsp
        :
Copier après la connexion

Si vous exécutez getRealPath("/"), cela renverra le chemin du système de fichiers vers le répertoire Web, tel que /path/to/server/work /folder/some.war/web.

Attention et Limitations

Bien que getRealPath() puisse être utile dans certaines situations, il présente plusieurs limitations et est généralement déconseillé pour les raisons suivantes :

  • Les écritures ne sont pas persistant : Les modifications apportées aux fichiers écrits à l'aide de getRealPath() seront perdues lors du redéploiement du WAR file.
  • Dépendance de l'extension : La fiabilité de getRealPath() dépend de la configuration du serveur pour l'extension des fichiers WAR. Si le WAR n'est pas étendu au système de fichiers du disque, getRealPath() peut renvoyer des chemins incorrects ou nuls.
  • Aucun cas d'utilisation portable : Il existe généralement des alternatives plus portables et plus fiables à l'utilisation de getRealPath ().

Alternatives à getRealPath()

Au lieu d'utiliser getRealPath(), envisagez ces alternatives :

  • Utilisez ServletContext#getResourceAsStream() pour obtenir un InputStream pour une ressource sur le Web. content.
  • Utilisez ServletContext#getResourcePaths() pour récupérer une liste des chemins de ressources disponibles.
  • Utilisez ServletContext#getResource() pour obtenir l'URL d'une ressource.
  • Pour le téléchargement de fichiers ou la création de fichiers temporaires, reportez-vous aux liens « Voir aussi » ci-dessous.

Voir aussi

  • [getResourceAsStream() vs FileInputStream](https://stackoverflow.com/questions/4212943/resource-as-inputstream-in-java-best-practice)
  • [Méthode recommandée pour enregistrer les fichiers téléchargés dans un servlet application](https://stackoverflow.com/questions/5797716/recommended-way-to-save-uploaded-files-in-a-servlet-application)
  • [Des moyens simples de conserver les données sur le redéploiement de Java EE 7 Web application](https://stackoverflow.com/questions/11736935/simple-ways-to-keep-data-on-redeployment-of-java-ee-7-web-application)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal