Как мне использовать Ajax для подключения к сервлетам Java? - PullRequest
1 голос
/ 03 апреля 2011

Я разрабатываю клиент для чата с использованием Java.Мне удалось подключиться к gtalk, а также к чату, используя SMACK API.Теперь мне нужно сделать то же самое с сервлетами jsp и ajax.

Я мог бы выполнить аутентификацию и получить список друзей только с jsp и сервлетами.Но я должен использовать Ajax для чата (чтобы страница не обновлялась).

для отправки и получения сообщений. Я использую классы API в Java.Код ниже:

public void sendMessage(String message, String to) throws XMPPException
{
Chat chat = connection.getChatManager().createChat(to, this);
chat.sendMessage(message);
}

public void processMessage(Chat chat, Message message)
{
if(message.getType() == Message.Type.chat)
System.out.println(chat.getParticipant() + " says: " + message.getBody());
}

Теперь, как мне сделать то же самое в Ajax?Могу ли я использовать методы API вместе с ajax?Или использовать их в сервлетах и ​​получить ответ от сервлетов с помощью ajax и заполнить сообщения на странице?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2011

Посмотрите на DWR

0 голосов
/ 03 апреля 2011

Вам нужно сделать запрос XML Http к сервлету, для чего вам нужно сделать объект XML Http в javascript на вашей странице HTML / JSP

var myxmlhttpobj=new GetXmlHttpObject();
function GetXmlHttpObject()
    {
        if (window.XMLHttpRequest)
        {
            // code for IE7+, Firefox, Chrome, Opera, Safari
            return new XMLHttpRequest();
        }
        if (window.ActiveXObject)
        {
            // code for IE6, IE5
            return new ActiveXObject("Microsoft.XMLHTTP");
        }
        return null;
    }

Теперь вам нужно сделать запроссервлет из javascript

var url="urlofServlet";
var para="parmeter1=value1&parameter2=valu2;
myxmlhttpobj.open("POST",url,true);
myxmlhttpobj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
myxmlhttpobj.setRequestHeader("Content-length", para.length);
myxmlhttpobj.setRequestHeader("Connection", "close");
myxmlhttpobj.onreadystatechange=ajaxComplete;
myxmlhttpobj.send(para);

На сервере вам нужно обработать результат и отправить его обратно в виде строки:

PrintWriter out=response.getWriter();

///Process the input

Write the out put

out.println(outputAsString);

Когда запрос вернется, myxmlhttpobj.onreadystatechange=ajaxComplete; будетназывается

function ajaxComplete(){


    if(myxmlhttpobj.readyState==4){

      ///Display the result on the HTML/JSP Page 

    }
}

Это должно помочь ...

Также взгляните на jQuery Ajax API .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...