Ajax для Java розробників: Частина 1. Будуємо динамічні додатки на мові Java

  1. Серія контенту:
  2. Цей контент є частиною серії: Ajax для Java розробників
  3. Покращений он-лайн магазин
  4. Лістинг 1. Важливі фрагменти прикладу кошика покупця
  5. Малюнок 1. Огляд Ajax
  6. відправлення XMLHttpRequest
  7. Лістинг 2. Створення XMLHttpRequest для різних браузерів
  8. Лістинг 3. Надсилаємо XMLHttpRequest для кнопки Add to Cart
  9. Обробка запиту сервлету
  10. Лістинг 4. Код сервлету для обробки Ajax-запитів
  11. Лістинг 5. Приклад сериализации в XML-форматі об'єкта Cart
  12. Запит, обробляють за допомогою JavaScript
  13. Лістинг 6. Функція getReadyStateHandler ().
  14. Про getReadyStateHandler ()
  15. дані кошика
  16. Лістинг 7. Оновлення сторінки з відображенням XML документа кошика
  17. Завдання використання Ajax
  18. Користь XMLHttpRequest
  19. Щодо функціональності (usability)
  20. перевантаження сервера
  21. Розбираючись з асинхронність
  22. на Закінчення
  23. Ресурси для скачування

Ajax для Java розробників

Ajax поліпшить ваші Web-додатки

Серія контенту:

Цей контент є частиною # з серії # статей: Ajax для Java розробників

https://www.ibm.com/developerworks/ru/views/global/libraryview.jsp?series_title_by=ajax+для+java+разработчиков

Слідкуйте за виходом нових статей цієї серії.

Цей контент є частиною серії: Ajax для Java розробників

Слідкуйте за виходом нових статей цієї серії.

Ajax - метод розробки Web-додатків, який використовує код на машині клієнта для зміни даних на Web-сервері. В результаті Web-сторінки динамічно оновлюються без перезавантаження повної сторінки, перериває обмін даними. За допомогою Ajax ви можете створювати багатші, більш динамічні інтерфейси для Web-додатків, які наближаються за швидкістю і гнучкості до додатків, що виконуються в клієнтської частини вашого коду.

Ajax - це не технологія, це більше, ніж просто модель, - це шлях визначення та опису корисних технічних прийомів розробки. Ajax - новий продукт в тому сенсі, що розробники тільки починають дізнаватися про це, хоча всі компоненти, які виконуються в Ajax-додатку, вже створені кілька років тому. Такий бум відбувається тому, що виходи в 2004 і 2005 роках кількох великих і знаменитих динамічних Web-інтерфейсів засновані на технології Ajax, особливо Google's Gmail, Maps-додатки і сайт для викладання фотографій Flickr. Ці інтерфейси - надзвичайно новаторські ідеї, які були оброблені в "Web 2.0" декількома розробниками, що призвело до того, що інтерес до Ajax додатків швидко зріс.

У цій серії я дам вам всі необхідні прийоми, які потрібні для початку розробки свого власного пріложеніяс використанням Ajax. У цій першій статті я поясню вам концепції Ajax і покажу фундаментальні кроки в створенні Ajax-інтерфейсу для Web-додатків, написаних на Java. Я буду використовувати приклади коду, щоб продемонструвати як Java-код сервера, так і JavaScript-код клієнта, що робить Ajax додатки такими динамічними. В кінці я вкажу кілька "підводних каменів" в Ajax, а також більш широкі можливості і системи доступу, які ви повинні розглянути перш, ніж почати створювати Ajax додатки.

Покращений он-лайн магазин

