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




Глава 4. Заполнение корзины покупателя


    Глава 4. Заполнение корзины покупателя
    Глава 4. Заполнение корзины покупателя Вы наверняка хотели бы, чтобы посетители вашего web-сайта могли легко находить интересующие их товары, добавлять их в корзину и производить оплату, в соответ...
    Проблема корзины покупателя
    Проблема корзины покупателя Для посетителей виртуального магазина интуитивно понятна аналогия корзины покупателя (shopping cart). Поэтому им кажется, что все должно происходить так же, как и в реа...
    Использование объектов класса HttpSession
    Использование объектов класса HttpSession Процессор сервлетов Java (который иногда называют контейнером сервлетов) управляет коллекцией объектов, реализующих интерфейс HttpSession. Наша программа...
    API для класса HttpSession
    API для класса HttpSession Интерфейс HttpSession содержится в пакете javax.sevlet.http. В табл. 4.1 перечислены методы этого интерфейса согласно версии API 2.2 сервлетов....
    Таблица 4.1. Методы класса HttpSession
    Таблица 4.1. Методы класса HttpSession Метод Возвращаемое значение Описание getAttribute (String name) Object Возвращает подключенный к сеансу объект с заданным именем name или null, если не найде...
    Интерфейс HttpSessionBindingListener
    Интерфейс HttpSessionBindingListener Как вспомогательное средство для управления системными ресурсами, которые могут быть задействованы в сеансах, и как средство отладки в API сервлетов предусмотр...
    Корзина покупателя на языке Java
    Корзина покупателя на языке Java В этой главе мы создадим сервлет, функции которого ограничены отображением каталога и оформлением заказа на товары. В реальном коммерческом сайте эти функции соста...
    Классы Cartltem и ShoppingCart
    Классы Cartltem и ShoppingCart Минимальным требованием к объекту, представляющему товар в корзине покупателя, является наличие идентификатора данного товара и количества заказанных экземпляров. На...
    Листинг 4.1. Класс Cartltem (cartltem.java)...
    Листинг 4.1. Класс Cartltem (cartltem.java) [Все представленные в книге тексты программ можно найти на сайте издательства по адресу www.piter.com . — Примеч. ред. ] package com.XmlEcomBook.catalog...
    Листинг 4.2. Начало кода класса...
    Листинг 4.2. Начало кода класса ShoppingCart (ShoppingCart.java) package com.XmlEcomBook.catalog; import java.io.*; import java.util.* ; public class ShoppingCart implements java.io.Serializable {...
    Листинг 4.3. Остальная часть кода...
    Листинг 4.3. Остальная часть кода класса ShoppingCart (ShoppingCart.java) // remove an item from the cart by product id public CartItem removeById( String s ){ CartItem ret = (CartItem)itemsById.g...
    Класс CatalogServ
    Класс CatalogServ Класс, который мы написали для отображения элементов каталога и манипулирования корзиной покупателя (классом ShoppingCart), называется CatalogServ. Здесь мы используем усовершенс...
    Рис. 4.1. Отображение полного...
    Рис. 4.1. Отображение полного каталога с помощью класса CatalogServ Перед тем как углубляться в изучение исходного кода CatalogServ, рассмотрим некоторые другие представления, которые он генерируе...
    Рис. 4.2. Отображение раскрывающегося списка ключевых слов
    Рис. 4.2. Отображение раскрывающегося списка ключевых слов В табл. 4 2 представлен перечень команд отображения (значений параметра action), которые определяют ответ сервлета CatalogServ Команды, у...
    Таблица 4.2. Команды, распознаваемые сервлетом CatalogServ
    Таблица 4.2. Команды, распознаваемые сервлетом CatalogServ Команда (параметр action) Дополнительные параметры Отображение showcatalog Параметр select = all Таблица со списком всех товаров (см. рис...
    Инициализация сервлета
    Инициализация сервлета Как видно из листинга 4.4, в классе CatalogServ имеется некоторое количество статических переменных, которые определяют различные ресурсы Мы приводим типичные значения этих...
    Листинг 4.4. Статические переменные...
    Листинг 4.4. Статические переменные и метод mit в сервлете CatalogServ (CatalogServ.java) package com.XmlEcomBook.catalog; import java.io.*; import java.util.* ; import javax.servlet.*; import jav...
    Методы doGet и doPost
    Методы doGet и doPost Все запросы, выполняющиеся методом GET, просто перенаправляются методу doPost, как показано в листинге 4.5. Метод doPost объединяет стандартный раздел HEAD файла HTML и резул...
    Листинг 4.5. Методы doGet и doPost (CatalogServ.java)
    Листинг 4.5. Методы doGet и doPost (CatalogServ.java) public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost( req, resp ); } public void...
    Метод doPageEnd
    Метод doPageEnd В этом примере метод doPageEnd (листинг 4.6) просто создает набор активных ссылок в нижней части страницы. Ссылки на различные варианты представления каталога присутствуют всегда,...
    Листинг 4.6. Метод doPageEnd (CatalogServ.java)
    Листинг 4.6. Метод doPageEnd (CatalogServ.java) public void doPageEnd( HttpServletRequest req, HttpServletResponse resp, PrintWriter out, HttpSession session ){ ShoppingCart cart = (ShoppingCart)s...
    Метод doPageMid
    Метод doPageMid Метод doPageMid управляет ответом сервлета на запрос пользователя. Значение параметра action определяет выбор метода представления, который, в свою очередь, генерирует требуемое пр...
    Листинг 4.7. Метод doPageMid (CatalogServ.java)
    Листинг 4.7. Метод doPageMid (CatalogServ.java) public void doPageMid( HttpServletRequest req, HttpServletResponse resp, PrintWriter out, HttpSession session ){ String action = req.getParameter(ac...
    Листинг 4.8. Методы doKeywordSelect...
    Листинг 4.8. Методы doKeywordSelect и completeCatalog (CatalogServ.java) public void doPageMid( HttpServletRequest req, HttpServletResponse resp, PrintWriter out, HttpSession session ){ String act...
    Листинг 4.9. Метод productLineCatalog (CatalogServ.java)
    Листинг 4.9. Метод productLineCatalog (CatalogServ.java) public void productLineCatalog( PrintWriter out, String line ){ CatalogBean cb = new CatalogBean(); out.println(h2 + line + Catalog/h2); ou...
    Рис. 4.3. Отображение одной серии товаров
    Рис. 4.3. Отображение одной серии товаров В методе keywordCatal og (листинг 4.10) применяется тот же принцип, но выбор происходит на основе переменной keyword, которая передается в качестве параме...
    Листинг 4.10. Метод keywordCatalog...
    Листинг 4.10. Метод keywordCatalog отображает только элементы, содержащие выбранное ключевое слово (CatalogServ.java) public void keywordCatalog( PrintWriter out, String keyword ){ CatalogBean cb...
    Отображение полной информации о товаре
    Отображение полной информации о товаре Метод doShowProduct класса Catal ogServ отвечает за отображение полной информации об одном конкретном товаре. Существует несколько вариантов формата этого от...
    Рис. 4.4. Отображение полной информации...
    Рис. 4.4. Отображение полной информации о товаре вместе с его изображением...
    Рис. 4.5. Информация о товаре без его изображения
    Рис. 4.5. Информация о товаре без его изображения Если товар уже был заказан покупателем и находится в корзине, то страница с информацией о нем включает поле текущего количества заказанных экземпл...
    Листинг 4.11. Метод doShowProduct...
    Листинг 4.11. Метод doShowProduct, который отображает информацию о товаре и позволяет заказывать товар (CatalogServ.java) public void doShowProduct( HttpServletRequest req, HttpServletResponse res...
    Листинг 4.12. Метод doShowCart (catalogServ.java)
    Листинг 4.12. Метод doShowCart (catalogServ.java) public void doShowCart( HttpServletRequest req, HttpServletResponse resp, PrintWriter out, HttpSession session, String action ){ ShoppingCart cart...
    Использование класса carttistener
    Использование класса carttistener Поскольку процессор сервлетов во многом определяет поведение объекта HttpSession, решение проблем отладки, связанных с сеансами, может оказаться непростым делом....
    Листинг 4.13. Внутренний класс...
    Листинг 4.13. Внутренний класс CartListener (CatalogServ.java) class CartListener implements HttpSessionBindingListener { long created ; public void valueBound( HttpSessionBindingEvent evt ){ crea...
    Класс CatalogBean
    Класс CatalogBean Как вы уже, вероятно, заметили при обсуждении методов класса CatalogServ, вся основная работа по созданию форматированного отображения информации о товарах выполняется методами к...
    Использование объектов Cartltem и ShoppingCart
    Использование объектов Cartltem и ShoppingCart Как показано в листинге 4.14, CatalogBean создает объект Cartltem для некоторого товара на основе информации, содержащейся в экземпляре cat класса Th...
    Листинг 4.14. Методы CatalogBean...
    Листинг 4.14. Методы CatalogBean, связанные с объектом ShoppingCart (CatalogBean.java) public CartItem createCartItem( String id ){ Element pE = cat.getProductElByID( id ); return new CartItem( pE...
    Рис. 4.6. Отображение содержимого корзины покупателя
    Рис. 4.6. Отображение содержимого корзины покупателя Сложное форматирование при представлении полной информации о товаре (как показано на рис. 4 4 и 4 5) контролируется методом doFuTIItem, код кот...
    Листинг 4.15. Метод doFullItem (CatalogBean.java)
    Листинг 4.15. Метод doFullItem (CatalogBean.java) // we are in a table.. /table public void doFullItem( String id, PrintWriter out, ShoppingCart cart, String alias ){ pf = new ProductFormatter( fu...
    Класс ProductFormatter
    Класс ProductFormatter Мы добавили множество методов в класс ProductFormatter, описанный в главе 3. Вообще говоря, эти методы просто расширяют те возможности, которыми уже обладал этот класс. В ли...
    Листинг 4.16. Статические переменные...
    Листинг 4.16. Статические переменные класса ProductFormatter (ProductFormatter.java) package com.XmlEcomBook.catalog; import java.util.* ; import java.io.* ; import org.xml.sax.* ; import org.w3c....
    Листинг 4.17. Начало кода методов...
    Листинг 4.17. Начало кода методов и переменных экземпляра (Product Formatter.java) String[] elem, style ; String resourcePath ; String aLink ; int linkN ; // when aLink is supplied, it should be s...
    Методы, вызываемые методом doFullItem
    Методы, вызываемые методом doFullItem Теперь рассмотрим методы, которые используются для полного описания товара. Эти методы, приведенные в листинге 4.18, вызываются методом doFullItem класса Cata...
    Листинг 4.18. Методы, используемые...
    Листинг 4.18. Методы, используемые для полного описания товара (Product Formatter.java) public String doImageTag( Element el ){ NodeList nl = el.getElementsByTagName( image ); int ct = nl.getLengt...
    Метод doListOutput
    Метод doListOutput Метод doListOutput (листинг 4.19) вызывается из CatalogBean для создания объекта типа String, содержащего форматированные данные по отдельному товару. Этот метод используется пр...
    Листинг 4.19. Метод doListOutput (ProductFormatter.java)
    Листинг 4.19. Метод doListOutput (ProductFormatter.java) // создается строка с данными об отдельном товаре, // используемая во многих листингах // внешний вид определяется содержимым elem style //...
    Метод addText
    Метод addText Метод addText, приведенный в листинге 4.20, вызывается некоторыми другими методами из класса ProductFormatter. Ему передается объект StringBuffer, в который добавляется текст. Параме...
    Листинг 4.20. Метод addText (ProductFormatter.java)
    Листинг 4.20. Метод addText (ProductFormatter.java) // заметим, что в большинстве случаев нам нужно // значение узла private void addText(StringBuffer sb, String name, Element el ){ Object obj = f...
    Листинг 4.21. Различные методы...
    Листинг 4.21. Различные методы, вызываемые методом addText (ProductFormatter.java) // Элемент е - это товар product private void addID(StringBuffer sb, Element e ){ String id = e.getAttribute(id )...
    Листинг 4.22. Служебный метод...
    Листинг 4.22. Служебный метод getChildrenText (ProductFormatter.java) private String getChildrenText( Element e ){ StringBuffer sb = new StringBuffer(); NodeList nl = e.getChildNodes(); for( int i...
    Листинг 4.23. Метод, создающий...
    Листинг 4.23. Метод, создающий теги изображения (ProductFormatter.java) private void addImageTag( StringBuffer sb, Element img ){ String format = img.getAttribute(format); String width = img.getAt...
    Листинг 4.24 Метод addExtendedText()
    Листинг 4.24 Метод addExtendedText() // одним из вариантов стиля является // paragraph, простой текст private void addExtendedText( StringBuffer sb, Element e ){ NodeList nl = e.getChildNodes(); i...









Начало        




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