Java应用程序属性文件

时间:2009-11-04 10:37:20

标签: java

我需要编写一个独立的Java应用程序,它将具有嵌入式HTTP服务器。我需要使用应用程序调用本地部署的HTML页面。 HTML页面应显示随应用程序部署的* .properties文件中列出的属性。我应该能够从HTML页面更改属性值有没有办法做到这一点?

我清楚了吗?

4 个答案:

答案 0 :(得分:5)

是。使用嵌入式Jetty

答案 1 :(得分:3)

听起来你不确定的部分是如何阅读属性文件。虽然我认为你的问题 并不清楚你想要帮助的部分。

general 中它很简单 - 您可以创建一个java.util.Properties对象(使用默认构造函数),然后获取属性文件的InputStream(使用FileInputStream,如果它真的在文件系统,如果它在JAR中,则为ClassLoader.getResourceAsStream。一旦你有了这个,你就可以调用Properties.load()来填充属性对象。

从那里你可以迭代这个对象来获取所有的键和值并打印出来。您显然需要使用某种服务器端技术(如JSP)而不是静态HTML。

对于嵌入式服务器,Ramon是正确的,Jetty应该足以满足您的需求。

答案 2 :(得分:2)

1)创建一个servlet类,其实现doGet()以使用Properties#load()读取属性文件,使用HttpServletRequest#setAttribute()将其存储在请求范围中,将请求转发到JSP文件使用RequestDispatcher#forward()。最后在web.xml中将此servlet映射到类似/propertieseditor的URL模式。

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

2)创建一个JSP文件,该文件使用JSTL c:forEach迭代属性键值对,每次都生成一个HTML input type="text"元素。

<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)向1)中创建的servlet添加doPost()方法,并编写逻辑,从请求参数映射中收集所有属性键值对,并将其存储回文件中。

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");

最后通过http://localhost/webapp/propertieseditor使用财产主义者。祝你好运。

答案 3 :(得分:0)