Comment charger une .les propriétés de fichier dans une page jsp
J'ai été aussi loin que cela:
private Properties logoUrls = new Properties();
logoUrls.load(new FileInputStream("channelLogos.properties"));
où channelLogos.les propriétés dans le même répertoire que mon JSP. J'obtiens un fichier introuvable exception. Où est-ce que mon application fait penser que je veux dire par "channelLogos.propriétés", si ce n'est le même répertoire que la page JSP? Comment puis-je déterminer le chemin d'accès correct pour charger le fichier de propriétés?
OriginalL'auteur morgancodes | 2009-07-16
Vous devez vous connecter pour publier un commentaire.
Ce sera de faire le travail:
De toute façon je pense vraiment que vous devriez avoir le fichier de propriétés dans le classpath et d'utiliser une servlet
Oui, je sais, hehe... j'ai juste répondu à ce que vous avez demandé 😉
Pour info, il y a une demande.getResourceAsStream("...") qui vous permettra de gagner quelques lignes de code.
Ouais vous avez raison, j'ai édité
OriginalL'auteur victor hugo
J'aimerais très recommande de lire Modèle 2 Servlets. Je le recommande à tous ceux qui sont encore en train de faire le Modèle 1 Servlets, c'est faire de la "vrai travail" dans une JSP.
À votre question: tout d'Abord, jeter les propriétés de fichier dans votre classpath, puis lire le fichier à l'aide de getResourceAsSttream:
Il existe de nombreuses options, bien sûr, et chacun aura son favori.
+1 pour l'utilisation du classpath
Je suis totalement sur le conseil de briser mes propres règles de temps à autre. 😉
OriginalL'auteur Don Branson
Quand vous dites "même répertoire que JSP", que voulez-vous dire exactement par là? Que votre JSP se trouve quelque part dans, disons,
/mywebapp/somefolder/my.jsp
avecmywebapp
être la racine de votre application et de votre fichier de propriétés est/mywebapp/somefolder/channelLogos.properties
?Si oui, alors il est plus probable qu'ils ne sont PAS dans le même répertoire. JSP a été compilé et où il se trouve effectivement peut varier en fonction de conteneur de servlet. Votre meilleur pari est d'utiliser
ServletContext.getRealPath()
comme suggéré par pkaeding avec les propriétés du fichier chemin d'accès relatif à la webapp contexte comme un argument. En utilisant l'exemple ci-dessus:Cela dit, gardez à l'esprit que si vous insistez sur la mise de vos propriétés dans le même dossier que JSP, vous devez prendre soin de restreindre d'être accessible au public (sauf si c'est l'intention).
getServletConfig().getServletContext()
vous obtiendrez servletContext de l'intérieurjspInit
méthode. Cela dit, classpath approche est totalement mieux et MVC est encore mieux 🙂 je n'ai fourni cette réponse parce que vous avez insisté pour que vous voulez le faire en JSP seul.OriginalL'auteur ChssPly76
Prendre un coup d'oeil à ServletContext.getRealPath(). Cela devrait vous donner le chemin complet vers le fichier de propriétés.
OriginalL'auteur pkaeding
JSP s'exécute dans le conteneur de servlet, de sorte que son répertoire de travail actuel est défini par le conteneur. Généralement c'est le répertoire dans lequel le conteneur est installé ou de son répertoire bin. En tout cas, il n'est pas l'endroit où vous souhaitez stocker vos propriétés personnalisées fichier.
Il y a 2 approches typiques à faire ce que vous avez besoin.
La première démarche est la bonne, si votre fichier est une partie de votre application et vous ne jamais changer de déploiement. Dans ce cas, le lire à partir de ressources:
accessoires.charge(getClass().getResourceAsStream())
ou encore mieux
accessoires.charge(Thread.currentThread().getContextClassLoader().getResourceAsStream())
*
*. Dans ce cas, le mettre quelque part dans le système de fichiers à l'extérieur de votre conteneur. Par exemple /opt/mycompany/conf/myproperties.propriétés sur linux ou à tout autre endroit que vous aimez. Maintenant, vous devez utiliser le chemin absolu lors de la création de FileInputStream.
À rendre le système mieux configurable, vous ne devriez pas écrire le chemin d'accès au fichier de configuration à l'intérieur du code. Une meilleure approche est de passer à l'application en utilisant les propriétés du système, par exemple, ajouter un paramètre comme -Dmycompany.conf=/opt/mycompany/myprops.propriétés lorsque vous utilisez votre serveur d'applications. Si vous voulez lire le fichier, procédez de la manière suivante:
new FileInputStream(Système d'.getProperties("mycompany.conf"))
Maintenant la configuration de votre système est contrôlé indépendamment par deployer.
OriginalL'auteur VAYU