как получить обновленные данные, используя тот же Httpservice во флексе

У меня есть гибкая форма, в которой есть два httpservice.one, которые получают доступ к данным из сервлета, и один, который хранит данные в другом сервлете. Во-первых, когда я получаю доступ к данным из сервлета, который работает, и часть хранения также работает ... поэтому, когда я снова вызываю сервлет доступа, я не получаю обновленный дисплей ... сервлет доступа не вызывается снова .. Это мой доступ к коду сервлета

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

}

}

это мой сервлет дисплея

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

person Gaurav    schedule 28.01.2010    source источник
comment
Пожалуйста, не используйте табуляцию для отступа кода. Используйте 4 или 2 пробела. Это можно настроить в любом приличном редакторе / IDE.   -  person BalusC    schedule 28.01.2010


Ответы (1)


Я не уверен, как мне интерпретировать «который хранит данные в другом сервлете». Похоже, вы говорите о назначении данных как переменной экземпляра экземпляра сервлета. Вы никогда не должны хранить в сервлете данные из области запроса или сеанса таким образом. Для этого следует использовать HttpServletRequest#setAttribute() и HttpSession#setAttribute() соответственно. Это из-за того, что один и тот же экземпляр сервлета использовался в течение всего времени существования приложения, он распределяется между всеми запросами и сеансами. Таким образом, посетитель X будет видеть данные посетителя Y, а вы действительно этого не хотите.

В этом конкретном случае вы хотите разделить данные между несколькими запросами внутри одного и того же сеанса (я предполагаю, что Flex достаточно умен, чтобы использовать тот же сеанс, что и родительская страница JSP / HTML) . Затем просто сохраните его в сеансе следующим образом:

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

вы можете получить к нему доступ в любых последующих запросах в том же сеансе следующим образом:

Data data = (Data) request.getSession().getAttribute();
person BalusC    schedule 28.01.2010
comment
Эй, код выше - это код добавления. где я храню значения в базе данных ... я получил еще один код сервлета, который принимает значения из базы данных, и гибкий графический интерфейс отображает его. это также рабочие ... но в следующий раз, когда я добавлю еще 1 значение в базу данных а затем отобразить с использованием того же сервлета .. этот сервлет не вызывается .. мне нужна причина, по которой он не запускается снова - person Gaurav; 28.01.2010