将数据从servlet java发送到jsp

时间:2013-05-31 11:50:59

标签: java jsp servlets refresh

我正在用Java实现一个项目,我实现了一个聊天,只有当我收到无法打印网页的消息时,一切都很完美。 在我的Servlet中,我有一个在消息到达时调用的回调方法,实际上如果你看到它们在控制台中存在,但是如果你使用RequestDispatcher将它们发送到jsp,则无法让它们看到。

我想知道jsp页面是否有一个系统监听servlet中的回调方法?

显然,这个系统不应该经常调用我有类似荒谬的课程。

这样我就可以打印收到的邮件了。


这是我的代码我把评论放在哪里我应该打印最终在jsp页面中找到,或者通过传递参数post或get来做重定向

     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


    String strJid = (String) request.getParameter("jid");
    String strMessage = (String) request.getParameter("textMessage");


    Connection connection = (Connection)getServletContext().getAttribute("classConnection");

    ChatManager chatManager = connection.getChatManager();
    Chat newChat = chatManager.createChat(strJid, new MessageListener(){


        @Override
        public void processMessage(Chat chat, Message message){

     //from here I have to print the message.getBody () in jsp page,
    //how can I do? I'm happy also reload the page and pass as a parameter to get or post

        }
    });

    try{
        newChat.sendMessage(strMessage);
    }
    catch(XMPPException e){
        System.out.println("Errore invio messaggio");
    }


}

1 个答案:

答案 0 :(得分:0)

在servlet中实现回调方法以接收聊天消息是错误的方法。对于浏览器请求,将调用一次servlet,创建HTML页面并将其发送回浏览器。之后,servlet和网页之间没有这种连接。

在传统的Web编程中,浏览器和服务器之间的所有通信都由客户端启动。服务器无法向客户端发送消息。变通办法是长轮询请求。

但是现在你可以使用Websockets。有几个框架支持客户端和服务器端的Websockets。其中一个是Atmosphere。他们的tutorial是聊天应用程序。