2009-11-04 4 views
3

Je dois écrire une application autonome Java qui aura un serveur HTTP intégré. Je dois appeler une page HTML déployée localement avec l'application. La page HTML doit afficher les propriétés répertoriées dans le fichier * .properties déployé avec l'application. Je devrais être en mesure de changer la valeur des propriétés ainsi de la page HTML Y at-il un moyen de le faire?Fichier de propriétés d'application Java

Suis-je clair?

+3

@Peter Mortensen (réf: modifications) - pensez-vous vraiment qu'il est nécessaire de lier les définitions de Java et HTML sur un site de programmation? –

Répondre

4

Oui. Utilisez le code Jetty intégré.

+0

+ 1 technologie très appropriée pour la tâche. –

3

Il semble que la partie dont vous n'êtes pas sûr est comment lire le fichier de propriétés. Bien que vraiment je ne pense pas que votre question est que clair à quelle partie vous voulez aider.

En général, il est simple - vous pouvez créer un objet java.util.Properties (avec le constructeur par défaut), puis mettre la main sur un InputStream pour votre fichier de propriétés (soit en utilisant FileInputStream si elle est vraiment sur le système de fichiers, ou ClassLoader.getResourceAsStream si c'est dans un JAR). Une fois que vous avez cela, vous pouvez simplement appeler Properties.load() pour remplir l'objet de propriétés. De là, vous pouvez itérer sur cet objet pour obtenir toutes les clés et les valeurs et les imprimer. Vous devez évidemment le faire avec une sorte de technologie côté serveur, telle que JSP, plutôt qu'avec du code HTML statique. En ce qui concerne le serveur embarqué, Ramon a raison de dire que Jetty devrait être plus que suffisant pour vos besoins.

2

1) Créer une classe de servlet qui a le doGet() mis en œuvre pour lire le fichier de propriétés en utilisant Properties#load(), stocke dans le cadre de la demande à l'aide HttpServletRequest#setAttribute(), transmet la demande à un fichier JSP en utilisant RequestDispatcher#forward(). Enfin mapper cette servlet dans web.xml sur un modèle d'URL comme /propertieseditor.

Properties properties = new Properties(); 
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("file.properties")); 
request.setAttribute("properties", properties); 
request.getRequestDispatcher("propertieseditor.jsp").forward(request, response); 

2) Créer un fichier JSP qui utilise JSTL c:forEach pour itérer sur les propriétés paires clé-valeur, la génération d'un élément HTML input type="text" à chaque fois.

<form action="propertieseditor" method="post"> 
    <c:forEach items="${properties}" var="property"> 
     ${property.key} <input type="text" name="${property.key}" value="${property.value}"><br> 
    </c:forEach> 
    <input type="submit"> 
</form> 

3) Ajouter une méthode doPost() au servlet comme créée en 1) et d'écriture logique qui rassemble toutes les paires propriété clé-valeur de la carte des paramètres de demande et le stocke en arrière dans le fichier.

Properties properties = new Properties(); 
Map<String, Object> parameterMap = request.getParameterMap(); 
for (Entry<String, Object> entry : parameterMap.entrySet()) { 
    properties.setProperty(entry.getKey(), entry.getValue()); 
} 
properties.store(new FileOutputStream(new File(
    Thread.currentThread().getContextClassLoader().getResource("file.properties").toURI()))); 
response.sendRedirect("propertieseditor.jsp"); 

Enfin, utilisez la propertieseditor par http://localhost/webapp/propertieseditor. Bonne chance.

Questions connexes