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

时间:2010-01-28 12:14:34

标签: hibernate servlets flex3

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

  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

protected 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();

1 个答案:

答案 0 :(得分:0)

我不确定如何解释“将数据存储到另一个servlet ”。听起来你在谈论将数据分配为servlet实例的实例变量。您永远不应该以任何方式将任何请求或会话范围的数据存储在servlet中。您应分别使用HttpServletRequest#setAttribute()HttpSession#setAttribute()。这是因为在整个应用程序生命周期中使用了同一个servlet实例,它已在所有请求和会话之间共享。那样,访问者X就会看到访问者Y的数据,你真的不想拥有它。

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

request.getSession().setAttribute("data", data);

您可以通过以下方式在同一会话中的任何后续请求中访问它:

Data data = (Data) request.getSession().getAttribute();