Ви можете використовувати Ajax для того, щоб зробити краще традиційні Web-додатки, спрощуючи взаємодії між сервером і клієнтом, обмежуючи перезавантаження сторінки. Щоб продемонструвати це, я використовую простий приклад кошика покупця для он-лайн магазину, яка динамічно оновлюється, коли продукти додаються в неї. Застосований в онлайн-магазині, цей прийом міг би дозволити користувачам продовжити пошук і додавання продуктів в їх кошика без очікування після кожного натискання, коли оновиться ціла сторінка. У той час як деякі рядки коду цієї статті характерні для прикладу кошика покупця, ілюстровані техніки можна застосувати до будь-якого додатка Ajax. Лістинг 1 показує код HTML для випадків прикладу кошика покупця. Я буду повертатися до цього коду HTML протягом всієї статті.

Лістинг 1. Важливі фрагменти прикладу кошика покупця
<! - Таблиця продуктів з каталогу магазину, в рядку по продукту -> <th> Name </ th> <th> Description </ th> <th> Price </ th> <th> </ th> .. . <tr> <! - Деталі продуктів -> <td> Hat </ td> <td> Stylish bowler hat </ td> <td> $ 19.99 </ td> <td> <! - Натисніть кнопку, щоб додати продукт в кошик за допомогою запиту Ajax -> <button onclick = "addToCart ( 'hat001')"> Add to Cart </ button> </ td> </ tr> ... <! - Подання кошика покупця, оновленої асинхронно -> <ul id = "cart-contents"> <! - Список продуктів збільшиться для кожного продукту в кошику -> </ ul> <! - Загальна вартість продуктів, показаних всередині елемента span -> Total cost: <span id = "total"> $ 0.00 </ span>

огляд Ajax

Використання Ajax починається з JavaScript-об'єкта, званого XMLHttpRequest. Як і передбачає ім'я, він дозволяє в клієнтської частини вашого коду виконувати HTTP-запити і аналізує відповідь XML-сервера. Перший крок у вивченні Ajax - створення даних об'єкта XMLHttpRequest. Метод протоколу HTTP при використанні для запиту (GET або POST) і шляхи потім встановлюються в об'єкті XMLHttpRequest.

Тепер згадайте, чому "а" в слові Ajax позначає "асинхронний&quot;? Коли ви посилаєте HTTP-запит, ви не хочете, щоб браузер повис, чекаючи відповіді сервера. Замість цього ви хочете також реагувати на дію користувача на сторінці і працювати з відповіддю сервера, коли той в кінцевому підсумку прийде. Щоб виконати це, вам потрібно зареєструвати функцію зворотного виклику за допомогою XMLHttpRequest і послати асинхронно запит XMLHttpRequest. Контроль залишиться за браузером, а функція зворотного виклику буде викликана, коли прийде відповідь сервера.

На Web-сервері запит прийде так само, як і будь-який інший HttpServletRequest. Після аналізу параметрів запиту, сервлет виконає всі необхідні дії для додатка, серіалізуются його запит в форматі XML і вписує його в HttpServletResponse.

Повертаючись до клієнта, функція зворотного виклику, зареєстрована в XMLHttpRequest, тепер виконується для того, щоб обробити XML-документ, що повертається сервером. Нарешті, призначений для користувача інтерфейс оновлюється відповідно до даних сервера, використовуючи JavaScript-код для перетворення сторінки. Малюнок 1 - діаграма послідовності вивчення Ajax.

Малюнок 1. Огляд Ajax

Тепер, коли у вас є огляд Ajax високого рівня, я розгляну його більш детально при кожному кроці. Дивіться на рисунок 1, якщо ви раптом забудете послідовність вивчення, яка є нечіткою внаслідок асинхронної природи Ajax.

відправлення XMLHttpRequest

Я почну з самого початку: створення XMLHttpRequest і відправка його з браузера. На жаль, метод створення XMLHttpRequest відрізняється від браузера до браузеру. Функція в JavaScript в лістингу 2 згладжує ці труднощі різних браузерів, визначаючи коректний підхід для даного браузера і повертаючи XMLHttpRequest готовим до використання. Краще за все думати про це як про код-шаблоні: просте копіювання його в вашу бібліотеку JavaScript і його використання, коли вам знадобиться XMLHttpRequest.

