java应用程序属性文件

ebdffaop  于 2021-06-30  发布在  Java
关注(0)|答案(4)|浏览(264)

我需要写一个独立的java应用程序,将有一个嵌入式http服务器。我需要调用应用程序在本地部署的html页面。html页面应该显示应用程序部署的*.properties文件中列出的属性。我应该能够改变属性值以及从html页面有没有办法做到这一点?
我明白了吗?

smtd7mpg

smtd7mpg1#

对。使用嵌入式码头。

ni65a41a

ni65a41a2#

1) 创建一个具有 doGet() 实现为使用读取属性文件 Properties#load() ,将其存储在请求范围中,使用 HttpServletRequest#setAttribute() ,使用将请求转发到jsp文件 RequestDispatcher#forward() . 最后,将这个servletMap到web.xml中的url模式,如 /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) 创建一个使用jstl的jsp文件 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) 添加 doPost() 方法创建的servlet,并编写从请求参数Map收集所有属性键值对并将其存储回文件的逻辑。

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

最后使用propertieseditorhttp://localhost/webapp/propertieseditor. 祝你好运。

qfe3c7zg

qfe3c7zg3#

您可以使用“commons configuration”来加载和保存属性。检查http://commons.apache.org/configuration/userguide/howto_properties.html#using_propertiesconfiguration 以及http://commons.apache.org/configuration/userguide/howto_properties.html#saving

cunj1qz1

cunj1qz14#

听起来您不确定的部分是如何读取属性文件。虽然我真的不认为你的问题是那么清楚,你需要帮助的部分。
一般来说,这很简单—您可以创建一个java.util.properties对象(使用默认构造函数),然后为您的属性文件获取一个inputstream(如果它确实在文件系统中,则使用fileinputstream;如果它在jar中,则使用classloader.getresourceasstream)。一旦你得到了这个,你就可以调用properties.load()来填充properties对象。
从那里你可以迭代这个对象,得到所有的键和值并打印出来。很明显,您需要使用诸如jsp之类的服务器端技术来实现这一点,而不是使用静态html。
至于嵌入式服务器,ramon认为jetty应该足以满足您的需要。

相关问题