AJAX в Java

с 1997 г. браузеры поддерживают JavaScript.

JavaScript работает с Document Object Model и одной из возможностей является выполнение запросов на сервер и получение ответа без перезагрузки страницы.

JavaScript поддерживает ООП c прототипами, функциональное и процедурное.

Классов в js нету, объекты наследуются друг от друга и у каждого объекта есть указатель на его прототип и не которые интерпретаторы позволяет обращаться к прототипу напрямую через свойство __proto.

У других можно по другому: если при обращении к свойству его в объекте нет, то оно ищется у прототипа.

В js не стогое приведение типов, в java - строгое.

При объявлении переменные типов в js не имеют. Что присвоить - такой тип и будет. Что приводит к ошибкам.

Процедуры для взаимодействия браузера с сервером стандартны, поэтому существуют фреймворки типа jQuery. Мы рассмотрим же с самых основ при работе с объектом XMLHttpRequest

// получение объекта xmlHttpRequest: function getXmlHttpRequest { var xhr = null; if ( window.XMLHttpRequest ) { xhr = new XMLHttpRequest; }   else if ( window.ActiveXObject ) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); }    return xhr; }

function sendRequest (url, method, params) { if (!method) { method = "POST"; }       var xhr = xhr.open (method, url, true); xhr.setRequestHeader('Content-Type',contentType); xhr.onreadystatechange = callback;   // Это callback на изменение состояния запроса. xhr.send (null); }

// запрос в uninitialized, loading, loaded, interactive, complete (но, обычно, интересует последнее) if (xhr.readeState == 4) { // Обработка if (xhr.status == 200) { // все хорошо }    else { // ошибка }      }

Пример работы с ajax: var net=net Object; net.REAS_SATATE_UNIN...

net.ContentLoader = function (url, onload, onerror, method, params, contentType) { this.xhr = null; this.onload = onload; this.onerror = (inerror) ? onerror : this.defaultError; }

Все методы, начинающиеся с имя конструктора.prototype являются методами, которые будут унаследованы во вновь создаваемом объекте net.ContentLoader.prototype.loadXMLDoc = function (url, method, params, contentType) { ...   if (this.xhr) { ... onreadystatnechange = method;       // устанавливаем обработчик В обработчике }   }

пример наследования
var loader = new net.ContenLoader(parseResponce, errorProcess);

Так же можно определить обработчик по умолчанию.

В BookStore js используется для валидации поисковых данных.

Для передачи информации о том что и куда пользователь ввел, используется библиотека JSON. JSON.stringify (request) - преобразует объект JavaScritp в строку JSON JSON.parse(response) - Преобразует строку JSON в js объект

Содержимое файла validate.js: function avalidate (retFlag, formID, blockID, itemID, value) { if (formID != null) { ...       }     ...     var request = new Object; request['form'] = formID;           // это идентификатор формы, что описывали в DML request['block'] = blockID;       // идентификатор блока ...    var jsontext = JSON.stringify (request); var loader = new net.ContentLoacder( parseResponce, errorResponce); ...      }

Для обработки на сервере лучше не делать jsp-страницу, а достаточно сервлета.

В сервлете надо получить запрос, пройти по форме, найдя все блоки и вытащить элементы, провести валидацию и сгенерировать ответ. Ответ преобразуется в строку и отправляется в браузер.