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

         

JSP-страница ShowOrder (ShowOrder.jsp)



Листинг 5.30. JSP-страница ShowOrder (ShowOrder.jsp)

<%@ page import="javax.xml.parsers.*,java.util.*,java.io.*,org.w3c.dom.*, org.xml.sax.*" %>
<html>
<head>
<title>
Order</title>
</head>
<body>
<% double price = 0.0;; String dir = request.getParameter( "dir" );
String file = request.getParameter( "file" );
Document document = null; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try { DocumentBuilder builder = factory.newDocumentBuilder();


document = builder.parse( new File( dir, file ) );
} catch( ParserConfigurationException pce ) { throw new IOException( "Parser Configuration Error" );
} catch( SAXException se ) { throw new IOException( "Parsing Excpetion" );
} Element order = document.getDocumentElement();
String id = order.getAttribute( "id" );
%>
<h1>
Order #<%=id%>
</h1>
<h2>
Items</h2>
<table border="1">
<tr>
<th>
Item</th>
<th>
Description</th>
<th>
Quantity</th>
<th>
Price</th>
</tr>
<% NodeList items = order.getElementsByTagName( "item" );
int numItems = items.getLength();
for( int i = 0;i < numItems; i++ ) { Element item = (Element)items.item( i );
%>
<tr>
<td>
<%=item.getAttribute( "id" )%>
</td>
<td>
<%=item.getFirstChild().getNodeValue()%>
</td>
<td>
<%=item.getAttribute( "quantity" )%>
</td>
<td>
<%=item.getAttribute( "price" )%>
</td>
<%String priceString = item.getAttribute( "price" );
priceString = priceString.replace( '$', ' ' );
price += Double.parseDouble( priceString );
%>
</tr>
<% }%>
</table>
<% NodeList n1 = order.getElementsByTagName ( "customer_info" );
Element cust = (Element)n1.item( 0 );
Node firstName = cust.getElementsByTagName ( "first_name").item(0);
Node lastName = cust.getElementsByTagName ( "last_name" ).item(0);
Node address1 = cust.getElementsByTagName ( "address1" ).item(0);
Node address2 = cust.getElementsByTagName ( "address2" ).item(0);
Node city = cust.getElementsByTagName( "city" ).item(0);
Node state = cust.getElementsByTagName( "state" ).item(0);
Node zip = cust.getElementsByTagName( "zip" ).item(0);
Node email = cust.getElementsByTagName( "email" ).item(0);
Node phone = cust.getElementsByTagName( "phone" ).item(0);
%>
<h2>
Customer Information</h2>
Name: <%=firstName.getFirstChild().getNodeValue()%>
<%=lastName.getFirstChild().getNodeValue()%>
<br />
<br />
Address:<br />
<%=address1.getFirstChild().getNodeValue()%>
<br/ >
<%=address2.getFirstChild().getNodeValue()%>
<br />
<%=city.getFirstChild().getNodeValue()%>
<%=state.getFirstChild().getNodeValue()%>
<%=zip.getFirstChild().getNodeValue()%>
<br />
<br />
Email:<%=email.getFirstChild().getNodeValue()%>
<br />
Phone:<%=phone.getFirstChild().getNodeValue()%>
<br />
<% NodeList n2 = order.getElementsByTagName( "credit_info" );
Element credit = (Element)n2.item( 0 );
Node number = credit.getElementsByTagName ( "card_number").item(0);
Node type = credit.getElementsByTagName ( "card_type").item(0);
Node exp = credit.getElementsByTagName ( "expiration_date").item(0);
%>
<h2>
Credit Card Information</h2>
Type:<%=type.getFirstChild().getNodeValue()%>
<br />
Number:<%=number.getFirstChild().getNodeValue()%>
<br />
Expiration Date:<%=exp.getFirstChild().getNodeValue()%>
<br />
<% NodeList n3 = order.getElementsByTagName ( "authorization" );
Element auth = (Element)n3.item( 0 );
String approved = auth.getAttribute( "approved");
Node reason = auth.getElementsByTagName ( "reason").item(0);
Node auth_code = auth.getElementsByTagName ( "authorization_code").item(0);
%>
<h2>
Authorization Information</h2>
Auth Code:<%=auth_code.getFirstChild().getNodeValue()%>
<br />
Approved:<%=approved%>
<br />
Reason:<%=reason.getFirstChild().getNodeValue()%>
<br />
<% NodeList n4 = order.getElementsByTagName( "fulfillment" );
Element fulfillment = (Element)n4.item(0);
Node shipper = fulfillment.getElementsByTagName ( "shipper" ).item(0);
Node clas = fulfillment.getElementsByTagName( "class" ).item(0);
Node cost = fulfillment.getElementsByTagName( "cost" ).item(0);
Node tracking = fulfillment.getElementsByTagName ( "tracking_number" ).item(0);
Node dateSent = fulfillment.getElementsByTagName ( "date_sent" ).item(0);
String trackingString = tracking.getFirstChild().getNodeValue();
String dateSentString = dateSent.getFirstChild().getNodeValue();
%>

В нижней части этой JSP-страницы располагается форма, предназначенная для ввода номера отслеживания заказа и даты его отправки. Эти значения можно вводить в том случае, если в поле для номера указано значение NO_TRA- CKING_NUMBER (номер отсутствует). Эта строка используется для указания, что данное поле еще не инициализировано, так что пользователь может ввести новое значение. Если же значения уже заданы, они просто отобразятся и пользователь уже не сможет их редактировать. В этой форме (листинг 5.31) также имеется некоторое количество скрытых полей, которые содержат информацию, необходимую для JSP-страницы, обновляющей файл XML.



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