键值对储存在properties中
对于以下的情况:
- 数据量不是很大
- 键值对应的关系
如果同时满足这两种结论,我们将数据保存在数据库表中是没有什么意义的。如果遇到这种情况,我们需要用到properties属性文件中。然后在服务器启动的时候进行解析,然后放入全局作用域对象中。
注意:在ideal中,对于中文是很不友好的,因此,我们在储存的时候,要注意储存中文时候,存储的是他的编码。
在创建好属性文件后,在监听器进行读取,代码如下:
Map<String,String> pMap=new HashMap<>();
ResourceBundle rb=ResourceBundle.getBundle("properties文件名,注意不加后缀");
//切记切记,不要加后缀名
//枚举类型:
Enumeration<String> e=rb.getKeys();
while (e.hasMoreElements()){
String key=e.nextElement();
//迭代器遍历器是最快的,所以,迭代器还是很需要的。尽量使用迭代器
//可能性
String value=rb.getString(key);
pMap.put(key,value);
}
//将pMap保存到缓存中
application.setAttribute("pMap",pMap);
在js代码中取得键值对的代码:
<%
Map<String,String> pMap= (Map<String, String>) application.getAttribute("pMap");
Set<String> set=pMap.keySet();
%>
我们已经有了键值对的对应关系,在服务器的缓存中呢,但是那个是java的代码,我们需要在js中使用,怎么办?我们首先将pMap转换为js的键值对关系。js中的键值对关系,只有一种,那就是json,将pMap转换为json对象,代码如下:
var json={
<%
for (String key:set){
String value=pMap.get(key);
%>
"<%=key%>" :<%=value%>,
<%
}
%>
};
以上代码是在js中的。注意,最后一个对应关系结束后,那个,是不是在代码中必须去掉?其实是不需要的,json会自己去掉的。
我们是用json.key的形式不能取得value,因为当key对应的stage是一个可变的变量,如果是这,就不能以传统的json.key取值,我们需要的取值方式是json[key]。