Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Герц Д.М. -> "Java Server Pages. Библиотека профессионала" -> 128

Java Server Pages. Библиотека профессионала - Герц Д.М.

Герц Д.М. Java Server Pages. Библиотека профессионала — М.: Вильяме, 2002. — 448 c.
ISBN 5-8459-0290-8
Скачать (прямая ссылка): javaserverpages2002.pdf
Предыдущая << 1 .. 122 123 124 125 126 127 < 128 > 129 130 131 132 133 134 .. 147 >> Следующая


Float.parseFloat(amount));

I

}

if (!fruitWasInCart) {

cart.acidltern(new Item (Integer . parselnt ( sku) , fruit,

Float.parseFloat(price) , Float.parseFloat(amount))) ;

1

return new ActionRouter("storefront-page");

I

При вызове действия, приведенного выше, ему передается единственный параметр в формате код_товара-11аименобание-цена=количество. Например, если пользователь выбрал два фунта грейпфрутов по цене $0,49, то параметр запроса будет иметь вид 1004-grapefruit-0.49=2.0. Действие AddToCartAction выполняет разбор параметра и использует полученную информацию для изменения содержимого "корзинки" покупателя.

Метод perform рассматриваемого действия возвращает маршрутизатор действий, который указывает на Web-страницу "витрины". В результате "витрина" обновляется, и содержимое "корзинки" отображается в полосе а левой части страЕшцы. JSP-документ, соответствующий "корзинке" покупателя, представлен в листинге 12.4,6.

ЛИСТИНГ 12.4,6. /WEB-INF/jsp/sharea/cart.jsp

<%@ taglib uri='application' prefix='app' %>

<img src='graphics/cart.gif/>

<table cellpadding= ' 3 ' >

<app:iterateCart id='cartItem'>

<tr>

<td><%- cartltem.getName() %></td> <td><%= cartltem.getAmount() %></td> </tr>

</app:iterateCart>

</table>

<form actionA'checkout-action. do'>

<input type=' submit'value='checkout'/> </form>
Интерактивный магазин 379

JSP-документ, код которого показан в листинге 12.4,6, применяет для перебора содержимого "корзинки" пользовательский дескриптор, специфический для данного приложения. Класс поддержки этого дескриптора показан в листинге 12.4,в.

Листинг 12.4,в. /WEB-lNF/classes/tags/app/CartltaratorTag. Java

package tags.app;

import j avax. servlet.j sp.PageContext; import j avax. servlet.j sp,JspException; import j avax.servlet.j sp.tagext.TagSupport;

import beans .app. User; import beans ,app. Users; import beans .app.ShoppingCart;

public class CartlteratorTag extends tags.util.IteratorTag

implements beans .app. Constants { public int doStartTag() throws JspException {

ShoppingCart cart = (ShoppingCart)pageContext.getAttribute(

SHOPPING_CART_KEY, PageContext.SESSION_SCOPE) ;

if(cart —• null) {

throw new JspException("CartlteratorTag can't find " +

"cart");

}

setCollection(cart.getItems()); return super .doStartTag {) ;

I

)

Рассматриваемый пользовательский дескриптор организует перебор товаров, помещенных в "корзинку" покупателя; информация о текущем товаре доступна через переменную сценария, имя которой задается посредством атрибута id дескриптора. Код в листинге 12.4,в не дает представления о действиях, выполняемых дескрипторами, поскольку основные функциональные возможности реализованы в родительском классе IteratorTag, который рассматривался в главе 2. Метод Cartlterator-Tag, doStartTag иызывает метод setCollection, определенный в суперклассе, а затем, перед окончанием выполнения, обращается к методу super .doStartTag.

Помимо содержимого "корзинки" в левой части Web-страницы отображается также кнопка Checkout, при активизации которой генерируется запрос к ресурсу chec-kout-action.do. В файле actions .properties, код которого представлен в листинге 12.2,в, логическое имя checkout-action.do отображается в класс actions. Checkout Act ion. Код класса Checkout Act ion приведен в листинге 12.5,а.

ЛИСТИНГ .12.5,3. /WEB-INF/classes/CheckoutAction . Java

package actions;

import j avax,servlet,ServletException; import j avax, servlet. http .HttpServlet;
380 Глава 12 . Приложение на базе JSP

import j avax. servlet. http .HttpServletRequest; import j avax. servlet. http .HttpServletResponse ; import j avax. servlet. http .HttpSession;

import beans.app.ShoppingCart;

import action.ActionBase; import action.ActionRouter;

public class CheckoutAction extends ActionBase

implements beans.app.Constants ( public ActionRouter perform(HttpServlet servlet,

HttpServletRequest req, HttpServletResponse res) throws ServletException { HttpSession session = req.getSessionO;

ShoppingCart cart = (ShoppingCart) session.getAttribute(

SHOPPING_CART_KEY);

if(cart == null) (

throw new ServletException("Cart not found") ;

} . return new ActionRouter("checkout-page");

}

J

Рассматриваемое действие проверяет, создан ли объект, представляющий "корзинку" пользователя, если данный объект отсутствует, в методе CheckoutAction.perform генерируется исключение. Если "корзинка" присутствует, метод perform возвращает маршрутизатор действий, в результате чего запрос перенаправляется к документу, который позволяет покупателю проверить свой выбор.

Проверка выбранных товаров

Документ, внешний вид которого показан на рис. 12.5, отображает счет, включающий перечень товаров, находящихся в "корзинке". Для завершения транзакции пользователь должен активизировать кнопку Purchase The Items Listed Above.

Код документа, позволяющего покупателю проверить свой выбор, приведен в листинге 12.5,6.

Листинг 12.5,6. /WEB-INF/jap/checkout/page, jsp
Предыдущая << 1 .. 122 123 124 125 126 127 < 128 > 129 130 131 132 133 134 .. 147 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.