Как получить обновленные данные, используя тот же Httpservice в Flex - PullRequest
0 голосов
/ 28 января 2010

У меня есть гибкая форма, в которой есть два 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();
                }

}

}

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

Защищенный 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 голосов
/ 28 января 2010

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

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

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

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

Data data = (Data) request.getSession().getAttribute();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...