Java应用程序属性文件

问题描述:

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

我清楚吗?

+3

@Peter莫特森(RE:编辑) - 你真的认为这是必要的链接到Java和HTML的定义在一个编程网站? – 2009-11-04 11:40:13

是的。使用嵌入式Jetty

+0

+1非常适合该任务的技术。 – 2009-11-04 11:38:55

听起来你不确定的部分是如何读取属性文件。虽然真的我不认为你的问题明确你想要什么帮助的部分。

一般这是简单的 - 你可以创建一个java.util.Properties对象(默认构造函数),然后让你的特性的InputStream的保持文件(使用的FileInputStream如果它真的在文件系统中,或如果它在JAR中,则为ClassLoader.getResourceAsStream)。一旦你有了这个,那么你可以调用Properties.load()来填充属性对象。

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

对于嵌入式服务器,拉蒙是正确的码头应该是绰绰有余了您的需求。

1)创建,其具有实现为读出的属性的文件doGet()使用Properties#load()一个servlet类,在使用HttpServletRequest#setAttribute()请求范围其存储,将请求转发到使用RequestDispatcher#forward() JSP文件。最后,将这个servlet映射到web.xml中的url-pattern,如/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 c:forEach遍历的属性键 - 值对,产生一HTML input type="text"元素每次一个JSP文件。

<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如1中创建)和写收集所有属性键 - 值对从所述要求参数映射图,并将其存储回该文件中的逻辑。

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最后使用propertieseditor。祝你好运。