Отправка переменной из jsp в сервлет при загрузке страницы

Я разрабатываю систему входящих сообщений, которая берет имя пользователя из сеанса страницы jsp и отправляет его сервлету, затем этот сервлет загружает таблицу входящих сообщений (из базы данных) на основе имени пользователя и возвращает его на ту же страницу jsp.

Я могу поместить кнопку отправки, чтобы отправить имя пользователя в сервлет, щелкнув ее, но как я могу автоматически передать ее со страницы jsp в сервлет, не создавая форму и кнопку отправки.


person NimazSheik    schedule 15.04.2015    source источник


Ответы (1)


вот где вам нужен ajax.

измените кнопку отправки на кнопку html и функцию onclick, выполните вызов ajax для своего сервлета и сделайте там все, а также передайте вывод в jsp через поток печати.

<input type="button" onClick="loadInbox();" value="inbox"/>

и ваша функция loadInbox() выполнит ajax:

function loadInbox(){
  $.ajax({
            type: "POST",
            data: { "userId": userId },
            url: 'YourServletName',
            dataType: 'json',  
            "success": function (data) {
                if (data != null) {
                    var vdata = JSON.parse(data);
                    console.log("output from server" + vdata);    
                },
            "error": function (data) {
                console.log("error "+ data);
            }
        });     

}

и в вашем классе сервлета (YourServletName) вы делаете свою логику и передаете вывод в поток печати:

void doPost(...... request, ... response){
 PrintWriter out = response.getWriter();

 // get the userId from request:
 String userId = request.getParameter("userId");

// do your logic stuff :
// get the output and print it to output stream:
  String yourOutput = "{ 'output': 'This is an example output'}";

  out.print(yourOutput);
  out.flush();
  out.close();
}

Это все, что вам нужно сделать. и out.println(yourOutput); передаст ответ вашей логики/результата методу «успех» вызова ajax, если он в порядке. проверьте свою веб-консоль в режиме разработчика, чтобы убедиться, что набор ответов от сервлета - это то, что вы получаете в виде строки/объекта json.

не забудьте добавить библиотеку jquery в свои библиотеки javascript!

Надеюсь, это поможет вам... Счастливый Аякс!

person Nomesh DeSilva    schedule 15.04.2015
comment
Спасибо за ваш ответ, но я хочу автоматически отправлять данные сервлету без кнопки form/html. Как это сделать? - person NimazSheik; 15.04.2015
comment
вы можете вызвать функцию setTimeOut или setInterval. и внутри этой функции вызовите ту же функцию ajax, которую я написал. - person Nomesh DeSilva; 15.04.2015
comment
для вызова функции должно произойти срабатывание события (например, нажатие кнопки, нажатие ссылки или после ввода значений в последнее поле ввода... и т. д.). так какое у вас событие или когда вы хотите вызвать функцию? - person Nomesh DeSilva; 15.04.2015
comment
Nomesh Я думаю, что сделал несколько ошибок, и я иду в неправильном направлении в этом проекте. Вместо того, чтобы вызывать jsp и затем отправлять его в сервлет, я должен вызвать сервлет, а затем отправить в jsp, источник: stackoverflow.com/questions/6637331/. В любом случае, большое спасибо, я посмотрю на ajax и узнаю о нем больше. - person NimazSheik; 16.04.2015
comment
Рад, что это помогает тебе, братан. Удачного кодирования! - person Nomesh DeSilva; 16.04.2015