Книги в продаже (аннотация + содержание + отрывок)

Б. Брогден, К. Минник
ЭЛЕКТРОННЫЙ МАГАЗИН НА JAVA И XML. БИБЛИОТЕКА ПРОГРАММИСТА (+CD).
Цена: 98 р.

Источник: Издательский дом 'ПИТЕР'
Разделы: Разное (общие вопросы использования ПК, компьютерная архитектура, пользовательский интерфейс, компьютерные системы и информационные ситемы)
Подробнее: Информация от издателя (открывается в новом окне)
Заказ: Оформление покупки (открывается в новом окне)
      Цель этой книги — познакомить разработчиков с технологиями использования XML в программах на Java для электронной коммерции. Для того чтобы построить эффективный коммерческий сайт, мало пройти долгий путь обучения программированию на Java — недостающим звеном останется XML, и эта книга содержит подробное описание методики объединения этих тесно связанных технологий. В ней рассматриваются последние версии интерфейсов API сервлетов и JSP и текущий стандарт XML, и подробно описываются все этапы, необходимые для построения хорошо организованного, динамичного и успешного сайта. Авторы предполагают, что читатель на базовом уровне знаком с HTML, Java и web-серверами, и у него имеется доступ к компьютеру, на котором можно установить небольшой web-сервер, стандартный компилятор Java и другие служебные программы. Исходный код всех программ, в большом количестве иллюстрирующих материал книги, можно найти на прилагаемом компакт-диске.
     
     
     
      СОДЕРЖАНИЕ
     
     
      Благодарности
      Введение
      XML и Java
      Сервлеты Java и JSP-страницы
      Кому стоит купить эту книгу
      Что вам потребуется
      Что содержится в этой книге
      Что содержится на компакт-диске
      Соглашения, используемые в этой книге
      Об авторах
      От издательства
      Глава 1. Описание данных с помощью XML
      Введение в XML
      XML и электронная коммерция
      Области применения XML
      XML на стороне клиента
      XML на стороне сервера
      Использование XML для хранения данных
      Правила XML
      Определение правильно оформленного документа XML
      DTD и допустимость документа XML
      Объявления элементов
      Спецификация содержимого
      Объявления атрибутов
      Объявления сущностей
      Непроверенные символьные данные
      Разделы символьных данных
      Комментарии в XML
      Инструкции по обработке
      Схема XML
      Создание таблиц стилей с использованием XSL
      Использование XML в приложениях
      Модели программирования
      Программирование на основе DOM
      Программирование на основе SAX
      Краткий справочник по правилам XML
      Требования к правильно оформленному документу XML
      Элементы
      Применение
      Объявление
      Атрибуты
      Сущности
      Применение
      Объявления
      Глава 2. Каталог товаров на XML
      Назначение web-сайта
      Требования
      Ограничения
      Покупка готового пакета - это быстрее и дешевле
      Сборка приложения из стандартных частей - это лучше и дешевле
      Разработка сервера web-приложений - это быстрее и лучше
      Достоинства XML
      Доступность инструментальных средств
      SOAP
      Гибкость инструментальных средств
      Совместимость инструментальных средств
      Поддержка Unicode
      Каталог товаров и DTD
      Организация данных
      Написание DTD
      Доработка DTD
      Создание первого чернового варианта DTD
      Уточнение чернового варианта
      Элементы catalog, product_line и product
      Элементы description, paragraph и general
      Элементы price, quantity_in_stock и image
      Элементы onsale_date, time, clip и title
      Элемент shipping
      Финальная версия
      Принципы разработки DTD
      Репрезентативный образец данных
      Избегайте субтрактивного уточнения
      Упрощайте DTD
      Элементы или атрибуты?
      Рассуждайте в терминах реальных процессов
      Шаблоны XML
      Краткое описание
      Задача
      Контекст
      Причины
      Решение
      Пример
      Обсуждение
      Близкие по назначению шаблоны
      Известные примеры применения
      Стандартизация DTD
      Глава 3. Представление XML-каталога в сети
      Технологии представления
      Взаимодействие по протоколу HTTP
      Запрос браузера
      Ответ web-сервера
      API для сервлетов Java
      Классы и интерфейсы для сервлетов Java
      Обработка запросов сервлетами
      Простой пример сервлета
      Инициализация сервлета
      Генерирование ответа сервлетом
      Роль JavaBeans
      API для JSP-страниц
      Язык тегов JSP
      Пользовательские библиотеки тегов
      Обработка запросов JSP
      Встроенные переменные в JSP-страницах
      Организация каталога
      API для объектной модели документа
      Создание объектной модели документа для каталога товаров
      Интерфейс Node
      Интерфейс NodeList
      Интерфейс Document
      Индексация товаров
      Информация для представления каталога в сети
      Организация поиска по ключевым словам
      Форматирование описаний товаров
      Гибкость стилей
      Гибкость содержимого
      Глава 4. Заполнение корзины покупателя
      Проблема корзины покупателя
      Использование объектов класса HttpSession
      API для класса HttpSession
      Интерфейс HttpSessionBindingListener
      Корзина покупателя на языке Java
      Классы CartItem и ShoppingCart
      Класс CatalogServ
      Инициализация сервлета
      Методы doGet и doPost
      Метод doPageEnd
      Метод doPageMid
      Отображение полной информации о товаре
      Использование класса cartListener
      Класс CatalogBean
      Использование объектов CartItem и ShoppingCart
      Класс ProductFormatter
      Методы, вызываемые методом doFullItem
      Метод doListOutput
      Метод addText
      Глава 5. Оплата и подтверждение заказа
      Процесс оплаты
      Безопасность
      Доверие клиента
      Сбор информации о заказе
      Класс CustomerInfo
      Класс CreditInfo
      Класс Fullfilment
      Класс Authorization
      Класс Order
      Класс TestPaymentAuthorizer
      Класс ShippingCalculator
      Класс Emailer
      Страница CustomerInfo
      JSP-страница ShippingInfo
      JSP-страница CreditInfo
      JSP-страница ConfirmInfo
      Сервлет SubmitOrder
      JSP-страница Approved
      JSP-страница Declined
      Обновление информации о доставке
      JSP-страница OrderDateSelector
      JSP-страница SelectOrder
      JSP-страница ShowOrder
      JSP-страница UpdateFullfilment
      Глава 6. Обслуживание виртуального каталога
      Общие принципы редактирования каталога
      Объекты данных
      Класс Catalog
      Класс XMLWriter
      Класс ProductLine
      Класс Product
      Класс Image
      Класс Clip
      Класс DateTime
      Класс Util
      Код для представления информации пользователю
      Главная HTML-страница
      Класс Main сервлета
      JSP-страница Delete
      JSP-страница Edit
      Сервлет UpdateProduct
      Глава 7. Поиск своего покупателя с помощью опросов
      Обеспечение конфиденциальности
      Промышленные стандарты
      Общественные организации
      Создание системы опросов с помощью XML-сценария
      Определение последовательности вопросов
      Пример анкеты
      Сервлет управления опросом
      Код сервлета управления опросом
      Класс Interpreter
      Отображение вопросов
      Отображение введения
      Управление ветвлением опроса
      Обработка элемента Terminal
      Вспомогательные методы класса Interpreter
      Класс Recorder
      Варианты анализа анкеты
      Класс для создания файлов снимков
      Класс для создания таблиц
      Пример сервлета для просмотра результатов отчета
      Служебная библиотека документа XML
      Глава 8. Новости на сайте
      Разработка системы показа новостей
      Гибкость отображения
      Элементы текстов сообщений
      Расположение сообщений в зависимости от их новизны
      Информация для управления сообщениями
      Корневой элемент документа
      Простота ввода данных
      Минимальная нагрузка на сервер
      Система показа новостей
      Внешний вид web-страницы
      Класс NewsFormatter
      Использование класса NewsFormatter
      Код для сервлета TheNewsServ
      Пример JSP-страницы
      Добавление свежих новостей
      Сервлет CompanyNewsServ
      Класс NewsUpKeep
      Глава 9. Привлечение постоянных посетителей
      Источники новостей и стандарты
      Формат RSS
      NewsML и планы стандартизации
      Формат сообщений Moreover.com
      Получение файла XML
      Класс NewsModel
      Создание DOM
      Выбор заголовков
      Главный управляющий класс
      Классы для отображения заголовков
      Сервлет NetNewsServ
      Класс NetNewsBean
      Возможные усовершенствования
      Глава 10. Web-приложения на Java
      Спецификации в интерфейсе API сервлетов Java
      Развертывание web-приложения
      Определение web-приложения
      Структура папок
      Содержимое папки WEB-INF
      Дескриптор развертывания web-приложения
      Параметры конфигурации
      Архивные файлы web-приложения
      Следующее поколение
      Следующее поколение XML
      Протокол SOAP
      Проблемы масштабирования
      Сохранность информации о сеансе
      J2EE и Enterprise JavaBean
      Альтернативное решение - Spaces
      Приложение А. Интерфейсы API для сервлетов и JSP-страниц
      Параметры приложений
      Создание сервлета
      Методы класса HttpServlet
      Интерфейс ServletContext
      Получение информации о запросе
      Методы, добавляемые интерфейсом HttpServletRequest
      Методы, связанные с безопасностью
      Методы, связанные с сеансами и cookie
      Другие методы интерфейса ServletRequest
      Класс HttpSession и классы, связанные с cookie
      Методы класса HttpSession
      Методы интерфейса HttpSessionListener
      Методы класса Cookie
      Специальные объекты, связанные с запросом
      Формирование ответа пользователю
      Методы интерфейса ServletResponse
      Методы, добавляемые интерфейсом HttpServletResponse
      Выходные данные JSP-страниц
      Ошибки и исключения
      Ошибки и исключения JSP-страниц
      Коды состояний и ошибок HTTP
      Интерфейс API для JSP-страниц
      Класс PageContext
      Доступ к стандартным переменным
      Класс JspWriter
      Пакет javax.servlrt.jsp.tagext
      Класс BodyContent
      Приложение Б. Словарь терминов
      Алфавитный указатель
     
     
     
     
      ОТРЫВОК
     
     
      Глава 8Новости на сайте
     
      Разработка системы показа новостей
      Гибкость отображения
      Элементы текстов сообщений
      Расположение сообщений в зависимости от их новизны
      Информация для управления сообщениями
      Корневой элемент документа
      Простота ввода данных
      Минимальная нагрузка на сервер
      Система показа новостей
      Внешний вид web-страницы
      Класс NewsFormatter
      Использование класса NewsFormatter
      Код для сервлета TheNewsServ
      Пример JSP-страницы
      Добавление свежих новостей
      Сервлет CompanyNewsServ
      Класс NewsUpKeep
      Публикация новостей фирмы для привлечения посетителей
      Критерии дизайна системы показа новостей на XML
      Гибкое представление новостей с помощью сервлета
      Представление новостей с помощью JSP-страниц
      Простая система для добавления новостей
      Вы, наверное, встречали web-сайты небольших организаций, в которых самые свежие новости относятся к событиям полугодовой давности. Эти организации теряют прекрасный шанс привлечь внимание случайных посетителей. Может быть, так происходит потому, что люди, находящиеся в курсе происходящих в фирме событий, не общаются с web-мастером своей организации или просто страницы с новостями слишком неудобно редактировать. Мы, естественно, собираемся предложить вам решение, основанное на технологии XML, которое мы подробно обсуждаем в этой главе.
      Разработка системы показа новостей
      Мы хотим предложить посетителям нашего web-сайта последние новости фирмы в компактном и удобном для чтения формате. Помните, что обычно в вашем распоряжении имеется всего лишь несколько секунд, чтобы привлечь внимание к вашему сайту случайного посетителя, который просто "прогуливается" по сети. Мы хотим, чтобы посетителю было понятно, как найти на сайте подробную информацию, если его что-то заинтересовало, как войти в систему каталога и, будем надеяться, что-нибудь приобрести.
      Если вы подумаете, какими характеристиками должна обладать система показа новостей, в ваш список, вероятно, войдут следующие пункты:
      гибкий способ отображения;
      удобный ввод данных;
      минимальная нагрузка на сервер.
      Наряду с обеспечением этих свойств при разработке системы вы, в первую очередь, должны будете решить, какие элементы и атрибуты XML использовать для представления данных, затем сделать выбор между моделями DOM и SAX (механизмами отображения данных для пользователя) и, наконец, определить механизм добавления новых сообщений.
      Гибкость отображения
      Поскольку мы решили остановиться на XML как на исходной среде хранения данных, мы можем обеспечить гибкость отображения посредством хранения данных, необходимых для всех доступных способов представления информации. Мы имеем в виду следующее: вероятно, вы замечали, что на разных коммерческих web-сайтах новости компании представлены обычно одним из трех способов:
      заголовки новостей со ссылкой на полный текст;
      несколько наиболее интригующих строк со ссылкой на полный текст;
      полный текст сообщения.
      Существуют и другие форматы сообщений: электронный информационный бюллетень, печатная копия информационного бюллетеня, корпоративные сообщения. Для этих форматов также применимы описанные выше три способа (заголовок, краткое сообщение и полный текст). Первая наша задача при разработке системы отображения новостей - создать такой документ XML, который поддерживал бы все три формата.
      Элементы текстов сообщений
      Хотя в области искусственного интеллекта и понимания компьютером естественных языков сделаны большие успехи, никто не рассчитывает, что компьютер напишет хороший заголовок, проанализировав текст сообщения. Поэтому приходится согласиться с тем, что нужен человек, который для каждого способа представления новостей создаст отдельный заголовок. В сообщении обычно указывается дата, а иногда рядом еще и место, где произошло то событие, о котором идет речь, например: "Остин, Техас, 1 января 2000". Эта задача тоже должна выполняться человеком.
      Некоторые сообщения очень выигрывают, когда сопровождаются графикой, звуковыми клипами или ссылками на другие сайты, поэтому продумайте, как сконструировать документ XML, чтобы его можно было дополнить различными элементами, способствующими увеличению привлекательности страницы новостей. Мы решили, что было бы слишком сложно и неудобно снабжать систему показа новостей в нашем примере всеми возможными "украшениями". Поэтому мы будем хранить тексты сообщений для второго и третьего способов (краткое и полное сообщение), используя тег XML <[[CDATA...]]>.
      Поскольку анализаторы XML не пытаются анализировать текст, содержащийся внутри раздела CDATA, в этот раздел вы можете поместить любую разметку HTML, не сбивая с толку анализатор.
      Элементы, содержащие дату, заголовок, краткое сообщение и полный текст, показаны в листинге 8.1.
      Листинг 8.1. Дата, заголовок, короткое и полное сообщения (thenews.xml)
      Austin, TX, Jun 14 2000
      Best Seller at a Great Price
     
            Dryer Lint Art
      at 50% off the retail price.]]>
     

     
            monumental
      recreation of famous monuments in that most flexible of craft materials, dryer lint. Even though you may never attempt major constructions like the Statue of Liberty project documented in the final chapter, your projects will benefit by a study of this famous creation. Includes UML diagrams.]]>
     

      Другим аспектом гибкости является способность выборочно представлять сообщения в соответствии с темой, интересующей посетителя. Предполагая, что спектр возможных интересов посетителей сайта XMLGifts.com очень широк, мы хотим показать каждому посетителю те новости, которые связаны с его излюбленной темой, и в том месте сайта, куда он с наибольшей вероятностью заглянет. В такой структуре неизбежны перекрывающиеся области; например, книга о музыкальной группе может оказаться интересной как для покупателей книг, так и для покупателей музыкальных компакт-ди
      сков. Следовательно, каждое сообщение должно быть снабжено одной или несколькими пометками, которые указывают, к каким тематическим категориям можно его отнести; а формат представления новостей должен допускать переключения между различными темами сообщений.
      Для того чтобы пометить сообщение и отнести его тем самым к определенной категории, мы можем использовать элемент или атрибут. Следуя советам, приведенным в разделе "Элементы или атрибуты?" главы 2, можно заключить, что в данном случае лучше использовать атрибуты, так как тема сообщения - это данные о содержимом элемента, и мы предполагаем, что количество тем сообщений будет ограниченным.
      Расположение сообщений в зависимости от их новизны
      Самые свежие новости должны располагаться первыми. Так как документ XML автоматически сохраняет порядок следования элементов, новые элементы должны добавляться к началу документа. Более того, было бы неплохо предусмотреть возможность отображения только самых свежих новостей. Следовательно, нам нужен способ представления "возраста" сообщений.
      После долгих колебаний между многочисленными способами представления даты, которые позволили бы нам отображать только недавние сообщения, мы остановились на использовании простого целочисленного представления количества дней, прошедших с 1 января 1970 года. Для этого значение типа long, возвращаемое методом System.currentTimeMillis(), делится на количество миллисекунд в сутках, и полученное число становится значением атрибута timestamp тега Newsitem. Альтернативные варианты - использование классов Java DateFormat или Calendar - были отвергнуты, так как они подразумевают создание бо
      льшого количества объектов, а мы хотим, чтобы показ новостей создавал минимальную нагрузку на сервер.
      Информация для управления сообщениями
      Поскольку вы или ваши служащие будут обновлять страницу новостей в режиме подключения к сети, было бы полезно отслеживать, кто какое сообщение написал. (Например, чтобы знать, кто должен получать нагоняй за допущенную ошибку.) Для этого используется атрибут элемента . Сервлет обновления сообщений, описанный в разделе "Добавление свежих новостей" этой главы, обладает простым механизмом контроля доступа, в котором используются имя автора и пароль; этот то самое имя автора, которое становится значением атрибута author.
      Чтобы создать документ HTML, в котором заголовок содержит ссылку на полную версию текста, нужно использовать уникальный идентификатор. Мы, например, выбрали простейший вариант: при создании каждого сообщения ему присваивается серийный номер, который и становится значением его атрибута id.
      Корневой элемент документа
      Мы отслеживаем некоторые параметры, используемые во всем файле, с помощью атрибутов, которые задаются в корневом элементе документа, Newsfile. Очередной атрибут id - это просто nextid. Присваивание нового значения каждому следующему атрибуту nextid является обязанностью программы, добавляющей новые сообщения или, в случае редактирования в автономном режиме, автора элемента Newsitem.
      Корневой элемент также является подходящим местом для хранения атрибутов, связанных с различными заданными по умолчанию параметрами отображения. В приведенном ниже примере имеется только один такой атрибут, longtemplate, который идентифицирует заданный по умолчанию файл - шаблон HTML, используемый для форматирования сообщений.
      В листинге 8.2 показано, как используются все перечисленные теги.
      Листинг 8.2. Элемент с одним элементом (thenews.xml)
     
     
     
     
      Your Favorite Music Now Available
      Austin, Feb 1, 2000
     
      It's Dot Com Enough for Me.]]>
     

     
     
      It's Dot Com Enough For Me.
      now in stock!


     

