Браузер, за допомогою JavaScript, обробляє отриману відповідь і модифікує сторінку без перезавантаження за допомогою DHTML.
Переваги цього механізму доступу — сторінка модифікується без повного перезавантаження, збільшується швидкість роботи з Web-програмою, зменшується трафік між сервером та клієнтом, метод роботи користувача з web-програмою є зручним.
Недоліки методу:
важкість у розробці та налагодженні через використання мови сценаріїв JavaScript, що має специфічне застосування тому вона мало пристосована до розробки багатих web-програм.
зміст сторінок, згенерованих за допомогою Ajax, не індексується пошуковими системами і сторінку не можна зберегти за допомогою браузера збережеться лише початкова сторінка та сценарії JavaScript.
на сторінку, згенеровану за допомогою Ajax, не можна поставити пряме посилання — при модифікації сторінка не змінює адреси.
Для подолання вказаних недоліків потрібно:
Обмежети використання мови сценаріїв JavaScript і використати технологію Java Апплетів. Повністю відмовитись від використання JavaScript не можна (це єдиний спосіб динамічної зміни сторінки, що, хоч і з недоліками, але функціонує в більшості сучасних браузерів) але якщо перенести більшу частину функціональних можливостей з сценарію JavaScript до Java Апплету і використовувати JavaScript лише для зв’язку HTML сторінки з Апплетом то складність розробки та налагодження такої системи буде на порядок нижча.
Створювати окремі статичні сторінки, що матимуть той самий вміст, що і динамічні сторінки, але їх зможуть прочитати та обробити пошукові системи а також переглянути ті користувачі, що використовують застарілі браузери або браузери із відключеними або заблокованими додатковими можливостями (JavaScript, Java, Flash і т.п.). Також ці статичні сторінки користувач може зберегти на свій комп’ютер для перегляду оффлайн або редагування за допомогою HTML-редакторів.
Створити спеціальний елемент користувацького інтерфейсу — «посилання на цю сторінку», що міститиме спеціально сформоване посилання, перейшовши за яким відкривається сторінка з таким самим вмістом, як і згенерована динамічно. Це потребує модифікації серверної частини (в більшості випадків ця модифікація є незначною), але подолання цього недоліку є дуже важливим для комфортної роботи з Web-сторіками, що побудовані динамічно.
Другий та третій пункти вже доволі широко використовується на сайтах, побудованих за допомогою концепції Web 2.0.
Спосіб, вказаний в першому пункті ще мало вивчений, тому майже не зустрічається на сайтах. Реалізація цього способу призведе до створення базового набору засобів, за допомогою якого розробники web-програм зможуть більш ефективно та з меншими витратами часу створювати web-програми, що матимуть багаті можливості та звичний для користувачів інтерфейс.
3.6 Альтернативна взаємодія у Web за допомогою Java Апплетів
Цей метод схожий на попередній, лише замість JavaScript-об’єкта XMLHttpRequest об’єкта використовується Java Апплет.
HTML
сторінка
Java
Applet
PHP
скрипт
Ця заміна на перший погляд може здатися незначною — JavaScript (за допомогою об’єкту XMLHttpRequest) та Java Апплет мають схожі можливості для створення запитів, передачі їх на сервер та обробки отриманої відповіді. Але Java Апплет має набагато ширші можливості для обробки отриманої інформації.
Також перевагою Апплетів над сценаріями JavaScript є їх значно вища швидкодія та значно менші проблеми з розробкою та налагодженням — для Java існують досить потужні інтегровані середовища розробки та налагодження. Вони містять можливості, які відсутні в програмах для розробки сценарії JavaScript (які в більшості є простими текстовими редакторами з підсвіткою синтаксису та мінімальними функціональними можливостями) :
· вбудований налагоджувач;
· інструменти для рефакторингу (повного або часткового перетворення внутрішньої структури програми при збереженні її зовнішньої поведінки);
· проектування UML діаграм (графічний опис для об’єктного моделювання в сфері розробки програмного забезпечення);
· система керування версіями (програмне забезпечення для полегшення роботи з інформацією, що часто змінюється, основне застосування — слідкування за розробкою програм)
· колекція шаблонів коду та бібліотек, що дозволяють позбавитися рутинних операція при розробці Апплетів.
Для практичної реалізації цього методу взаємодії був розроблений базовий набір засобів (Framework). За допомогою нього була створена демонстраційна програма, що ілюструє основні можливості та переваги. За допомогою цієї web-програми було проаналізовано переваги та недоліки базового набору засобів.
Демонстраційна web-програма складається з таких елементів:
Java Апплет (AJavaX.class)
HTML сторінка (AJavaX.html)
PHP скрипт (AJavaX.php)
3.6.1 Java Апплет
Виконує роль зв’язкової ланки між сервером та сторінкою. Коли користувач активізує елементи керування користувацього інтерфейсу, за допомогою JavaScript викликаються відповідні функції Апплету, які генерують запит і відправляють його на сервер. Сервер відправляє відповідь Апплету, який оброблює його і за допомогою JavaScript команд модифікує сторінку без перезавантаження.
Java Апплет може обмінюватись даними лише з тим сервером, з якого він був завантажений. Але якщо створити відповідну серверну програму (за допомогою Java Server Pages або Servlets) то можливе з’єднання з будь-яким іншим сервером. Таким чином у Web-програмі можна використовувати Web-служби від інших розробників.
Для виклику функція Апплету з HTML-сторінки використовуються JavaScript-об’єкт document.applets[“AJavaX”], який автоматично створюється після завантаження Апплету з ім’ям AJavaX. Це працює в будь-якому браузерів, на відміну від JavaScript-об’єкта XMLHttpRequest
Для модифікації сторінки в Апплеті використовується клас JSObject з пакету netscape.javascript, який реалізує спосіб виклику методів JavaScript та перевірку властивостей JavaScript.
Якщо об’єкт JavaScript передається в Java, віртуальна машина створює Java-оболонку типу JSObject, коли JSObject передається в JavaScript, віртуальна машина знімає оболонку і розгортає об’єкт в об’єкт оригінального типу JavaScript.
Будь-які дані JavaScript, перенесені в Java, конвертуються в типи даних Java. Коли JSObject передається назад в JavaScript, оболонка з об’єкта знімається і він може використовуватись в коді JavaScript.
Перетворення типів від Java до JavaScript:
Java типи byte, char, short, int, long, float та double перетворюютьсявчисла JavaScript
Java тип boolean перетворюєтьсяв boolean JavaScript
Java тип JSObject перетворюєтьсяувідповіднийоб’єкт JavaScript
Інші Java об’єкти перетворюються у об’єкти-надбудови JavaScript для доступу до полів та методів. Java-об’єкти можуть бути перетворені в рядок (викликається метод toString), число (метод floatValue), логічний тип (метод booleanValue) та псевдо-масиви JavaScript (які поводять себе так само, як і JavaScript масиви — як індекс використовується цілі числа, але вони влаштовані по іншому)
Перетворення типів від JavaScript до Java:
Об’єкти-надбудови для Java об’єктів перетворюються в об’єкти Java
Решта об’єктів перетворюється в JSObject
Рядки, числа і логічний тип перетворюється в Java об’єкти String, Float та Boolean
При ініціалізації Апплету створюється екземпляр об’єкта JSObjectwin, що є об’єктом-надбудовою до JavaScript об’єкту вікна браузера, та визначається адреса сторінки сервера, з якою буде відбуватися взаємодія.
При виклику функція sendабоget Апплету передається параметри — текст, що набраний у вікні редагування та пароль для шифрування/дешифрування тексту.
За допомогою методу libSendRequest формується запит, відправляється на сервер та отримується відповідь.
Отримані дані можна модифікувати чи оброблювати — тут можливості Java майже необмежені. Наприклад можна реалізувати криптостійке шифрування на клієнті і передавати на сервер дані в зашифрованому вигляді.
Для модифікації сторінки викликається метод libReturnValue, який дозволяє динамічно модифікувати вміст сторінки, виконавши спеціальний JavaScript код. Таким чином відбувається модифікація сторінки за допомогою конструкції:
win.eval("document.getElementById('"+id+"').innerHTML='"+value+"'")
Змінна id містить ідентифікатор обє’кту HTML, куди буде вставлений HTML код, що міститься в змінній value.
При потребі JavaScript для динамічної модифікації сторінки можна суттєво розширити, використавши вже існуючі напрацювання в технології Ajax, лише найважчі операції будуть виконуватися Java Апплетом.
3.6.2 HTML сторінка
HTML сторінка є основою інтерфейсу користувача. Сторінка містить прихований JavaApplet (він має розміри 0х0 пікселів але він завантажується та нормально функціонує) та код JavaScipt, що викликає функції з Апплету при активізації користувачем елементів керування.
Аплет підключається до сторінки за допомогою конструкції:
<applet code="AJavaX.class" name="AJavaX" width="0" height="0" mayscript="mayscript">
</applet>
що містить такі атрибути:
code — назва файлу, що містить аплет
name — ім’я аплету, використовується для виклику функцій апплету через об’єкт document.applets["AJavaX"].
width та height — ширина та висота апплету, в даному випадку вони мають значення нуль тобто апплет не відображається на сторінці (хоча він повністю завантажується і функціонує)
mayscript — цей атрибут потрібний, щоб Апплет міг виконувати функції JavaScript і динамічно модифікувати сторінку.
При використанні об’єкту XMLHttpRequest сторінка містила б додатковий код для ініціалізації цього об’єкту та роботу з ним (приклад такого коду показаний в розділі 1.3.). Але для функціонування Апплету він не потрібний — Апплет містить всі функціональні можливості, потрібні для асинхронного зв’язку з сервером та обробки отриманих даних.
3.6.3 PHP скрипт
Серверна частина системи, що отримує запити, виконує необхідні дії (запис/читання з бази, створення/видалення файлів і т.п.) та повертає відповідь клієнту. PHP скрипт використаний лише для демонстрації можливостей базового набору засобів, в реальних web-програмах серверна частина може бути реалізована за допомогою будь-якої технології (Python, Rubi, Perl, SSI, ASP, JSP та подібних)