Электронный магазин на Java и XML




Глава 3. Представление XML-каталога в сети


    Глава 3. Представление XML-каталога в сети
    Глава 3. Представление XML- каталога в сети В этой главе мы приводим обзор интерфейсов API (Application Programming Interface — интерфейс прикладных программ) для сервлетов Java, для JSP-страниц и...
    Технологии представления
    Технологии представления При создании коммерческого сайта в Интернете программисты, пишущие на языке Java, имеют очень широкий выбор различных вариантов. Все эти варианты, однако, ограничены возмо...
    Взаимодействие по протоколу HTTP
    Взаимодействие по протоколу HTTP Консорциум W3C ( www.w3.org ) поддерживает протокол HTTP 1.1 (это модификация предыдущей версии, HTTP 1, у которой было много недостатков) в качестве текущего стан...
    Запрос браузера
    Запрос браузера Сообщение-запрос браузера, отсылаемое на сервер, начинается с заголовка, состоящего из одной или нескольких строк ASCII-символов, каждая из которых заканчивается символом crl f (ca...
    Листинг 3.1. Сообщение, пересылаемое...
    Листинг 3.1. Сообщение, пересылаемое браузером на сервер методом POST [Все представленные в книге тексты программ можно найти на сайте издательства по адресу www.piter.com. — Примеч. ред.] POST /s...
    Ответ web-сервера
    Ответ web-сервера Ответное сообщение web-сервера на запрос браузера также обязательно содержит заголовок. Заголовок начинается со строки состояния, в которой указан используемый протокол, численны...
    API для сервлетов Java
    API для сервлетов Java Технология сервлетов Java используется на самом базовом уровне web-сервера и важна для всех Java-функций сервера. Технология сервлетов подходит для выполнения вообще всех фу...
    Классы и интерфейсы для сервлетов Java
    Классы и интерфейсы для сервлетов Java Пакеты javax.servlet и javax.servlet.http содержат классы и интерфейсы, используемые при создании сервлетов. Пакет javax.servlet в основном содержит обобщенн...
    Таблица 3.1. Интерфейсы пакета javax.setvlet
    Таблица 3.1. Интерфейсы пакета javax.setvlet Интерфейс Описание Servlet Этот интерфейс определяет методы, которые должны быть реализованы в каждом сервлете. Интерфейс Servlet реализуется классом G...
    Таблица 3.2. Классы пакета javax.servlet
    Таблица 3.2. Классы пакета javax.servlet Класс Описание GenericServlet Этот класс обеспечивает минимально необходимую функциональность ServletInputStream Класс для чтения потока двоичных данных из...
    Таблица 3.3. Интерфейсы пакета javax.servlet.http
    Таблица 3.3. Интерфейсы пакета javax.servlet.http Интерфейс Описание HttpServletRequest Это расширение интерфейса ServletRequest добавляет методы, специфические для запросов HTTP, например getCook...
    Таблица 3.4. Классы пакета javax.servlet.http
    Таблица 3.4. Классы пакета javax.servlet.http Класс Описание HttpServlet Это абстрактный класс, расширениями которого являются все используемые web-сервлеты Cookie Эти объекты используются, чтобы...
    Обработка запросов сервлетами
    Обработка запросов сервлетами В обычных коммерческих приложениях запросы пользователей обрабатываются в следующей последовательности. Данные, передаваемые в запросе, используются для создания объе...
    Простой пример сервлета
    Простой пример сервлета Обычное приложение с сервлетами включает в себя класс, который расширяет класс HttpServlet и реализует методы, необходимые для обработки различных типов запросов, адресован...
    Листинг 3.2. Простой сервлет...
    Листинг 3.2. Простой сервлет, обрабатывающий запрос GET (DateDemo.java) import java.io.*; import java.util.* ; import javax.servlet.*; import javax.servlet.http.*; public class DateDemo extends Ht...
    Инициализация сервлета
    Инициализация сервлета Когда контейнер сервлета загружает код и создает экземпляр класса сервлета, API гарантирует, что первым будет вызван метод init и что он будет выполнен прежде, чем начнется...
    Листинг 3.3. Задание параметров...
    Листинг 3.3. Задание параметров инициализации сервлетов (web.xml) web-app servletservlet-namecattest/servlet-name servlet-classcom.XmlEcomBook.catalog.CatalogTestServ /servlet-class /servlet servl...
    Генерирование ответа сервлетом
    Генерирование ответа сервлетом Все ресурсы, необходимые для контроля за созданием ответа, содержатся в интерфейсах ServletResponse и HttpServletResponse. Например, приведенные ниже обращения к мет...
    Роль JavaBeans
    Роль JavaBeans Огромный успех языка Java обусловлен его простой архитектурой, основанной на компонентах JavaBeans. Хотя сначала планировалось использовать их как компоненты графического интерфейса...
    API для JSP-страниц
    API для JSP-страниц Многочисленные попытки разработать системы, позволяющие включать в статический контекст HTML-страницы динамические данные с помощью специальных тегов, встроенных в код HTML, ос...
    Язык тегов JSP
    Язык тегов JSP В приведенном ниже коде JSP-страницы теги JSP начинаются с символов *= и заканчиваются символами %. После компиляции в Java-класс запрос, обращенный к этой JSP-странице, выдаст обыч...
    Таблица 3.5. Теги JSP, использующие...
    Таблица 3.5. Теги JSP, использующие символы % (старый стиль) Тег Назначение Пример %-- --% Комментарии %--это комментарий--% %= % ...
    Таблица 3.6. Теги JSP, согласованные...
    Таблица 3.6. Теги JSP, согласованные с правилами XML (новый стиль) Тег JSP Описание jsp: include / Включает в страницу текст из указанного файла jsp: forward / Переадресует запрос сервлету, д...
    Пользовательские библиотеки тегов
    Пользовательские библиотеки тегов Удобным свойством интерфейса API для JavaServer Pages является возможность определять пользовательские библиотеки тегов. Это очень мощное средство, позволяющее за...
    Обработка запросов JSP
    Обработка запросов JSP Ниже описана последовательность событий, происходящих при обработке запроса, обращенного к JSP. Запрос, обращенный к JSP, направляется web-сервером к процессору JSP (JSP eng...
    Встроенные переменные в JSP-страницах
    Встроенные переменные в JSP-страницах В табл. 3.7 перечислены встроенные переменные, которые доступны в JSP-страницах по умолчанию....
    Таблица 3.7. Встроенные переменные в JSP-страницах
    Таблица 3.7. Встроенные переменные в JSP-страницах Имя переменной Тип Описание request Объект класса, являющегося подклассом javax.servlet.ServletRequest Представляет запрос пользователя response...
    Организация каталога
    Организация каталога Каталог товаров, созданный нами в виде документа XML, организован последовательно. Однако мы хотели бы, чтобы пользователи имели возможность более гибкого доступа к элементам...
    API для объектной модели документа
    API для объектной модели документа В этой книге мы в основном будем использовать набор инструментальных средств JAXP (Java API for XML Parsing — интерфейс прикладных программ Java для анализа XML)...
    Создание объектной модели документа для каталога товаров
    Создание объектной модели документа для каталога товаров Как мы говорили в главе 1, исходное создание объектной модели документов на Java очень просто, поскольку вся работа выполняется анализаторо...
    Листинг 3.4. Пример синтаксического...
    Листинг 3.4. Пример синтаксического анализа документа (TheCatalog.java) ] import javax.xml.parsers.* ; import org.xml.sax.* ; import org.w3c.dom.* ; public class TheCatalog { org.w3c.dom.Document...
    Интерфейс Node
    Интерфейс Node Исходный набор методов для всего пакета org.w3c.dom обеспечивается интерфейсом Node. В этом пакете имеется 13 интерфейсов, производных от интерфейса Node, которые представляют разли...
    Таблица 3.8. Методы интерфейса Node
    Таблица 3.8. Методы интерфейса Node Метод Возвращаемое значение Описание getNodeName NodeName Возвращаемое значение — строка, представляющая имя Node; интерпретация зависит от типа узла getNodeVal...
    Листинг 3.5. Код XML для одного товара (catalog.xml)
    Листинг 3.5. Код XML для одного товара (catalog.xml) product id=bk0022 keywords=gardening, plants nameGuide to Plants/name description paragraph italicsEverything/italics you've ever wanted to kno...
    Интерфейс NodeList
    Интерфейс NodeList В этом интерфейсе имеются только два метода: int getLength() — возвращает текущее количество узлов, которое может быть равным нулю; Node item ( int n ) — возвращает ссылку на n-...
    Интерфейс Document
    Интерфейс Document Объект Java, который инкапсулирует весь документ XML, реализует расширение Document интерфейса Node. Большая часть методов этого интерфейса связана с созданием или модифицирован...
    Индексация товаров
    Индексация товаров Пользуясь приведенным выше кратким обзором интерфейсов Java, дающих доступ к объектной модели документа, мы можем исследовать вопрос о создании различных структур данных, которы...
    Листинг 3.6. Метод scanCatalog...
    Листинг 3.6. Метод scanCatalog инициализирует различные объекты Hashtable (theCatalog.java) public void scanCatalog(){ Element rE = catDoc.getDocumentElement(); // the root rE.normalize(); product...
    Листинг 3.7. Метод addProdByKey (TheCatalog.java)
    Листинг 3.7. Метод addProdByKey (TheCatalog.java) // разбивает строку keywds на отдельные ключевые слова, // затем создает вектор v или добавляет элемент рЕ к уже // существующему вектору в prodBy...
    Информация для представления каталога в сети
    Информация для представления каталога в сети Вообще говоря, перед тем как каталог отображается в окне браузера пользователя, содержащаяся в нем информация проходит несколько этапов обработки. Осно...
    Организация поиска по ключевым словам
    Организация поиска по ключевым словам Поскольку мы уже проделали некоторую работу по кодированию ключевых слов для каждого товара в каталоге, мы, конечно, хотели бы, чтобы пользователю было удобно...
    Листинг 3.8. Код HTML для создания...
    Листинг 3.8. Код HTML для создания раскрывающегося списка ключевых слов centerh2Select a KeyWord/h2 form raethod=POST action=http://localhost/servlet/cattest input type=HIDDEN name=action value=ke...
    Рис. З.1. Форма для выбора ключевого слова
    Рис. З.1. Форма для выбора ключевого слова Чтобы инкапсулировать функции форматирования каталога в один класс, который можно было бы использовать как с сервлетами, так и с JSP-страницами, мы напис...
    Листинг 3.9. Метод, форматирующий...
    Листинг 3.9. Метод, форматирующий строковый массив в раскрывающийся список (Catalog Bean.java) public String doKeywordSelect(String alias ){ StringBuffer sb = new StringBuffer( form method=\POST\...
    Форматирование описаний товаров
    Форматирование описаний товаров Пытаясь решить, как должны выглядеть описания товаров, мы пришли к выводу, что критериями выбора способа представления должны являться: гибкость стилей — существенн...
    Гибкость стилей
    Гибкость стилей Самым очевидным инструментом для достижения гибкости в применении различных стилей к документу являются каскадные таблицы стилей. С помощью CSS задаются параметры стиля различных к...
    Листинг 3.10. Пример таблицы стилей (catalog.css)
    Листинг 3.10. Пример таблицы стилей (catalog.css) body{font-family:Arial font-size:10.0pt} h1{font-size:30pt; font-family:Arial; color:red ;} h2{font-size:20pt; font-family:Arial; color:navy; } p...
    Гибкость содержимого
    Гибкость содержимого Чтобы добиться гибкости внутреннего содержимого страницы, мы собираемся использовать форматирующий класс с именем ProductFormatter Этот класс выдает данные элемента XML produc...
    Листинг 3.11. Метод doOutput (productFormatter.java)
    Листинг 3.11. Метод doOutput (productFormatter.java) public String doOutput( Element el ){ StringBuffer sb = new StringBuffer( ); String pid = null ; if( aLink != null ){ pid = id= + el.getAttribu...
    Листинг 3.12. Описание отдельного...
    Листинг 3.12. Описание отдельного товара (элемента product) из каталога catalog.xml product id=bk0022 keywords='gardening, plants nameGuide to Plants/name description paragraph italicsEverything/i...
    Листинг 3.13. Метод setlmtialSelected...
    Листинг 3.13. Метод setlmtialSelected из CatalogBean (CatalogBean.java) public boolean setInitialSelect(String s){ boolean ret = false ; if( s.equals(all) ){ selected = cat.getAllProduct(); ret =...
    Листинг 3.14. Метод doPost сервлета...
    Листинг 3.14. Метод doPost сервлета, отображающий весь каталог (CatalogTestServ.java) public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { re...
    Листинг 3.15. Метод completeCatalog...
    Листинг 3.15. Метод completeCatalog для создания полного каталога товаров (CatalogTestServ.java) public void completeCatalog( PrintWriter out ){ CatalogBean cb = new CatalogBean(); out.println(h2C...
    Листинг 3.16. Первая часть генерируемой...
    Листинг 3.16. Первая часть генерируемой сервлетом HTML-страницы html headtitleCatalogTestServ Output/title link rel=stylesheet href= http //localhost/XmlEcommBook/catalog.css type=text/css media=s...
    Рис. 3.2. Отображение каталога товаров
    Рис. 3.2. Отображение каталога товаров В следующей главе мы расскажем, как можно расширить функциональность классов CatalogBean и ProductFormatter для создания представлений, необходимых при работ...









Начало        




Книжный магазин