我需要写一个独立的java应用程序,将有一个嵌入式http服务器。我需要调用应用程序在本地部署的html页面。html页面应该显示应用程序部署的*.properties文件中列出的属性。我应该能够改变属性值以及从html页面有没有办法做到这一点?我明白了吗?
smtd7mpg1#
对。使用嵌入式码头。
ni65a41a2#
1) 创建一个具有 doGet() 实现为使用读取属性文件 Properties#load() ,将其存储在请求范围中,使用 HttpServletRequest#setAttribute() ,使用将请求转发到jsp文件 RequestDispatcher#forward() . 最后,将这个servletMap到web.xml中的url模式,如 /propertieseditor .
doGet()
Properties#load()
HttpServletRequest#setAttribute()
RequestDispatcher#forward()
/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" 每次都是元素。
c:forEach
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收集所有属性键值对并将其存储回文件的逻辑。
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");
最后使用propertieseditorhttp://localhost/webapp/propertieseditor. 祝你好运。
qfe3c7zg3#
您可以使用“commons configuration”来加载和保存属性。检查http://commons.apache.org/configuration/userguide/howto_properties.html#using_propertiesconfiguration 以及http://commons.apache.org/configuration/userguide/howto_properties.html#saving
cunj1qz14#
听起来您不确定的部分是如何读取属性文件。虽然我真的不认为你的问题是那么清楚,你需要帮助的部分。一般来说,这很简单—您可以创建一个java.util.properties对象(使用默认构造函数),然后为您的属性文件获取一个inputstream(如果它确实在文件系统中,则使用fileinputstream;如果它在jar中,则使用classloader.getresourceasstream)。一旦你得到了这个,你就可以调用properties.load()来填充properties对象。从那里你可以迭代这个对象,得到所有的键和值并打印出来。很明显,您需要使用诸如jsp之类的服务器端技术来实现这一点,而不是使用静态html。至于嵌入式服务器,ramon认为jetty应该足以满足您的需要。
4条答案
按热度按时间smtd7mpg1#
对。使用嵌入式码头。
ni65a41a2#
1) 创建一个具有
doGet()
实现为使用读取属性文件Properties#load()
,将其存储在请求范围中,使用HttpServletRequest#setAttribute()
,使用将请求转发到jsp文件RequestDispatcher#forward()
. 最后,将这个servletMap到web.xml中的url模式,如/propertieseditor
.2) 创建一个使用jstl的jsp文件
c:forEach
迭代属性键值对,生成一个htmlinput type="text"
每次都是元素。3) 添加
doPost()
方法创建的servlet,并编写从请求参数Map收集所有属性键值对并将其存储回文件的逻辑。最后使用propertieseditorhttp://localhost/webapp/propertieseditor. 祝你好运。
qfe3c7zg3#
您可以使用“commons configuration”来加载和保存属性。检查http://commons.apache.org/configuration/userguide/howto_properties.html#using_propertiesconfiguration 以及http://commons.apache.org/configuration/userguide/howto_properties.html#saving
cunj1qz14#
听起来您不确定的部分是如何读取属性文件。虽然我真的不认为你的问题是那么清楚,你需要帮助的部分。
一般来说,这很简单—您可以创建一个java.util.properties对象(使用默认构造函数),然后为您的属性文件获取一个inputstream(如果它确实在文件系统中,则使用fileinputstream;如果它在jar中,则使用classloader.getresourceasstream)。一旦你得到了这个,你就可以调用properties.load()来填充properties对象。
从那里你可以迭代这个对象,得到所有的键和值并打印出来。很明显,您需要使用诸如jsp之类的服务器端技术来实现这一点,而不是使用静态html。
至于嵌入式服务器,ramon认为jetty应该足以满足您的需要。