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!