Благодарности | 14 |
|
Введение | 15 |
|
XML и Java | 16 |
Сервлеты Java и JSP-страницы | 16 |
Кому стоит купить эту книгу | 17 |
Что вам потребуется | 17 |
Что содержится в этой книге | 18 |
Что содержится на компакт-диске | 19 |
Соглашения, используемые в этой книге | 19 |
Об авторах | 20 |
От издательства | 21 |
|
Глава 1. Описание данных с помощью XML | 22 |
|
Введение в XML | 22 |
XML и электронная коммерция | 23 |
Области применения XML | 26 |
XML на стороне клиента | 26 |
XML на стороне сервера | 27 |
Использование XML для хранения данных | 28 |
Правила XML | 29 |
Определение правильно оформленного документа XML | 30 |
DTD и допустимость документа XML | 32 |
Объявления элементов | 33 |
Спецификация содержимого | 33 |
Объявления атрибутов | 35 |
Объявления сущностей | 37 |
Непроверенные символьные данные | 39 |
Разделы символьных данных | 39 |
Комментарии в XML | 39 |
Инструкции по обработке | 40 |
Схема XML | 40 |
Создание таблиц стилей с использованием XSL | 42 |
Использование XML в приложениях | 45 |
Модели программирования | 46 |
Программирование на основе DOM | 47 |
Программирование на основе SAX | 48 |
Краткий справочник по правилам XML | 49 |
Требования к правильно оформленному документу XML | 49 |
Элементы | 50 |
Применение | 50 |
Объявление | 50 |
Атрибуты | 50 |
Сущности | 51 |
Применение | 51 |
Объявления | 51 |
|
Глава 2. Каталог товаров на XML | 52 |
|
Назначение web-сайта | 52 |
Требования | 53 |
Ограничения | 54 |
Покупка готового пакета — это быстрее и дешевле | 54 |
Сборка приложения из стандартных частей — это лучше и дешевле | 55 |
Разработка сервера web-приложений — это быстрее и лучше | 55 |
Достоинства XML | 55 |
Доступность инструментальных средств | 56 |
SOAP | 56 |
Гибкость инструментальных средств | 57 |
Совместимость инструментальных средств | 58 |
Поддержка Unicode | 58 |
Каталог товаров и DTD | 58 |
Организация данных | 59 |
Написание DTD | 62 |
Доработка DTD | 63 |
Создание первого чернового варианта DTD | 66 |
Уточнение чернового варианта | 67 |
Элементы catalog, product_line и product | 67 |
Элементы description, paragraph и general | 69 |
Элементы price, quantity_in_stock и image | 71 |
Элементы onsale_date, time, clip и title | 73 |
Элемент shipping | 75 |
Финальная версия | 75 |
Принципы разработки DTD | 81 |
Репрезентативный образец данных | 81 |
Избегайте субтрактивного уточнения | 82 |
Упрощайте DTD | 84 |
Элементы или атрибуты? | 85 |
Рассуждайте в терминах реальных процессов | 86 |
Шаблоны XML | 86 |
Краткое описание | 86 |
Задача | 87 |
Контекст | 87 |
Причины | 87 |
Решение | 87 |
Пример | 87 |
Обсуждение | 87 |
Близкие по назначению шаблоны | 87 |
Известные примеры применения | 87 |
Стандартизация DTD | 87 |
|
Глава 3. Представление XML-каталога в сети | 90 |
|
Технологии представления | 90 |
Взаимодействие по протоколу HTTP | 90 |
Запрос браузера | 90 |
Ответ web-сервера | 91 |
API для сервлетов Java | 92 |
Классы и интерфейсы для сервлетов Java | 93 |
Обработка запросов сервлетами | 95 |
Простой пример сервлета | 95 |
Инициализация сервлета | 96 |
Генерирование ответа сервлетом | 97 |
Роль JavaBeans | 97 |
API для JSP-страниц | 97 |
Язык тегов JSP | 98 |
Пользовательские библиотеки тегов | 99 |
Обработка запросов JSP | 99 |
Встроенные переменные в JSP-страницах | 100 |
Организация каталога | 100 |
API для объектной модели документа | 101 |
Создание объектной модели документа для каталога товаров | 101 |
Интерфейс Node | 102 |
Интерфейс NodeList | 104 |
Интерфейс Document | 104 |
Индексация товаров | 104 |
Информация для представления каталога в сети | 107 |
Организация поиска по ключевым словам | 107 |
Форматирование описаний товаров | 109 |
Гибкость стилей | 109 |
Гибкость содержимого | 111 |
|
Глава 4. Заполнение корзины покупателя | 116 |
|
Проблема корзины покупателя | 116 |
Использование объектов класса HttpSession | 118 |
API для класса HttpSession | 118 |
Интерфейс HttpSessionBindingListener | 120 |
Корзина покупателя на языке Java | 121 |
Классы Cartltem и ShoppingCart | 121 |
Класс CatalogServ | 124 |
Инициализация сервлета | 126 |
Методы doGet и doPost | 128 |
Метод doPageEnd | 129 |
Метод doPageMid | 130 |
Отображение полной информации о товаре | 133 |
Использование класса cartListener | 136 |
Класс CatalogBean | 137 |
Использование объектов Cartltem и ShoppingCart | 137 |
Класс ProductFormatter | 140 |
Методы, вызываемые методом doFullItem | 141 |
Метод doListOutput | 143 |
Метод addText | 144 |
|
Глава 5. Оплата и подтверждение заказа | 148 |
|
Процесс оплаты | 148 |
Безопасность | 150 |
Доверие клиента | 151 |
Сбор информации о заказе | 152 |
Класс Customerlnfo | 153 |
Класс Creditlnfo | 154 |
Класс Fulfilment | 154 |
Класс Authorization | 156 |
Класс Order | 156 |
Класс TestPaymentAuthorizer | 161 |
Класс ShippingCalculator | 163 |
Класс Emailer | 164 |
Страница Customerlnfo | 166 |
JSP-страница Shippinglnfo | 167 |
JSP-страница Creditlnfo | 168 |
JSP-страница Confirmlnfo | 170 |
Сервлет SubmitOrder | 171 |
JSP-страница Approved | 173 |
JSP-страница Declined | 174 |
Обновление информации о доставке | 174 |
JSP-страница OrderDateSelector | 174 |
JSP-страница SelectOrder | 175 |
JSP-страница ShowOrder | 175 |
JSP-страница UpdateFullfilment | 179 |
|
Глава 6. Обслуживание виртуального каталога | 182 |
|
Общие принципы редактирования каталога | 182 |
Объекты данных | 183 |
Класс Catalog | 186 |
Класс XMLWriter | 189 |
Класс ProductLine | 191 |
Класс Product | 193 |
Класс Image | 200 |
Класс Clip | 202 |
Класс DateTime | 203 |
Класс Util | 205 |
Код для представления информации пользователю | 208 |
Главная HTML-страница | 208 |
Класс Main сервлета | 210 |
JSP-страница Delete | 213 |
JSP-страница Edit | 214 |
Сервлет UpdateProduct | 219 |
|
Глава 7. Поиск своего покупателя с помощью опросов | 224 |
|
Обеспечение конфиденциальности | 224 |
Промышленные стандарты | 224 |
Общественные организации | 225 |
Создание системы опросов с помощью XML-сценария | 226 |
Определение последовательности вопросов | 227 |
Пример анкеты | 228 |
Сервлет управления опросом | 230 |
Код сервлета управления опросом | 230 |
Класс Interpreter | 234 |
Отображение вопросов | 237 |
Отображение введения | 238 |
Управление ветвлением опроса | 239 |
Обработка элемента Terminal | 241 |
Вспомогательные методы класса Interpreter | 242 |
Класс Recorder | 242 |
Варианты анализа анкеты | 246 |
Класс для создания файлов снимков | 247 |
Класс для создания таблиц | 249 |
Пример сервлета для просмотра результатов отчёта | 254 |
Служебная библиотека документа XML | 259 |
|
Глава 8. Новости на сайте | 266 |
|
Разработка системы показа новостей | 266 |
Гибкость отображения | 267 |
Элементы текстов сообщений | 267 |
Расположение сообщений в зависимости от их новизны | 268 |
Информация для управления сообщениями | 269 |
Корневой элемент документа | 269 |
Простота ввода данных | 270 |
Минимальная нагрузка на сервер | 270 |
Система показа новостей | 271 |
Внешний вид web-страницы | 272 |
Класс NewsFormatter | 273 |
Использование класса NewsFormatter | 281 |
Код для сервлета TheNewsServ | 281 |
Пример JSP-страницы | 283 |
Добавление свежих новостей | 285 |
Сервлет CompanyNewsServ | 285 |
Класс NewsUpKeep | 289 |
|
Глава 9. Привлечение постоянных посетителей | 294 |
|
Источники новостей и стандарты | 294 |
Формат RSS | 295 |
NewsML и планы стандартизации | 295 |
Формат сообщений Moreover.com | 296 |
Получение файла XML | 297 |
Класс NewsModel | 302 |
Создание DOM | 302 |
Выбор заголовков | 305 |
Главный управляющий класс | 309 |
Классы для отображения заголовков | 313 |
Сервлет NetNewsServ | 313 |
Класс NetNewsBean | 317 |
Возможные усовершенствования | 321 |
|
Глава 10. Web-приложения на Java | 322 |
|
Спецификации в интерфейсе API сервлетов Java | 322 |
Развёртывание web-приложения | 323 |
Определение web-приложения | 324 |
Структура папок | 324 |
Содержимое папки WEB-INF | 325 |
Дескриптор развёртывания web-приложения | 325 |
Параметры конфигурации | 326 |
Архивные файлы web-приложения | 327 |
Следующее поколение | 327 |
Следующее поколение XML | 328 |
Протокол SOAP | 329 |
Проблемы масштабирования | 329 |
Сохранность информации о сеансе | 329 |
J2EE и Enterprise JavaBean | 330 |
Альтернативное решение — Spaces | 331 |
|
Приложение А. Интерфейсы API для сервлетов и JSP-страниц | 332 |
|
Параметры приложений | 332 |
Создание сервлета | 333 |
Методы класса HttpServlet | 334 |
Интерфейс ServletContext | 335 |
Получение информации о запросе | 336 |
Методы, добавляемые интерфейсом HttpServletRequest | 337 |
Методы, связанные с безопасностью | 338 |
Методы, связанные с сеансами и cookie | 339 |
Другие методы интерфейса ServletRequest | 339 |
Класс HttpSession и классы, связанные с cookie | 340 |
Методы класса HttpSession | 340 |
Методы интерфейса HttpSessionListener | 341 |
Методы класса Cookie | 342 |
Специальные объекты, связанные с запросом | 343 |
Формирование ответа пользователю | 343 |
Методы интерфейса ServletResponse | 343 |
Методы, добавляемые интерфейсом HttpServletResponse | 345 |
Выходные данные JSP-страниц | 346 |
Ошибки и исключения | 346 |
Ошибки и исключения JSP-страниц | 347 |
Коды состояний и ошибок HTTP | 348 |
Интерфейс API для JSP-страниц | 350 |
Класс PageContext | 351 |
Доступ к стандартным переменным | 351 |
Класс JspWriter | 354 |
Пакет javax.servlrt.jsp.tagext | 355 |
Класс BodyContent | 356 |
|
Приложение Б. Словарь терминов | 358 |
|
Алфавитный указатель | 382 |