日期:2014-05-17  浏览次数:20733 次

servlet查询mysql的article表中所有记录的个数时出现诡异问题!!求大神帮助
mysql数据库article表中存的是文章对象,方法 list  get(String hql, int page,int span)返回第page页的内容(每页显示span个文章),该方法属于DBUtil类。现在我的servlet类中有一DBUtil对象util,在servlet中调用util的get()方法:第一次,我的article表中只有一条记录a,那么返回的list中只有一个对象a;然后我手动(直接操作mysql数据库,不通过java代码)向article中插入一条数据b,然后再在servlet中调用util的get()方法,返回的list中还是只有一条数据a啊!!!
更诡异的是,我在DBUtil类中写了个测试main函数,然后执行上述操作,返回的确实正确的!
public void doPost(HttpServletRequest req, HttpServletResponse res)throws IOException,ServletException
{
   DBUtil util=new DBUtil();
   List list;
   String hql="from Article";
   list = util.get(hql,1,8);      //返回第一页文章,每页显示8个
   //问题就在这,调用util的get方法返回的总是修改之前的数据!感觉好像根本没查数据库一样。。
   req.setAttribute("goodslist",list);                            
   ServletContext sc = getServletContext();
   RequestDispatcher rd = sc.getRequestDispatcher(url);
   rd.forward(req,res);
}
public class DBUtil {
      
public static SessionFactory sf;
static 
{
Configuration config=new Configuration();
config.configure();
sf=config.buildSessionFactory();
}
public static SessionFactory getSessionFactory()
{
return sf;
}
       public List<Object> get(String hql,int page,int span)//返回某一页的内容 .
{
List<Object> temp=new ArrayList<Object>();   
Session sess=null;
sess=sf.openSession();
Query query=sess.createQuery(hql);
List<Object> list=query.list();
int size=list.size();
 
int i=0;
while(i<span && (span*(page-1)+i)<size)
{
temp.add(list.get(span*(page-1)+i));
i++;
}
sess.close();
return temp;
}
}
DBUtil的get方法我写测试是正确的,但是通过servlet调用就出现上面诡异的问题了额。。。。。
MySQL Servlet 数据库