PropertySet教程-2.Memory、map、XML方式

简介:

  inkfish原创,请勿商业性质转载,转载请注明来源(http://blog.csdn.net/inkfish )。

  PropertySet(来源:http://blog.csdn.net/inkfish) 是由opensymphony组织开发的的一个开源项目,但是那个项目文档少,长时间没有更新,官方文档错误奇多,所以现在在项目中使用并不广泛。但这并不妨碍PropertySet成为一个优秀的key-value持久化模块,当前,PropertySet可以说已经够用。这里我整理书写了PropertySet的文档。(来源:http://blog.csdn.net/inkfish)


  PropertySet最容易使用和上手的是memory方式,最常用的是xml、JDBC,另外Hibernate、EJB是较常用的方式。这里选择介绍memory、map、XML方式。(来源:http://blog.csdn.net/inkfish)

 

1.Demo

PropertySetDemo.java

import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.HashMap; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import com.opensymphony.module.propertyset.PropertySet; import com.opensymphony.module.propertyset.PropertySetManager; import com.opensymphony.module.propertyset.xml.XMLPropertySet; public class PropertySetDemo { public static void main(String[] args) throws Exception { PropertySetDemo demo = new PropertySetDemo(); demo.mapPsDemo(); demo.memoryPsDemo(); demo.xmlPsDemo(); } public void memoryPsDemo() { System.out.println(StringUtils.center("Memory PropertySet Demo", 80, '*')); //memory是配置文件中定义的:<propertyset name="memory" class="com.opensymphony.module.propertyset.memory.MemoryPropertySet"/> PropertySet ps = PropertySetManager.getInstance("memory", null); ps.setBoolean("BooleanPS", true); ps.setString("name", "Tom"); System.out.println(ps.getBoolean("BooleanPS")); System.out.println(ps.getString("name")); System.out.println(StringUtils.repeat("*", 80)); } public void mapPsDemo() { System.out.println(StringUtils.center("Map PropertySet Demo", 80, '*')); @SuppressWarnings("unchecked") HashMap map = new HashMap(); //memory是配置文件中定义的:<propertyset name="memory" class="com.opensymphony.module.propertyset.memory.MemoryPropertySet"/> PropertySet ps = PropertySetManager.getInstance("map", map); ps.setBoolean("BooleanPS", true); ps.setString("name", "Tom"); System.out.println(ps.getBoolean("BooleanPS")); System.out.println(ps.getString("name")); System.out.println(StringUtils.repeat("*", 80)); } public void xmlPsDemo() throws Exception { System.out.println(StringUtils.center("XML PropertySet Demo", 80, '*')); PropertySet ps = PropertySetManager.getInstance("xml", null); InputStream is = new FileInputStream("config.xml"); ((XMLPropertySet) ps).load(is); IOUtils.closeQuietly(is); System.out.println(ps.getBoolean("aa")); System.out.println(ps.getInt("ab")); System.out.println(ps.getLong("ac")); System.out.println(ps.getDouble("ad")); System.out.println(ps.getString("ae")); System.out.println(ps.getText("af").trim()); System.out.println(ps.getDate("ag")); System.out.println(ps.getProperties("ai")); ps.setBoolean("aa", false); ((XMLPropertySet) ps).save(new FileOutputStream("config.xml")); System.out.println(StringUtils.repeat("*", 80)); } }

 

config.xml (XML形式下使用):

<?xml version="1.0" ?> <property-set> <property key="aa" type="boolean">false</property> <property key="ab" type="int">123</property> <property key="ac" type="long">98765432109</property> <property key="ad" type="double">2.3</property> <property key="ae" type="string">abcde</property> <property key="af" type="text">fghijk</property> <property key="ag" type="date">2009-18-30 21:18:00</property> <property key="ai" type="properties"> <properties> <property key="passord" type="string">pwd</property> <property key="username" type="string">testuser</property> </properties> </property> </property-set>

 

需要jar包:(来源:http://blog.csdn.net/inkfish)

   1.propertyset-1.3.jar

   2.propertyset中自带的第三方jar包:oscore-2.2.1.jarcommons-logging-1.1.1.jar

   3.xml形式时需要使用的解析的包:xalan.jar

   4.其他demo程序用到的工具包:commons-lang-2.4.jarcommons-io-1.4.jar

 

2.memory方式 (来源:http://blog.csdn.net/inkfish)

  memory顾名思义,把数据存到内存里,刚开始内存里没有东西,程序退出也不会保存,适合于做demo性质的小项目。初始化使用简单的“PropertySet ps = PropertySetManager.getInstance("memory", null); ”即可,然后就可以set和get,注意刚实例化里面什么数据都没有,get不出来东西。(来源:http://blog.csdn.net/inkfish)

 

3.map方式 (来源:http://blog.csdn.net/inkfish)

  map和memory类似,也是使用内存存取数据,区别是map开始需要初始化一个map作为初始参数传入,初始化代码:(来源:http://blog.csdn.net/inkfish)

HashMap map = new HashMap(); PropertySet ps = PropertySetManager.getInstance("map", map);

  初始化过程的具体实现类是com.opensymphony.module.propertyset.map.MapPropertySet ,初始化过程:(来源:http://blog.csdn.net/inkfish)

public void init(Map config, Map args){ map = (Map)args.get("map"); if(map == null) map = new HashMap(); }

  可以看出PropertySetManager.getInstance("map", map); 传入的map里可以嵌套一个key为"map",值为map类型的Map ,如果传入的map是一个空的Map ,则初始化出一个HashMap 的示例,但千万不能传入null。初始化完毕后,就可以随便使用。(来源:http://blog.csdn.net/inkfish)

 

4.XML方式 (来源:http://blog.csdn.net/inkfish)

  XML方式的初始化,一定是需要一个XML属性文件,属性文件的格式见上面的config.xml ,里面支持的类型有booleanintlongdoubleStringtextDatePropertiesxml 、Object。xml和Object现在还没研究透,实验也没完全成功,放一边不说。Date类型的数据格式是yyyy-MM-dd HH:mm:ss ,写死在PropertySet里的。String和text几乎一样,都按照String处理,但是如果调用了save() 方法,text前后可能会加一些回车或空格,因此不建议使用text,如果需要使用,则在getText() 后需要trim() 一下。(来源:http://blog.csdn.net/inkfish)

目录
相关文章
|
8月前
|
XML 数据采集 数据挖掘
豆瓣内容抓取:使用R、httr和XML库的完整教程
本教程介绍如何使用R语言的httr和XML库抓取豆瓣电影数据。首先引入必要库,然后设置亿牛云爬虫代理服务器确保请求稳定。接着,请求并解析豆瓣主页内容,提取XML文档中的数据,如标题和链接。通过分类统计链接,统计内部和外部链接数量,展示如何进行数据挖掘。完整代码示例包括请求、解析、统计和输出结果。
103 4
豆瓣内容抓取:使用R、httr和XML库的完整教程
|
3月前
|
XML 存储 数据格式
|
8月前
Elasticsearch【问题记录 02】【不能以root运行es + max virtual memory areas vm.max_map_count [65530] is too low处理】
【4月更文挑战第12天】Elasticsearch【问题记录 02】【不能以root运行es + max virtual memory areas vm.max_map_count [65530] is too low处理】
75 3
|
8月前
|
前端开发
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
51 0
|
7月前
|
XML 存储 JavaScript
50. 【Android教程】xml 数据解析
50. 【Android教程】xml 数据解析
79 1
|
6月前
|
JavaScript 定位技术
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
455 0
|
7月前
|
XML Java 数据处理
JSP 教程 之 JSP XML 数据处理 3
在JSP中处理XML涉及使用XSLT转换。`main.jsp`演示了如何结合JSTL `&lt;c:import&gt;` 和 `&lt;x:transform&gt;` 标签将内联XML数据转换为HTML。`style.xsl`定义了一个模板,将`&lt;books&gt;`元素转换为表格,显示书名、作者和价格。当`main.jsp`运行时,它导入XSL样式表并应用到XML数据上,生成一个格式化的书籍列表。
42 0
|
7月前
|
XML Java 应用服务中间件
JSP 教程 之 JSP XML 数据处理 2
JSP教程演示了如何处理XML数据,涉及HTTP中的RSS文档。需在Tomcat的lib目录添加XercesImpl.jar和xalan.jar。示例中,`main.jsp`使用JSTL的 `&lt;c:import&gt;` 和 `&lt;x:parse&gt;` 标签导入并解析`books.xml`,显示书籍标题和价格。运行结果展示书名和第二本书的价格。
43 0
|
7月前
|
XML Java 数据处理
JSP 教程 之 JSP XML 数据处理 1
**JSP教程摘要: JSP处理XML** 在JSP中处理XML涉及设置`contentType`为`text/xml`以发送XML文档,如RSS。创建XML文档与HTML类似。
42 0
|
8月前
|
XML 存储 数据库
XML的使用教程
XML的使用教程