“掌握了缓存机制,标志程序员进入中高级阶段。”---banq
首先创建一个缓存类,具体依赖你的程序。然后在JSP中把这个缓存类声明为scope="application"的Bean,它只创建一次,存在于application对象中,事实在它是ServletContext对象,对应用中的所有JSP文件都可见。
缓存类的实现可以参考Jive论坛(也就是Yazd)中的util包,下面是一个假想的博客文章缓存实现的大概思路,并不是可运行代码。
public class Cache{
// Article 是文章类,String是它的id,通过id来查找文章
// java.util.HashMap, 你可以用其它合适的素数来替代103
protected HashMap<String, Article> cachedObjectsHash =
new HashMap<String, Article>(103);
// 根据访问计数来维护的链表,保存了Article的id。最先移除的Article是表尾的对象
protected LinkedList<String> accessedList = new LinkedList<String>;
// HashMap的最大体积(文章数)
protected int maxSize = 1024;
// 把Article的id加入到倒数第2位,也可以加入到表头
public void add(Object key, Article article){
if(!cachedObjectsHash.contains(article)){
cachedObjectsHash.add(article.getId()+"", article);
if(cachedObjectsHash.size() > maxSize){
cachedObjectsHash.remove(accessedList.getLast());
accessedList.removeLast();
}
accessedList.addFirst(article.getId()+"");
}
}
public Article get(Object key){
// 如果在链表中找到,位置前移
// 返回
// 否则查找数据库,并cacheObjectsHash.add()
}
}