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

       

JSP-страница Shippinglnfo


После импорта необходимых классов для получения нового объекта класса Custo- merlnfo, связанного с текущим сеансом, используется элемент jsp:useBean. Затем свойства этого элемента с помощью элемента jsp:setProperty устанавливаются равными значениям, введенным в форму на странице Customerlnfo.html. После этого мы получаем класс Order, связанный с текущим сеансом, и вектор Vector, в котором содержится перечень всех заказанных товаров. Потом с помощью скриптлета [Скриптлетом (scriptlet) авторы называют код JSP внутри тегов <%...%>, по-видимому, по аналогии с апплетом и сервлетом (еще одним «изобретением» автора). — Примеч. ред. ] JSP вызываются методы setCustomerlnfo и setltems, которые добавляют соответствующие объекты в объект Order, как показано в листинге 5.17.

Листинг 5.17. Начало кода Shippinglnfo JSP (Shippinglnfo.jsp)

<%@ page import="com.XmlEcomBook.Chap05.*,java.util.*" %>

<jsp:useBean scope="session" id="custInfo" class="CustomerInfo" />

<jsp:setProperty name="custInfo" property="*" />

<jsp:useBean id="order" scope="session" class="Order" />

<jsp:useBean id="theorder" scope="session" class="Vector" />

<% order.setCustomerInfo( custInfo );

order.setItems( theorder );

%>

Затем JSP-страница выдает код HTML, который позволяет пользователю выбрать один из предложенных способов доставки. В этом коде используется объект ShippingCalculator, рассмотренный нами выше в этой главе. Скриптлет, встроенный в код HTML, создает объект ShippingCalculator, а затем с помощью метода getTypes предлагает несколько способов доставки. На этом этапе создается ряд переключателей (radio buttons), по одному на каждый из указанных способов. Это делается с помощью цикла for. Для каждого способа создается элемент input типа radio. Атрибут value (значение) элемента устанавливается с помощью выражения JSP "<t=types[i]X>". Затем такое же выражение используется для отображения этого значения на странице. Другой скриптлет обеспечивает получение данных о стоимости того или иного способа доставки с помощью метода getPrice объекта ShippingCalculator, как показано в листинге 5.18.






Листинг 5.18. Код HTML, который формируется в JSP-странице Shippinglnfo (Shippinglnfo.jsp)

<html>

<head>

<title>Shipping Info</title>

</head>

<body>

<form action="CreditInfo.jsp">

Select a Shipper and Class:<br />

<table>

<% ShippingCalculator calc = new ShippingCalculator( order );

String[] types = calc.getTypes();

for( int i = 0; i < types.length; i++ ) {

%> <tr><td><input type="radio" name="shipperAndClass" value="<%=types[i] %>" /><%=types[i] %></td>

<td><%=calc.getPrice(types[i]) %></td></tr>

<% } %>

</table>

<input type="submit" value="Submit information">

</form>

</body>

</html>






Содержание раздела