J'ai obtenu aussi loin que ceci:
private Properties logoUrls = new Properties(); logoUrls.load(new FileInputStream("channelLogos.properties"));
6 Réponses :
Jetez un coup d'oeil à
C'est bon à savoir. Merci! Utilisation de cette technique, cela me montre que mon chemin est apparemment correct avec mon fichier de propriétés, mais je reçois toujours un fichier pas à la foud exception. Des idées?
J'aimerais Haut Strong> Recommander Lecture sur modèle 2 servlets . Je le recommande à tous ceux qui font toujours des servlets de modèle 1, c'est-à-dire de «travaux réels» dans un JSP. sur votre question: lancez d'abord le fichier de propriétés dans votre catégorie de classe, puis lisez le fichier à l'aide de GetResourceAststream: < / p> Il existe de nombreuses options, bien sûr, et tout le monde aura son favori. p> p>
Je suis totalement à bord avec les choses qui ne font pas de vraies choses dans une règle du JSP, mais je le brise dans l'affaire.
@MorgancoDes: Je suis totalement à bord d'avoir enfreint mes propres règles de temps en temps. ;)
Ceci fera le travail:
<%@page import="java.io.InputStream" %> <%@page import="java.util.Properties" %> <% InputStream stream = application.getResourceAsStream("/some.properties"); Properties props = new Properties(); props.load(stream); %>
Oui, ce serait la bonne façon de le faire. Je fais cervablement cela le rapide, moche, sale, mauvais sens.
Oui je sais, hehe ... je viens de répondre à ce que vous avez demandé;)
FYI, il y a une application.getsourceastream ("...") qui vous fera économiser quelques lignes de code.
Lorsque vous dites "le même répertoire que JSP", qu'entendez-vous exactement par là? Que votre JSP se trouve quelque part dans, disons, Si oui, alors probablement ils ne sont pas dans le même répertoire. JSP a été compilé et où il est réellement situé peut varier en fonction du conteneur de servlet. Votre meilleur pari est d'utiliser qui dit, gardez à l'esprit que si vous insistez pour mettre vos propriétés dans le même dossier que JSP, vous devez vous soucier de le limiter d'être publiquement accessible (sauf si c'est l'intention). P> p> /mywebapp/somefolder/my.jsp code> avec
MyWebApp CODE> Être votre racine de l'application et votre fichier de propriétés est
/ MyWebApp / ONFDeFolder / cannellogos.properties code>?
servleContext.geterrealpath () code> comme suggéré par PKKAINGÉRACTION STRAND> avec un chemin de fichier de propriétés par rapport au contexte de WebApp en tant qu'argument. En utilisant l'exemple ci-dessus: p>
Merci. Cela marche. Cependant, je prévoyais de faire tout cela à l'intérieur de JSPINIT, qui n'a pas facilement accès au servletContext. Peut-être qu'une approche de classe de classe est vraiment meilleure.
getServletConfig (). getServletContext () code> obtiendra votre servletContext à partir de
jspinit code> méthode. Cela dit, l'approche de classePath est totalement meilleure et MVC est meilleur encore :-) Je n'ai fourni que cette réponse car vous avez insisté pour que vous souhaitiez le faire dans JSP.
JSP fonctionne dans le conteneur de servlet, son répertoire de travail actuel est donc défini par le conteneur. Typiquement, c'est le répertoire dans lequel le conteneur est installé ou son répertoire bin. En tout cas, ce n'est pas l'endroit où vous souhaitez stocker votre fichier de propriétés personnalisé. P>
Il y a 2 approches typiques pour faire ce dont vous avez besoin. P>
La première approche est bonne si votre fichier fait partie de votre application et que vous ne le modifiez jamais sur le déploiement. Dans ce cas, lisez-le des ressources: p>
ou même mieux p>
accesssifs.load (fil.currentThread (). GetContextClassloader (). GetResourceastream ()) strong> p>
* p>
La deuxième approche est bonne si vous souhaitez modifier votre fichier de propriétés
Sur l'environnement de déploiement p>
blockQuote>
*. Dans ce cas, mettez-le quelque part dans le système de fichiers en dehors de votre conteneur. Par exemple, /opt/mycompany/conf/myproperties.properties sur Linux ou à tout autre endroit que vous aimez. Maintenant, vous devez utiliser un chemin absolu lors de la création de fichiersInputStream. P>
Pour rendre le système mieux configurable, vous ne devez pas écrire le chemin d'accès au fichier de configuration à l'intérieur du code. Une meilleure approche consiste à le transmettre à l'application à l'aide des propriétés du système, par exemple. Ajouter un paramètre comme -dmycompany.conf = / opt / myCompany / myProps.properties Lorsque vous exécutez votre serveur d'applications. Lorsque vous souhaitez lire le fichier, procédez comme suit: p>
Nouveau fichierInputtream (System.GetProperties ("MyCompany.conf")) P>
La configuration de votre système peut maintenant contrôler indépendamment par le déployeur. P>
Dans le fichier de propriétés, les propriétés sont répertoriées comme ci-dessous:
'<s:text name="label.esme.interface.dependenciesDelete" />'
associé Stackoverflow.com/questions/ 3920088 / ...