ePrometeusCorsoJavaJava
testi articoli
Testi Articoli  Download
Home | Eshop | Java | Tools | Web | 
CorsoJava è ora Video! Free for all!
Clicca Qui!

JAVA ESHOP PARTE TERZA
Un negozio online in Java e Linux - il Carrello
L'HTTP È SENZA STATO
SESSIONI
IL CARRELLO
L'ACQUISTO
CONCLUSIONI
L'AUTORE

<<< L'ACQUISTO >>>

Una volta che l'utente ha completato la definizione dell'ordine, può decidere di completarlo e effettuare l'acquisto, andando alla "cassa" (checkout) . In questa serie prescindiamo completamente da problematiche di transazioni monetarie. Per supportarle dovremmo utilizzare come minimo una chiave di tipo SSL (I<Secure Socket Layer>), avere un contratto per le carte di credito ed eventualmente usare sistemi evoluti (e costosi) come il SET (Secure Electronic Transaction>).

In questo articolo ci limitiamo alla memorizzazione dei dati dell'ordine nel database. In figura 2 possiamo vedere la pagina di inserimento dell'ordine (checkout.jsp) in cui vengono richiesti i dati del cliente.


Figura 2

Tali dati vengono memorizzati nel database, come mostrato nel listato 2.

<%@ include file="head.inc" %>
<%@ page import="java.sql.*" %>
<%@ page import="java.util.*" %>
<hr noshade>

<%
String rand = (String)session.getValue("rand");
if (rand == null || !(rand.equals(request.getParameter("rand")))) {
  session.putValue("rand",request.getParameter("rand"));
  String sNome=request.getParameter("Nome");
  String sCognome=request.getParameter("Cognome");
  String sTel=request.getParameter("Telefono");
  String sFax=request.getParameter("Fax");
  String sEmail=request.getParameter("Email");
  String sAzienda=request.getParameter("Azienda");
  String sPartIVA=request.getParameter("PartIVA");
  String sInd=request.getParameter("Indirizzo");
  String sCAP=request.getParameter("CAP");
  String sCitta=request.getParameter("Citta");
  String StringaQuery = "INSERT INTO utenti "
   +"(nome,cognome,telefono,fax,email,p_iva,azienda,indirizzo,cap,citta)"
   +" values ('"+sNome+"','"+sCognome+"','"+sTel+"','"+sFax+"','"
   +sEmail+"','"+sAzienda+"','"+sPartIVA+"','"
   +sInd+"','"+sCAP+"','"+sCitta+"')";
  stat.executeUpdate(StringaQuery);
 
  StringaQuery = "SELECT max(idUtente) FROM utenti";
  ResultSet rs = stat.executeQuery(StringaQuery);
  int idUtente=0;
  while (rs.next()) {
    idUtente=rs.getInt(1);
  }
  int totale = Integer.parseInt((String)session.getValue("totale"));
  String ordine = (String)session.getValue("ordine");
  StringaQuery = "INSERT INTO ordini (idUtente,prezzo,ordine) "
               +"values ("+idUtente+","+totale+",'"+ordine+"')";
  //out.print(StringaQuery);
  stat.executeUpdate(StringaQuery);
}
%>

<table align=center cellpadding=10>
  <tr>
    <td align=center>
      <font size=4><b>L'ordine è stato 
       inserito nel nostro database<br>
       Grazie per aver scelto NetShop</b></font>
    </td>
  </tr>
  <tr>
    <td align=center>
      <a href=index.jsp>Torna alla pagina principale</a>
    </td>
  </tr>
</table>
<% Hashtable cart = new Hashtable();
      session.putValue("carrello",cart); %>
<%@ include file="foot.inc" %>

Per registrare un ordine viene semplicemente composta una query in SQL estraendo i dati presenti nella sessione ed eseguendola, secondo modalità di interazione con le basi di dati che sono state esposte nell'articolo precedente. Notare che il database viene chiamato in causa solamente quando l'utente ha completato l'ordine.

ePrometeus s.r.l. - Web Software House & Open Source System Integrator
MILANO - SAN BENEDETTO DEL TRONTO(AP)
Contatti: info@eprometeus.com