我做了一个查询系统。像在服务器上缓存查询过的数据。
我现在是这么做的。通过jsp调用javabean。大家看看是不是我的想法本身就是错误的。或者是我写的不对。请教解决方法。
search.jap->search.java->cache.java
___________________________
search.jsp<jsp:useBean id="dqCriteriaDO" scope="page" class="Bean.DQCriteriaDO"/>
<jsp:useBean id="enquiryBean" scope="application" class="Bean.DQEnquiryBean "/>
<jsp:setProperty name="dqCriteriaDO" property="name" param="Name"/>
NAME:<jsp:getProperty name="dqCriteriaDO" property="name"/><br>
<%=enquiryBean.SearchDQRecord(dqCriteriaDO)%><br>
____________________________
public class Cache
{
static Hashtable cache;
public CacheManager(){
}
static public void Add(Object Key,Object value){
cache.put(Key,value);
}

static public Object Get(Object Key){
return cache.get(Key);
}
}
____________________
search.javapublic class DQEnquiryBean implements Serializable
{
public DQEnquiryBean() {}
public String SearchDQRecord(DQCriteriaDO criteriaDO)
{
    //Get Result DQResultDO  by cache
DQResultDO resultDO = (DQResultDO)CacheManager.GetTest(conditionDO);

if(resultDO == null){
                                   //从数据库中取得数据
                                   //然后添加到缓存中
                                    CacheManager.Add(conditionDO,resultDO);
                           }
                        return resultDO; }
}

解决方案 »

  1.   

    debug一下,看看数据有没有存入进去
      

  2.   

    你检验一下,数据是不是没有存进去?
    按道理是不会的,
    除非你存进去的都是null
      

  3.   

    TO:masse(当午)
    当我把DQEnquiryBean的return resultDO;改成return CacheManager.Get();也可以返回刚才CacheManager.Add(conditionDO,resultDO);的数据。就是重新提交就没有了。