web-dev-qa-db-fra.com

comment utiliser le fichier de propriétés dans jsp

Dupliquer possible:
Comment charger un fichier .properties dans un jsp

J'essaie d'utiliser mon fichier de propriétés dans JSP mais cela ne fonctionnera pas correctement et génère une erreur. 

Error: myproperties.properties (The system cannot find the file specified)

Ici, j'essaie d'accéder à mon dossier de propriété:

<%
try
{
    FileInputStream fis = new FileInputStream("myproperties.properties");

    Properties p = new Properties();
    p.load(fis);
    String LogFileName = p.getProperty("NameOfLogFile");
    out.println(LogFileName);

}
catch (Exception e)
{// Catch exception if any
    out.println(e.getMessage());
}

J'ai essayé de nombreuses manières d'accéder au fichier de propriété. Comment puis-je réparer ça?

18
KhAn SaAb

créer un fichier test.properties dans votre package

pname=xyz
psurname=abc

créer un fichier jsp:

<%@ page language="Java" import="Java.util.*" %> 
<%@ page import = "Java.util.ResourceBundle" %>
<% ResourceBundle resource = ResourceBundle.getBundle("test");
  String name=resource.getString("pname");
  String surname=resource.getString("psurname"); %>
  <%=name %>
 <%=surname%>
31
user1697238

JSP s'exécute dans un conteneur de servlets, son répertoire de travail actuel est donc défini par le conteneur. Il s'agit généralement du répertoire dans lequel le conteneur est installé ou de son répertoire bin. Dans tous les cas, ce n'est pas l'endroit où vous souhaitez stocker votre fichier de propriétés personnalisé.

Il existe 2 approches typiques pour faire ce dont vous avez besoin.

La première approche est bonne si votre fichier fait partie de votre application et que vous ne le modifiez jamais lors du déploiement. Dans ce cas, lisez-le à partir des ressources:

props.load(getClass().getResourceAsStream())

ou même mieux

props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream())

La deuxième approche est utile si vous souhaitez modifier votre fichier de propriétés dans un environnement de déploiement. Dans ce cas, placez-le quelque part dans le système de fichiers en dehors de votre conteneur. Par exemple, /opt/mycompany/conf/myproperties.properties sur Linux ou à n’importe quel autre endroit de votre choix. Vous devez maintenant utiliser le chemin absolu lors de la création de FileInputStream.

Pour que le système soit mieux configurable, vous ne devez pas écrire le chemin du fichier de configuration dans le code. Une meilleure approche consiste à transmettre l’application à l’aide des propriétés du système, par exemple. ajoutez un paramètre tel que -Dmycompany.conf=/opt/mycompany/myprops.properties lorsque vous exécutez votre serveur d'applications. Lorsque vous souhaitez lire le fichier, procédez comme suit:

new FileInputStream(System.getProperties("mycompany.conf"))

Maintenant, la configuration de votre système peut être contrôlée indépendamment par le déployeur.

5
AlexR

Essayez de changer FileInputStream fis = new FileInputStream("myproperties.properties"); en FileInputStream fis = new FileInputStream(new File("myproperties.properties"));

Assurez-vous également que les classes que vous utilisez ont déjà été importées dans votre fichier jsp .

<%@ page import="Java.io.FileInputStream" %>
<%@ page import="Java.io.File" %>
0