我需要編寫一個具有嵌入式HTTP服務器的獨立應用程序Java。我需要調用與應用程序本地部署的HTML頁面。 HTML頁面應顯示與應用程序一起部署的* .properties文件中列出的屬性。我應該可以從HTML頁面更改屬性值有沒有辦法做到這一點?Java應用程序屬性文件
我清楚嗎?
我需要編寫一個具有嵌入式HTTP服務器的獨立應用程序Java。我需要調用與應用程序本地部署的HTML頁面。 HTML頁面應顯示與應用程序一起部署的* .properties文件中列出的屬性。我應該可以從HTML頁面更改屬性值有沒有辦法做到這一點?Java應用程序屬性文件
我清楚嗎?
聽起來你不確定的部分是如何讀取屬性文件。雖然真的我不認爲你的問題是明確你想要什麼幫助的部分。
在一般這是簡單的 - 你可以創建一個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。祝你好運。
@Peter莫特森(RE:編輯) - 你真的認爲這是必要的鏈接到Java和HTML的定義在一個編程網站? – 2009-11-04 11:40:13