All those great songs created during breaks in all-night coding sessions - now recorded by top Silicon Valley garage bands on our private label. It's Dot Com Enough for Me will have you singing along - or maybe laughing till the Jolt cola spurts out your nose. Seventeen songs from geeks at Sun, Microsoft, Apple, Cisco, and other top tech outfits.

]]>
     

     

     

      Простота ввода данных
      Поскольку мы выбрали простой формат новостей, показанный в листинге 8.2, ввод данных осуществляется тоже достаточно просто. Система, основанная на формах HTML и сервлетах, описанная в разделе "Добавление свежих новостей" этой главы, позволяет добавлять новые сообщения через Интернет.
      Тем не менее легкость ввода данных никак не связана с контролем за качеством самого текста. Для достижения лучших результатов следует убедиться, что темы, согласно которым классифицируются сообщения, и стиль текста всегда согласуются между собой. Также необходимо составить список требований и рекомендаций по составлению текстов сообщений и убедиться в том, что эти списки доступны всем служащим фирмы, уполномоченным размещать сообщения на сайте.
      Минимальная нагрузка на сервер
      Поскольку мы надеемся, что посещаемость нашего сайта будет достаточно велика, мы хотим, чтобы отображение главной страницы выполнялось по возможности просто, то есть чтобы страница быстро загружалась, а ее генерирование не требовало больших затрат ресурсов со стороны сервера. Рассмотрим следующие альтернативные варианты отображения новостей.
      Статические страницы новостей (Static News Pages). Статические страницы быстро загружаются, и главная страница благодаря XML может формироваться заново при появлении нового сообщения. Однако использование статических страниц исключает возможность их индивидуальной настройки для постоянных посетителей.
      Страницы новостей, генерируемые сервлетами (Servlet-Generated News Pages). Сервлеты Java могут генерировать все, что потребуется; при этом предполагается, что они используют файлы с шаблонами HTML для регулировки многочисленных атрибутов внешнего вида сайта.
      JSP-страницы (JavaServer Pages). Преимущество JSP-страниц перед сервлетами заключается в том, что для изменения внешнего вида страницы web-дизайнеру не нужно уметь программировать на Java.
      При выборе методов обработки следует сделать выбор между моделями SAX и DOM, а также между анализаторами XML, проверяющими либо не проверяющими допустимость документа. Модель SAX подразумевает работу анализатора для доступа к каждой странице. При использовании модели DOM доступ к страницам осуществляется быстрее, но зато все приходится хранить в памяти. Предполагая, что количество новостей будет не больше нескольких сотен, затраты ресурсов на хранение всей модели DOM в памяти не окажутся слишком значительными, поэтому мы считаем, что в данном случае модель D
      OM является безусловно оптимальным вариантом.
      Мы не видим никаких причин в использовании анализатора, проверяющего допустимость документа. Так как новые сообщения будут создаваться автоматически, вероятность ошибки форматирования весьма невелика. Кроме того, вряд ли ошибки, связанные с недопустимостью документа, могут смутить пользователя.
      Система показа новостей
      Окончательный вариант устройства системы показа новостей изображается блок-схемой, приведенной на рис. 8.1. Обработка информации, происходящая на сервере, представлена в правой части блок-схемы, а обработка в автономном режиме - в левой части. Исходный файл XML может редактироваться как в режиме подключения к сети, так и автономно, но предпочтительным является режим подключения, так как он позволяет автоматически задавать атрибуты id и timestamp.
     

Электронный магазин на Java и XML. Библиотека программиста (+CD). / Б. Брогден, К. Минник - СПб: Питер, 2002. - 400 с.

Экономика и управление | Право/a> | Бухгалтерский учет и налоги |