Цель этой книги — познакомить разработчиков с технологиями использования XML в программах на Java. Вместо того чтобы рассказывать о теоретической стороне дела, мы сразу переходим к практическому применению этих технологий на примере построения коммерческого web-сайта.
Глава 1. В этой главе вы найдете введение в XML с объяснениями всех каверзных моментов этого языка и типичных способов его использования. Также в этой главе приводится обзор двух моделей обработки данных XML с помощью Java — DOM и SAX.
Глава 2. Эта глава посвящена решению вопросов, возникающих при разработке каталога товаров на XML. Этот язык является настолько гибким, что иногда бывает непросто выбрать один из многих способов представления данных. Выбранная структура каталога иллюстрирует многие важные задачи, которые вам придется решать при разработке собственного проекта подобного рода. Построенный нами каталог, который дорабатывается в следующих главах, включает описания более сотни наименований товаров.
Глава 3. Эта глава начинается с обзора интерфейсов API для сервлетов Java и JSP-страниц, используемых для создания динамических web-страниц Затем мы рассматриваем стандартные интерфейсы API Java для извлечения данных из документов XML, после чего мы объединяем все эти функции в сервлете Java, предназначенном для получения информации из каталога и отображения ее в формате HTML. В числе прочих этот сервлет реализует возможность поиска товаров по ключевым словам.
Глава 4. В этой главе мы расширяем классы для представления каталога из главы 3 и создаем действующую корзину покупателя, которая позволяет покупателю заказывать товары через Интернет. В процессе создания этого приложения мы рассказываем о том, как концепция мониторинга сеанса реализована в сервлетах Java.
Глава 5. Теперь, когда у нас имеется корзина покупателя, нам нужно обеспечить возможность получения денег от клиента и оформления заказа (разумеется, с использованием XML). В нашем примере для представления соответствующей информации клиенту используется технология JavaServer Pages.
Глава 6. В этой главе мы исследуем задачу обновления каталога, отформатированного средствами XML, через специальный интерфейс в режиме подключения к сети.
Глава 7. Насущной потребностью для любого коммерческого сайта является способность собирать информацию о своих клиентах. В этой главе приводится основанная на XML система опроса, в которой предусмотрена возможность ветвления (возможность задавать различные вопросы различным пользователям в зависимости от их ответов на определенные специальные вопросы). Возникающая задача анализа собранных результатов дает нам возможность продемонстрировать, как с помощью интерфейса SAX обрабатывать большие документы XML.
Глава 8. Каждому коммерческому сайту необходимо как-то информировать клиентов о новостях компании. В этой главе на основе XML разрабатываются гибкая система для отображения новостей компании, а также сервлеты и JSP-страницы для ее поддержки.
Глава 9. В наши дни многие коммерческие сайты включают в свои домашние страницы заголовки новостей, пытаясь тем самым заинтересовать пользователей и стимулировать их к частому посещению сайта. Как показано в этой главе, вы можете обеспечить присутствие на вашем сайте текущих новостей буквально по сотням тематических категорий, и для этого не нужен целый штат репортеров — всего лишь XML и Java.
Глава 10. В предыдущих главах рассказывается о деталях организации ресурсов для web-приложения на Java. В этой главе мы приводим обзор спецификации Sun для версии API 2.2 сервлетов Java и обсуждаем интерфейсы для Java и XML следующего поколения.
Для многих проектов мы использовали находящийся в свободном доступе небольшой web-сервер —Jakarta-Tomcat (http://jakarta.apache.org), содержащий комплект необходимых разработчику инструментальных средств. Если у вас еще нет web-сервера, то для начала Tomcat является хорошим вариантом. Также мы использовали сервер JRun (www.allaire.com) — как в автономном режиме, так и в качестве дополнения к web-серверам Microsoft PWS и IIS. Еще вы можете испытать сервер Orion (www.orionserver.com), в который включено хорошее учебное пособие по библиотеке тегов JSP.
Служебные программы и комплекты инструментальных средств для работы с XML, написанные на Java, появляются как грибы после дождя. Для того чтобы придерживаться определенных стандартов, мы использовали версию JAXP 1.0 (Java API for XML parsing — интерфейс API Java для анализа документов XML). Этот пакет можно загрузить с web-сайта java.sun.com. Следующая версия пакета JAXP во время создания этой книги проходила стадию бета-тестирования, так что к моменту выхода книги она, вероятно, уже будет доступна.
Мы предполагаем, что вы на базовом уровне знакомы с HTML, Java и web-серверами и у вас имеется доступ к компьютеру, на котором можно установить небольшой web-сервер, стандартный компилятор Java и другие служебные программы. Редактировать данные XML можно с помощью любого текстового редактора, либо вы можете использовать один из многочисленных коммерческих или находящихся в свободном доступе специализированных редакторов XML.
Если эти требования выполнены, то практически любой человек, который работает с данными в той или иной форме, потенциально является пользователем XML. Трудно представить себе такую область человеческой деятельности, для которой в Интернете не нашлось бы ни одного относящегося к ней проекта, использующего язык XML.
В нашей книге мы будем использовать сервлеты [Так, по-видимому, по аналогии с апплетами авторы называют программы, написанные на языке Java и выполняющиеся на сервере — Примеч ред. ] Java и JSP-страницы (JavaServer Pages) для создания web-приложений, работающих с данными XML. Сервлеты выполняются на web-сервере, осуществляя те функции, которые ранее возлагались на сценарии CGI. JSP-страницы позволяют объединять элементы разметки HTML и фрагменты кода Java. Технология сервлетов и JSP-страниц развивается примерно так же быстро, как язык XML.
Во время написания этой книги текущей версией API для сервлетов Java была версия 2.2, выпущенная в декабре 1999 года. Этот интерфейс API содержит много изменении по сравнению с предыдущей версией, особенно в области создания web-приложений и стандартизованной настройки приложения на базе XML.
Стандартизация технологии JavaServcr Pages происходила гораздо медленнее. Развитие интерфейса API надолго затормозилось на версии 0.92. Отсутствие ясных указаний со стороны Sun привело к тому, что многие компании по созданию программного обеспечения разработали свои собственные технологии для объединения пользовательских тегов в HTML с возможностью поиска по базе данных и другими аналогичными возможностями.
Когда компания Sun разработала редакцию Java, которая впоследствии стала называться Java 2 Enterprise Edition (редакция Java 2 для корпоративных программных систем на базе Java), стало ясно, что технология JSP будет играть значительную роль в общей концепции создания web-приложений. Поэтому дальнейшее развитие API для JSP-страниц пошло быстрее, появились версии 1.0 и 1.1. Когда была опубликована редакция J2EE, стало ясно, что сервлеты Java и JSP-страницы уже в значительной степени интегрированы в общую картину развития web-приложений на Java. Другой важной особенностью J2EE явилось использование XML для описания web-приложений.
Наиболее значительное в этой области событие произошло в октябре 1999 года. Компания Sun передала организации Apache весь исходный код API 2.2 для сер- влетов и API 1.1 для JSP-страниц с целью дальнейшей разработки открытых эталонных реализаций контейнеров сервлетов Java и JSP-страниц. Эта разработка не зависит от J2EE и гарантирует постоянное наличие в свободном доступе новейших реализаций интерфейсов API для сервлетов и JSP-страниц.
Мы старались придерживаться максимально простого способа организации материала. Соглашения об обозначениях в этой книге знакомы всем читателям. Для фрагментов кода и текстов программ используется моноширинный шрифт, пример которого вы видите в следующем объявлении метода:
public void _jspService(HttpServletRequest request, HttpServletResponse response)ПРИМЕЧАНИЕ
Мы иногда будем использовать эту врезку для того, чтобы вставить какое-либо замечание, выходящее за рамки рассматриваемого в основном тексте вопроса.
ВНИМАНИЕ
Эту врезку мы используем для того, чтобы обратить ваше внимание на возможные сложности, например отклонение от стандарта.
СОВЕТ
Здесь вы найдете советы тех, кто действительно знает решение.
Если вы интересуетесь Java, вам наверняка приходится часто слышать и о XML, так как с самого начала язык Java был тесно связан с XML. Джон Босак (Jon Bosak), один из первых инициаторов стандартизации XML, работает в компании Sun, и большая часть работы по созданию анализаторов XML на первом этапе была сделана с помощью Java.
Так или иначе, интерес к XML распространился всюду в компьютерной промышленности, от огромных корпораций, таких как IBM и Microsoft, до неформальных рабочих групп на всех уровнях. Силами отдельных программистов и небольших групп сделаны многие существенные усовершенствования XML. Например, неформальной группе «XML Devian», организовавшейся на основе списка рассылки в Интернете, принадлежит заслуга создания упрощенного интерфейса API для XML, известного как SAX. Разработка этого проекта исходно велась на языке Java.