0

我正在用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");
    }


}
4

1 回答 1

0

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

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

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

于 2013-05-31T12:44:23.133 回答