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

Posted

技术标签:

【中文标题】如何在 flex 中使用相同的 Httpservice 获取更新的数据【英文标题】:how to get Updated data using same Httpservice in flex 【发布时间】:2011-01-10 09:28:51 【问题描述】:

我有一个弹性表单,它有两个 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 request, HttpServletResponse response) throws 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();

【问题讨论】:

请不要使用制表符来缩进代码。使用 4 或 2 个空格。这可以在任何体面的编辑器/IDE 中进行配置。 【参考方案1】:

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

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

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

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

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

【讨论】:

嘿上面的代码是添加代码。我在数据库中存储值的位置...我又得到了一个 servlet 代码,它从数据库中获取值,flex GUI 显示它。这也是工作的...但是下次当我向数据库中添加 1 个值时然后使用相同的 servlet 显示..这个 servlet 没有被调用..我想知道它没有再次调用的原因

以上是关于如何在 flex 中使用相同的 Httpservice 获取更新的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 flexbox 使 flex 容器的子 div 具有相同的间距? [复制]

如何使用flexbox进行两列布局,并在列中的项目之间使用相同的间距? [重复]

使用 .d-flex 和 .flex-fill 使卡片具有相同的高度[重复]

Flexbox布局:如何在多行中设置每个项目相同的宽度? [复制]

如何创建在 Flex 和 Flash 中可用的超类?

Flex - 如何在一个组件中定义另一个组件的功能?