6
votes

Fichier de propriétés de charge dans Servlet / JSP

J'ai créé un jar de mon Java Project et voulait utiliser le même pot dans un projet de servlet JSP . J'essaie de charger un fichier de propriété, laissez SOIT SAMPLE.PROPERTES à partir de mon JSP Servlet Project conservé dans Web / Propriétés / Sample.Properties qui devrait être lu par une classe in Le JAR .
S'il vous plaît suggérer moi la solution.

Voici la structure xxx


5 Réponses :


6
votes

essayer de mettre des exemples.Properties sous src dossier, puis xxx


0 commentaires

1
votes

Essayez ceci,

Properties props = new Properties();
props.load(inStream);


3 commentaires

J'ai essayé cela, mais cela n'a pas fonctionné. Cela jette la même exception.


Ne doit-il pas être Web-Inf / Propriétés / Sample.Properties au lieu de /web-inf/properties/sample.properties ?


Ajoutez votre fichier de propriétés dans le fichier JAR d'où vous essayez d'accéder au fichier, c'est-à-dire. Projet qui est dans le fichier jar.or Placez l'échantillon.properties en C: / D: ou quelque part ailleurs et donnez un chemin complet, par exemple C: /Sample.properties.



2
votes

Déplacez vos fichiers de propriétés sous Web-Inf / Classes . Puis chargez-le comme suit:

prop.load (getclass (). GetResourceastream ("échantillon.properties"));

Vous pouvez le mettre en sous-répertoire sous classes aussi. Dans ce cas, changez l'appel à getresourceastream () en conséquence.

Pour être plus sûr dans le système multi-classier, vous pouvez utiliser thread.getContextClassloader (). getresourceastream () à la place.

Pour effectuer le fichier de propriétés pour arriver à classes de votre fichier de guerre, vous devez le mettre sous Ressources dans votre projet (si vous utilisez Maven) ou Just Sous SRC Dossier Si vous n'utilisez pas de structure de répertoire de type Maven.


1 commentaires

Je l'ai fait en utilisant introuvable instrumentstream = thread.currentThread (). GetContextClassloader (). GetResourceas flux ("../ Propertie S / DBDétails.Properti ES"); Prop.load (instruit)



21
votes

Le dossier / web-inf est pas partie de la classe de classe. Donc, toute réponse ici qui est irréfléchie suggérant Classloader # GetResourceastream () JAMAIS TRAVAIL. Il ne fonctionnerait que si le fichier de propriétés est placé dans / web-inf / classes qui fait effectivement une partie de la classe de classe (dans une ECLIPSE comme Eclipse, il suffit de la placer dans la racine de dossiers de la source Java devrait être suffisante. ).

À condition que le fichier de propriétés soit vraiment là où vous souhaitez le conserver, vous devriez l'obtenir en tant que ressource de contenu Web par servletContext # getresourceastream () à la place.

supposant que vous êtes à l'intérieur d'un httpservlet , cela devrait faire: xxx

(le getServletContext () < / code> est hérité de la superclasse de servlet, vous n'avez pas besoin de la mettre en oeuvre vous-même; de ​​sorte que le code est tel quel)

mais si la classe est en soi pas un HttpServlet du tout, vous devez alors déplacer le fichier de propriétés dans la classe de classe.

Voir aussi:


1 commentaires

Toutes les bonnes réponses - le défenseur du diable à travers; Si vous envisagez de stocker des informations sensibles dans ledit fichier de propriétés (E.G. Nom d'utilisateur / mot de passe / mot de passe / clé secrète, etc.), il ne faut probablement pas être dans votre base de code; Comme dans ce cas, il sera sous contrôle de version - ce qui est juste une autre façon pour les gens d'obtenir une prise de vos informations; Dans ce cas le stocke en dehors de votre racine de votre document



0
votes

Il peut ne pas fonctionner si vous essayez de charger les propriétés de JSP / servlet. Écrivez une classe d'utilitaire pour lire les propriétés et l'emballage avec le fichier JAR. Copiez le fichier de propriétés dans le même package qu'à l'utilitaire.

 Class Utility{
    Properties properties=null;
    public void load() throws IOException{
        properties.load(getClass().getResourceAsStream("sample.properties"));
    }
    public Object get(String key) throws IOException{
        if (properties==null){
            load();
        }
        return properties.get(key); 
    }
  }


0 commentaires