将数据从servlet java发送到jsp

将数据从servlet java发送到jsp,java,jsp,servlets,refresh,Java,Jsp,Servlets,Refresh,我正在用java做一个项目,在这个项目中我实现了一个聊天,只有当我收到无法打印网页的消息时,一切才能完美地工作。 在我的Servlet中,我有一个回调方法,当消息到达时调用,事实上,如果您在控制台中看到它们,但是如果您使用RequestDispatcher将它们发送到jsp,则无法让它们看到 我想知道是否有一个jsp页面在servlet中侦听回调方法的系统 显然,这个系统不应该不断地调用类,因为我有一些荒谬的东西 这样我就可以打印我收到的信息 这是我的代码,我把注释放在jsp页面中最终应该打印

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


}

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

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


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

无法清楚地了解您在寻找什么,请用一些代码更新您的问题,并可能逐步解释您正在尝试做什么以及您遇到的困难。Thanks我坚持认为,当servlet通过回调方法接收消息时,我不能在jsp页面中打印它们。这个解决方案的问题是它不是跨浏览器。根据Atmosphere支持的web服务器和浏览器站点,所有主要的web浏览器都受支持。对于旧的浏览器版本,您至少可以使用长轮询作为回退。但大气只是一个例子。还有其他几个Websocket框架。如果不直接支持WebSocket,它们中的大多数都支持某种回退机制。但是没有什么可以阻止您自己使用裸Websocket API。您可以从Javaservlet调用javascript函数。如果是这样的话,怎么办?servlet代码在服务器端运行,而JavaScript函数驻留在客户机(浏览器)上。因此servlet不能直接调用JavaScript函数。您可以将消息存储在服务器端,并在下次客户端发出请求时传递它们,或者您可以使用诸如WebSocket之类的推送技术直接向客户端发送消息(这可能会调用JavaScript函数)。但这超出了简单servlet的功能范围。