Лістинг 2. Створення XMLHttpRequest для різних браузерів
/ * * Повертає новий XMLHttpRequest об'єкт або false, якщо браузер його не підтримує * / function newXMLHttpRequest () {var xmlreq = false; if (window.XMLHttpRequest) {// Створимо XMLHttpRequest об'єкт для не-Microsoft браузерів xmlreq = new XMLHttpRequest (); } Else if (window.ActiveXObject) {// Створимо XMLHttpRequest за допомогою MS ActiveX try {// Спробуємо створити XMLHttpRequest для пізніх версій // Internet Explorer xmlreq = new ActiveXObject ( "Msxml2.XMLHTTP"); } Catch (e1) {// Неможливо створити необхідний ActiveXObject try {// Пробуємо варіант, який підтримають більш старі версії // Internet Explorer xmlreq = new ActiveXObject ( "Microsoft.XMLHTTP"); } Catch (e2) {// Не в змозі створити XMLHttpRequest за допомогою ActiveX}}} return xmlreq; }

Пізніше ми обговоримо технічні прийоми для браузерів, які не підтримують XMLHttpRequest. А зараз приклади припускають, що функція newXMLHttpRequest з лістингу 2 завжди повертає значення XMLHttpRequest.

Повертаючись назад до сценарію приклад кошика покупця, я б хотів скористатися Ajax для випадків, коли користувач натискає Add to Cart кнопку для каталогу продуктів. Оператор onclick, викликаний addToCart (), відповідальний за оновлення стану кошика в Ajax-виклику (див. лістинг 1 ). Як показано в лістингу 3, перше, що необхідно зробити addToCart (), - отримати дані XMLHttpRequest за допомогою виклику функції newXMLHttpRequest () з лістингу 2. Наступним кроком він реєструє функцію зворотного виклику для отримання відповіді сервера, (я поясню це докладно пізніше, дивіться лістинг 6 ).

Оскільки запит змінить стан на сервері, я буду користуватися методом HTTP POST, щоб це виконати. Відправка даних методом POST виконується в три кроки. По-перше, мені необхідно відкрити з'єднання з джерелом сервера, з яким я з'єднуюся, що в даному випадку є сервлетом, занесеним в cart.do сторінки. Далі я встановлюю заголовок в XMLHttpRequest, який свідчить про те, що вміст запиту - закодовані дані. І, нарешті, я посилаю запит з закодованими даними в тілі вмісту.

Лістинг 3 показує всі ці кроки разом.

Лістинг 3. Надсилаємо XMLHttpRequest для кнопки Add to Cart
/ * * Додає продукт, певний його кодом, * в кошик покупця * itemCode - код продукту для додавання. * / Function addToCart (itemCode) {// Повертає вміст XMLHttpRequest var req = newXMLHttpRequest (); // Оператор для отримання повідомлення зворотного виклику // з об'єкта запиту var handlerFunction = getReadyStateHandler (req, updateCart); req.onreadystatechange = handlerFunction; // Відкриваємо HTTP-з'єднання за допомогою POST-методу до сервлету кошика покупця. // Третій параметр визначає, що запит асинхронний. req.open ( "POST", "cart.do", true); // Визначає, що по змісту запиту є дані req.setRequestHeader ( "Content-Type", "application / x-www-form-urlencoded"); // Надсилаємо закодовані дані, які говорять про те, що я хочу додати // певний продукт в кошик. req.send ( "action = add & item =" + itemCode); }

Після всього цього ви зрозуміли першу частину в механізмі Ajax - власне створення і передача HTTP-запиту від клієнта. Наступним кроком буде код сервлету на мові Java для обробки запиту.

Обробка запиту сервлету

Обробка XMLHttpRequest за допомогою сервлету така ж, як і обробка звичайного HTTP-запиту з браузера. Закодовані дані, що відсилаються в вмісті запиту POST, можуть бути отримані за допомогою викликів HttpServletRequest.getParameter (). Ajax запитує участь в HttpSession, такий же, як і в регулярних Web запитах з програми. Це корисно для прикладу сценарію кошика покупця, оскільки дозволяє мені зробити висновок стан користувальницької кошика покупця в JavaBeans і утримувати цей стан під час сесії між двома запитами.

Лістинг 4 - частина простого сервлета, який обробляє Ajax запити, щоб оновити кошик покупця. Cart виходить з сесії користувача і його стан оновлюється відповідно до параметрів запиту. Cart потім серіалізуются в XML-форматі, а XML утворюється в ServletResponse. Важливо встановити тип вмісту запиту в application / xml, в іншому випадку XMLHttpRequest НЕ буде аналізувати вміст відповіді.

Лістинг 4. Код сервлету для обробки Ajax-запитів
public void doPost (HttpServletRequest req, HttpServletResponse res) throws java.io.IOException {Cart cart = getCartFromSession (req); String action = req.getParameter ( "action"); String item = req.getParameter ( "item"); if ((action! = null) && (item! = null)) {// Додати або видалити продукт з Cart if ( "add" .equals (action)) {cart.addItem (item); } Else if ( "remove" .equals (action)) {cart.removeItems (item); }} // Серіалізуем стан Cart в XML-форматі String cartXml = cart.toXml (); // Записуємо отриманий XML в запит. res.setContentType ( "application / xml"); res.getWriter (). write (cartXml); }

Лістинг 5 показує приклад XML-коду, отриманий за допомогою методу Cart.toXml (). Зробити це досить просто. Запам'ятайте атрибут generated в cart елементі, який є тимчасовою міткою, отриманої за допомогою System.currentTimeMillis ().

Лістинг 5. Приклад сериализации в XML-форматі об'єкта Cart
<? Xml version = "1.0&quot;?> <Cart generated = "1123969988414" total = "$ 171.95"> <item code = "hat001"> <name> Hat </ name> <quantity> 2 </ quantity> </ item > <item code = "cha001"> <name> Chair </ name> <quantity> 1 </ quantity> </ item> <item code = "dog001"> <name> Dog </ name> <quantity> 1 < / quantity> </ item> </ cart>

Якщо ви поглянете на Cart.java в джерелі додатки, доступному в секції Завантаження , Ви побачите, що XML виходить просто за допомогою з'єднання рядків разом. Застосований в прикладі, цей спосіб - часто найгірший спосіб отримати XML з коду на мові Java. Я запропоную прийоми цікавіше і краще в наступній частині цієї серії.

Тепер ви знаєте, що CartServlet запитується за допомогою XMLHttpRequest. Наступним кроком буде повернення до коду клієнта, де ви можете побачити, як відповідь в XML-форматі буде використовуватися для поновлення стану сторінки.

Запит, обробляють за допомогою JavaScript

readyState властивість XMLHttpRequest - числове значення, яке визначає статус циклу запиту. Воно змінюється від 0 для "невизначеного" і до 4 для "завершеного". Кожен раз, коли змінюється readyState, з'являється подія readystatechange і викликається за допомогою onreadystatechange властивості оператор.

В лістингу 3 ви побачили, як викликалася функція getReadyStateHandler () для створення оператора. Цей оператор потім приписується властивості onreadystatechange. getReadyStateHandler () використовував той факт, що функції - об'єкти першого класу в JavaScript. Це означає, що функції можуть бути параметрами до інших функцій і можуть також створювати і повертати значення інших функцій. Обов'язки getReadyStateHandler () - повертати значення функції, яка перевіряє, чи завершився XMLHttpRequest і був відісланий чи відповідь в XML-форматі в оператор, визначений викликом. Лістинг 6 - код для getReadyStateHandler ().

Лістинг 6. Функція getReadyStateHandler ().
/ * * Повертає функцію, яка очікує, щоб закінчився * певний XMLHttpRequest, потім передає його відповідь в XML-форматі * заданому оператору * req - це XMLHttpRequest, чий статок змінюється * responseXmlHandler - функція, що передається запит XML * / function getReadyStateHandler (req, responseXmlHandler) {// Повертає невизначену функцію, яка зчитує // дані XMLHttpRequest return function () {// Якщо потрібно статус "закінчений" if (req.readyState == 4) {// Перевіряємо, чи прийшов успішний відповідь сервера if (req .status == 200) {// Передає XML оператору responseXmlHandler (req.responseXML); } Else {// Виникла помилка HTTP alert ( "HTTP error:" + req.status); }}}}
HTTP-код статусу

У лістингу 6 status властивість XMLHttpRequest використовується для того, щоб побачити, чи закінчилася запит успішно. status містить HTTP-код статусу у відповіді сервера. Коли слід дотримуватися простих GET і POST-методів, ви можете припустити, що будь-який код, відмінний від 200 (OK), - помилка. Якщо сервер посилає перенаправлений запит (наприклад, 301 або 302), браузер природно переорієнтується і знайде джерело в новому місці, XMLHttpRequest не бачить перенаправленого коду статусу. Також браузери автоматично додають Cache-Control: no-cache заголовок до всіх XMLHttpRequest, тому код клієнта ніколи не має справи і з 304 (немодифікованим) відповіддю сервера.

Про getReadyStateHandler ()

getReadyStateHandler () - відносно складний шматок коду, особливо якщо ви раніше не знали JavaScript. Але з іншого боку перевага в тому, що за допомогою включення цієї функції в вашу бібліотеку JavaScript ви можете спокійно обробляти Ajax-запити сервера без роботи з даними XMLHttpRequest. Важливо також, що ви розумієте, як використовувати getReadyStateHandler () в вашому власному коді.

В лістингу 3 ви бачили getReadyStateHandler (), викликаний так: handlerFunction = getReadyStateHandler (req, updateCart). Функція, яка повертається за допомогою getReadyStateHandler (), в цьому випадку перевірить, чи виконаний XMLHttpRequest в змінної req і потім викличе функцію, що називається updateCart, за допомогою запиту в форматі XML.

дані кошика

Лістинг 7 - власне сам код updateCart (). Функція запитує XML-документ кошика покупця, використовуючи DOM-виклики і оновлюючи Web-сторінку (див. Лістинг 1) для того, щоб показати нові елементи вмісту нового кошика. Зверніть тут увагу на виклики, використані для того, щоб дістати дані з XML DOM. Атрибут generated елемента cart, створений, коли Cart був серіалізовані в форматі XML, перевіряється, щоб упевнитися, що більш нові дані кошика не перезаписані більше старими даними. Ajax-запити за своєю суттю асинхронні, тому ця перевірка охороняє проти відповідей сервера, які прибувають в безладді.

Лістинг 7. Оновлення сторінки з відображенням XML документа кошика
function updateCart (cartXML) {// Отримати кореневої & quot; cart & quot; елемент з документа var cart = cartXML.getElementsByTagName ( "cart") [0]; // Перевіримо, що більш ранній документ кошика не був оброблений ще var generated = cart.getAttribute ( "generated"); if (generated> lastCartUpdate) {lastCartUpdate = generated; // Очистимо список HTML, необхідний для відображення вмісту кошика var contents = document.getElementById ( "cart-contents"); contents.innerHTML = ""; // З'єднуємо продукти в кошику var items = cart.getElementsByTagName ( "item"); for (var I = 0; I <items.length; I ++) {var item = items [I]; // Дістаємо ключові поняття з імені та елементів кількості var name = item.getElementsByTagName ( "name") [0] .firstChild.nodeValue; var quantity = item.getElementsByTagName ( "quantity") [0] .firstChild.nodeValue; // Створюємо і додаємо список продуктів, HTML елемент для цього продукту var li = document.createElement ( "li"); li.appendChild (document.createTextNode (name + "x" + quantity)); contents.appendChild (li); }} // Оновлюємо разом в кошику, використовуючи значення з документа кошика document.getElementById ( "total"). InnerHTML = cart.getAttribute ( "total"); }

Після того, що ми виконали, подорож в Ajax закінчено, хоча ви могли б захотіти отримати Web-додатки і побачити їх у дії (дивіться секцію Завантаження ). Приклад дуже простий, багато рядки в ньому ще можна поліпшити. Наприклад, я включив код сервера, щоб прибрати продукти з кошика, але не зробив доступ до них з інтерфейсу. Для вас буде хорошим вправою спробувати побудувати в додатку існуючого JavaScript-коду дану функціональність.

Завдання використання Ajax

Як і в багатьох інших технологіях, в Ajax є безліч способів зробити помилки. Деякі з проблем, які я обговорюю тут, в даний момент мають вдалі і легкі рішення, але можуть бути поліпшені як Ajax-продуктів. Оскільки спільнота розробників дає досвід в розробці Ajax-додатків, кращі практики та довідники будуть записані.

Користь XMLHttpRequest

Однією з важлівіх завдання, что постають перед Обличчям Ajax-розробніків, є питання, як відповісті, коли XMLHttpRequest недоступний. У тій годину як більшість СУЧАСНИХ браузерів підтрімують XMLHttpRequest, всегда є Користувачі, у якіх XMLHttpRequest НЕ підтрімує або чия БЕЗПЕКУ браузера не дала Виконати XMLHttpRequest. Если ви розробляєте Web-додаток, Пожалуйста может буті застосовано в корпоратівній мережі, ймовірно, у вас є перевага у візначенні, Які браузери підтрімуються и коли XMLHttpRequest всегда доступно. Якщо ви розробляєте для публічної мережі, то ви повинні знати, що, припускаючи, що XMLHttpRequest доступний, ви відрікаєтеся від користувачів старіших браузерів, браузерів людей з закритим доступом або легковажних браузерів з сервісом проти виконання вашої програми.

Тому вам необхідно спробувати зробити ваше додаток з "витонченим погіршенням", щоб залишитися функціональним навіть в браузерах без підтримки XMLHttpRequest. У прикладі кошика покупця кращий спосіб погіршити додаток - кнопки Add to Cart, що виконують звичайну роль, оновлюючи сторінку для нового статусу кошика. За допомогою Ajax можна додати в сторінку через JavaScript-код, коли сторінка завантажена, прикріпити оператор JavaScript до кожної кнопки Add to Cart, якщо тільки доступний XMLHttpRequest. Інший спосіб - визначити XMLHttpRequest, коли користувач увійшов, і потім забезпечити будь-яку Ajax версію програми або версію, засновану на традиційних формах, якщо знадобиться.

Щодо функціональності (usability)

Деякі із завдань функціональності в Ajax - досить загальні. Наприклад, може бути, важливо дозволити користувачам дізнатися, що їх введення зареєстрований, оскільки звичайний механізм зворотного зв'язку ( "пісочний годинник" курсора і "крутиться браузер") не застосовують для XMLHttpRequest. Вихід - замінити кнопки Підтвердити сполученням "Оновлюється ...", щоб користувачі не натискали кілька разів на кнопки в очікуванні запиту.

Інше завдання полягає в тому, що користувачі можуть не помітити, що частині сторінки, які вони бачать, вже оновлені. Ви можете вирішити цю проблему, використовуючи безліч візуальних технік і прийомів, наприклад, намалювати очей користувача до оновлених місцях сторінки. Інші завдання, викликані оновленням сторінки при Ajax, включають в себе неробочу кнопку повернення назад, некоректне відображення адреси або неможливість додати в обране. дивіться секцію ресурси для статей, які спеціалізуються на завданнях функціональності в Ajax-додатках.

перевантаження сервера

Виконання Ajax-інтерфейсу в місці, де діють звичайні форми, може привести до того, що несподівано зросте кількість запитів до сервера. Наприклад, звичайний Google Web-пошук викликає один запит на сервер, коли користувач натискає кнопку пошуку. Однак, Google Suggest, який намагається автоматично закінчити ваше дію пошуку, посилає кілька запитів до сервера, поки користувач друкує. Коли ви розробляєте Ajax-додаток, пам'ятайте, скільки запитів ви відправите сервера, і виникне через це перевантаження сервера. Ви можете зменшити перевантаження сервера, зберігаючи запити на стороні клієнта і ховаючи запити в клієнті, якщо це можливо. Ви можете також спробувати розробити Ajax-додатки так, щоб більша частина дії могла бути виконана в клієнтської частини вашого коду без необхідності з'єднання з сервером.

Розбираючись з асинхронність

Дуже важливо зрозуміти, що немає гарантії, що XMLHttpRequest закінчаться в тій самій черговості, в якій вони були відправлені. Справді, вам необхідно допустити, що вони не повернуться так, і розробити ваш додаток з урахуванням цієї поправки. У прикладі кошика покупця час позначки останнього оновленого продукту раніше гарантувало, що більш нові дані кошика не можуть бути переписані старішими, (див. лістинг 7 ). Цей недопрацьований підхід працює для сценарію кошика покупця, але може не виконуватися в інших сценаріях.

на Закінчення

Ви, мабуть, зараз добре розумієте основні принципи програмування в Ajax і особливості компонент сервера і клієнта, які мають місце в Ajax. Це фундамент Ajax-додатки на мові Java. На додаток до сказаного вам слід розуміти деякі із завдань розробки більш високого абстрактного рівня, які з'являються з технічними прийомами в Ajax. Створення успішного Ajax-додатки потребують загального підходу, починаючи з розробки інтерфейсів за допомогою JavaScript-коду і закінчуючи архітектурою сервера, але ви тепер озброєні основними принципами програмування в Ajax, необхідними для розгляду всіх цих аспектів.

Дуже добре, якщо ви відчуваєте смуток через складність написання великих Ajax-додатків з використанням прийомів, продемонстрованих тут. Такі структури, як Struts, Spring і Hibernate, розвиваються, розробляючи дрібні деталі Servlet API і JDBC, тому з'являються кошти для полегшення Ajax-розробки. Деякі з них сфокусовані виключно на проблемах клієнтської сторони коду, знаходячи легкі шляхи для додавання візуальних ефектів до ваших сторінок або ретельно аналізуючи використання XMLHttpRequest. Деякі йдуть далі, розробляючи засоби для автоматичної генерації Ajax-інтерфейсів з боку сервера. Ці структури виконують важку роботу за нас, тому ви можете сконцентруватися на підходах більш високого рівня. Я розгляну деякі з них в цій серії.

Спільнота Ajax швидко розвивається, і тут є велика кількість важливої ​​інформації. Перед тим як читати наступну частину цієї серії статей, я б рекомендував вам ознайомитися зі статтями в секції ресурси , Особливо якщо ви - "новачок" в Ajax або в розробці клієнтської частини коду. Також вам знадобиться час розібратися з прикладом коду і подумати про способи його поліпшення.

У наступній статті цієї серії я розгляну XMLHttpRequest більш детально і запропоную способи створення XML відразу з вашого JavaBeans. Я також покажу вам альтернативи до XML для передачі Ajax-даних, такі як нотація JSON.

Ресурси для скачування

Схожі тими

Підпішіть мене на ПОВІДОМЛЕННЯ до коментарів

Jsp?
Тепер згадайте, чому "а" в слові Ajax позначає "асинхронний"?
Quot;?