Hibernate 如何在flex中使用相同的Httpservice获取更新数据

Hibernate 如何在flex中使用相同的Httpservice获取更新数据,hibernate,servlets,flex3,Hibernate,Servlets,Flex3,我有一个flex表单,它有两个httpservice。一个从servlet访问数据,另一个将数据存储到另一个servlet中。 首先,当我从正在工作的servlet访问数据时,存储部分也在工作。因此,当我再次调用access servlet时,我没有得到更新的显示。access servlet没有再次被调用。。 这是我的accessservlet代码 public void doPost(HttpServletRequest request,HttpServletResponse respo

我有一个flex表单,它有两个httpservice。一个从servlet访问数据,另一个将数据存储到另一个servlet中。 首先,当我从正在工作的servlet访问数据时,存储部分也在工作。因此,当我再次调用access servlet时,我没有得到更新的显示。access servlet没有再次被调用。。 这是我的accessservlet代码

  public void doPost(HttpServletRequest request,HttpServletResponse response) 
              throws ServletException,IOException 
{ 
PrintWriter out=response.getWriter();

        try
                {
                    response.setContentType("text/html"); 
                    String gradeName=request.getParameter("tx1");
                    System.out.println(gradeName);    
                    gradeName=gradeName.toUpperCase();
                    Session session = HibernateUtil.getSessionFactory().openSession();

                    Transaction tx = session.beginTransaction();
                    Grade g=new Grade(gradeName);
                        session.save(g);
                        tx.commit();

                        session.close();
                        //HibernateUtil.shutdown();
                        out.println("Added Successfully");

                }
                catch(ConstraintViolationException e)
                {
                    out.println("Grade is already Present");
                }   
                catch(Exception e)
                {
                    e.printStackTrace();
                }

}
}

这是我的显示servlet

受保护的void doGet(HttpServletRequest请求,HttpServletResponse响应)抛出ServletException,IOException{

    Session session = HibernateUtil.getSessionFactory().openSession();
    Transaction tx=session.beginTransaction();
    Query q=session.createQuery("from Grade");
    List l=q.list();

    Grade t;
    PrintWriter out=response.getWriter();
    response.setContentType("text/xml");
    String str="<?xml version=\"1.0\" encoding=\"utf-8\"?><top>";

    for(int i=0;i<l.size();i++)
    {
        t=(Grade)l.get(i);
        str+="<inside><id>"+t.getGradeId()+"</id>";
        str+="<name>"+t.getGradeName()+"</name></inside>";
    }
    str+="</top>";
    out.println(str);
    System.out.println("yattaa->"+str);
    tx.commit();
    session.close();
    HibernateUtil.shutdown();
会话会话=HibernateUtil.getSessionFactory().openSession(); 事务tx=会话.beginTransaction(); Query q=session.createQuery(“从等级”); List l=q.List(); t级; PrintWriter out=response.getWriter(); setContentType(“text/xml”); 字符串str=“”;
对于(int i=0;i我不确定如何解释“哪个将数据存储到另一个servlet中”。听起来像是要将数据分配为servlet实例的实例变量。您不应该以这种方式在servlet中存储任何请求或会话范围的数据。您应该使用
HttpServletRequest#setAttribute()
HttpSession#setAttribute()
分别用于此目的。这是因为在整个应用程序生命周期中使用了一个相同的servlet实例,它在所有请求和会话中共享。这样一来,访问者X将看到访问者Y的数据,而您真的不希望这样

在这种特殊情况下,您希望在同一会话中的多个请求之间共享数据(我假设Flex足够聪明,可以使用与父JSP/HTML页面使用的相同会话)。然后按照以下方式将其存储在会话中:

request.getSession().setAttribute("data", data);
Data data = (Data) request.getSession().getAttribute();
您可以通过以下方式在同一会话中的任何后续请求中访问它:

request.getSession().setAttribute("data", data);
Data data = (Data) request.getSession().getAttribute();

请不要使用制表符缩进代码。使用4或2个空格。这可以在任何合适的编辑器/IDE中配置。嘿,上面的代码是添加代码。我在数据库中存储值的地方…我又得到了一个servlet代码,它从数据库中获取值,flex GUI显示它。这也是有效的代码…但下次我再添加1个值时,我会返回数据库,然后使用相同的servlet显示..未调用此servlet..我想知道它为何不再调用