Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problemi con le jsp

    Salve a tutti,
    siccome è la prima volta che scrivo, mi presento. Sono Roberto, ho 24 anni e vivo a Napoli. Sto sviluppando un'applicazione web che prevede la gestione di un carrello elettronico. L'approccio che ho seguito è usare un javabean per il carrello, e due pagine jsp per la visualizzazione dei prodotti rispettivamente nel supermarket e nel carrello.Ora vi posto i codici:

    - questo è relativo al javabean (Carrello.java)
    codice:
    package mybean;
    
    import java.beans.*;
    import java.io.Serializable;
    import java.util.Hashtable;
    import java.util.Enumeration;
    
    /**
     *
     * @author Roberto Iula
     */
    public class Carrello implements Serializable {
    
        public static final String PROP_SAMPLE_PROPERTY = "sampleProperty";
    
        private String sampleProperty;
    
        private PropertyChangeSupport propertySupport;
    
        //variabile di tipo Hashtable utilizzata per emorizzare gli elementi presenti nel carrello 
        protected Hashtable cd = new Hashtable();
    
    //varibile intera utilizzata per la memorizzazione del numero di CD attualmente nel carrello
    private int numCd;
    
        public Carrello() {
            propertySupport = new PropertyChangeSupport(this);
            numCd=0;
        }
    
        public String getSampleProperty() {
            return sampleProperty;
        }
    
        public void setSampleProperty(String value) {
            String oldValue = sampleProperty;
            sampleProperty = value;
            propertySupport.firePropertyChange(PROP_SAMPLE_PROPERTY, oldValue, sampleProperty);
        }
    
    
        public void addPropertyChangeListener(PropertyChangeListener listener) {
            propertySupport.addPropertyChangeListener(listener);
        }
    
        public void removePropertyChangeListener(PropertyChangeListener listener) {
            propertySupport.removePropertyChangeListener(listener);
        }
    
        //metodo per ottenere il numero di CD attualmente nel carrello
    public int totCD(){
        return numCd;
    }//numCD
    
    // Inserimento di cd nel carrello
    // I: id: indice chiave di identificazione del CD
    // art: nome dell'artista
    // tit: titolo dell'album
    // prezzo: prezzo del CD
    
    public void aggiungiCd (String id, String art, String tit, float prezzo){
    
    //inserimento in un vettore di stringhe degli attributi del CD appena inserito nel carrello
    //è inserito inoltre il numero di CD di quel tipo ordinati
    String[] dati_cd= {art, tit, Float.toString(prezzo) , "1", id};
    numCd++;
    //se il CD è non già stato ordinato
    if (!cd.containsKey(id))
    {
        //inserisci il CD nel carrello
        cd.put(id, dati_cd);
    }//if
    //altrimenti
    else
    {
        //incrementa il numero di CD di quel tipo ordinati
        int tmp;
        String[] datiTemp = (String[])cd.get(id);
        tmp = Integer.parseInt(datiTemp[3]);
        tmp++;
        datiTemp[3]=Integer.toString(tmp);
        cd.put(id, datiTemp);
    }//else
    }//aggiungiCd
    
    //Metodo di rimozione dal carrello di un CD
    //I: id: indice del CD da rimuovere
    public void rimuoviCd (String id)
    {
        //se il CD è presente nel carrello
        if (cd.containsKey(id))
        {
            //decrementa il numero di CD
            numCd--;
            String[] temp = (String[])cd.get(id);
        //se il CD è presente in copia singola
        if (Integer.parseInt(temp[3]) == 1)
            //elimina il CD dal carrello
            cd.remove(id);
        //altrimenti
        else
        {
            //decrementa il numero di copie di quel CD ordinate
            int tmp = 0;
            String[] datiTemp = (String[])cd.get(id);
            tmp = Integer.parseInt(datiTemp[3]);
            tmp--;
            datiTemp[3]=Integer.toString(tmp);
            cd.put(id, datiTemp);
        }//else
    }//if
    }//rimuoviCd
    
    //Metodo per la creazione di un oggetto Enumeration utilizzato per scorrere
    //velocemente gli elementi nel carrello
    public Enumeration enumera() {
    return cd.elements();
    }//enum
    
    
    //Metodo che restituisce il prezzo totale dei CD inseriti nel carrello fino adesso
    public float spesaTot(){
        float tot = 0.00f;
        String[] temp;
        //crea l'oggetto Enumeration
        Enumeration i = this.enumera();
        //finchè ci sono elementi nel carrello
        while (i.hasMoreElements()){
            temp = (String[])i.nextElement();
            //incrementa la spesa totale del prezzo del CD corrente
            tot += (Float.parseFloat(temp[2]) * Integer.parseInt(temp[3]));
        }//while
        return tot;
    }//spesaTot
    
    //Metodo che restituisce il prezzo di un CD moltiplicato per il numero delle
    //copie ordinate I: id:indice del CD
    public float prezzo(String id){
    String[] temp;
    float tmp=0.0f;
    temp = (String[])cd.get(id);
    tmp = Float.parseFloat(temp[2]) * Integer.parseInt(temp[3]);
    return tmp;
    }//prezzo
    
    }
    - questa è la jsp di visualizzazione dei prodotti disponibili (index.jsp)

    codice:
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@page language="java" import="mybean.Carrello" %>
    <%@page language="java" import="javax.servlet.*" %>
    <%@page language="java" import="javax.servlet.http.*" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
    
    <HTML>
    
    <HEAD>
    <TITLE>Supermarket On-line</TITLE>
    </HEAD>
    
    <BODY bgcolor="#33CCCC" text="#000099" vlink="#990099" alink="#000099">
    
    <!-istanziazione del bean Carrello.jsp, con ambito session -->
    <jsp:useBean id="Carrello" scope="session" class="mybean.Carrello" />
    
    <%
    //Carrello car;
    String id = request.getParameter("id");
    /*session=request.getSession();
    if (session.isNew())
    {
        car=new Carrello();
        session.setAttribute("Carrello",car);
    }
    else
        car=(Carrello) session.getAttribute("Carrello");*/
    //se è stato aggiunto un CD al carrello
    if (id != null)
    {
    //acquisisci i dati del CD
    String prodotto=request.getParameter("Prodotto");
    String descrizione=request.getParameter("Descrizione");
    float prezzo = Float.parseFloat(request.getParameter("Prezzo"));
    //e aggiungilo al carrello
    
    Carrello.aggiungiCd (id, prodotto, descrizione, prezzo);
    }//if
    %>
    
    <font face="Verdana" size="6">
    <center>
    CATALOGO PRODOTTI A DISPOSIZIONE 
    
    
    </center>
    </font>
    
    <font face="Verdana" >
     Quantità attualmente nel carrello: <%= Carrello.totCD() %> 
    
    
    
    <center>
    <table width="60%" border="1" align="center" bordercolorlight="#990099"
    bordercolordark="#990099"> <tr>
    <th>Prodotto</th>
    <th>Descrizione</th>
    <th>Prezzo</th>
    </tr>
    <tr>
    <form action="index.jsp" method="post">
    <td>Caffe'</td>
    <td>kimbo 750 gr.</td>
    <td>25.00</td>
    <td><center><input type="submit"  name="acquista"
    value="Aggiungi al carrello"></center></td>
    <input type="hidden" name="id" value="1">
    <input type="hidden" name="Prodotto" value="Caffe'">
    <input type="hidden" name="Descrizione" value="Kimbo 750 gr.">
    <input type="hidden" name="Prezzo" value="25.00">
    </form>
    <td>
    </tr>
    <tr>
    <form action="index.jsp" method="post">
    <td>Frutta</td>
    <td>mele melinda</td>
    <td>35.00</td>
    <td><center><input type="submit"  name="acquista"
    value="Aggiungi al carrello"></center></td>
    <input type="hidden" name="id" value="2">
    <input type="hidden" name="Prodotto" value="Frutta">
    <input type="hidden" name="Descrizione" value="mele melinda">
    <input type="hidden" name="Prezzo" value="35.00">
    </form>
    <td>
    </tr>
    <tr>
    <form action="index.jsp" method="post">
    <td>Liquori</td>
    <td>vodka al melone</td>
    <td>35.00</td>
    <td><center><input type="submit" name="add" name="acquista"
    value="Aggiungi al carrello"></center></td>
    <input type="hidden" name="id" value="3">
    <input type="hidden" name="Prodotto" value="Liquori">
    <input type="hidden" name="Descrizione" value="vodka al melone">
    <input type="hidden" name="Prezzo" value="35.00">
    </form>
    <td>
    </tr>
    </table>
    </center>
    </font>
    </BODY>
    </HTML>
    - questa è la jsp di visualizzazione del carrello (VisCarr.jsp)

    codice:
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@page language="java" import="mybean.Carrello" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
    
    
    <%@ page import="java.util.*" %>
    <%@ page import="java.lang.*" %>
    
    
    
    <jsp:useBean id="Carrello" scope="session" class="mybean.Carrello" />
    
    
    <HTML>
    
    <HEAD>
    <TITLE>Carrello della spesa</TITLE>
    </HEAD>
    
    <BODY bgcolor="#33CCCC" text="#000099" vlink="#990099" alink="#000099">
    <%
    //Carrello car= (Carrello) session.getAttribute("Carrello");
    String idtmp = request.getParameter("idtmp");
    //se è stato eliminato un CD dal carello
    if (idtmp != null){
        Carrello.rimuoviCd(idtmp);
        //session.setAttribute("Carrello", car);
    }//if
    %>
    <font face="Verdana" size="6">
    <center>
    CARRELLO
    </center>
    </font>
    
    
    
    <font face="Verdana">
    Quantità attualmente nel carrello:
    
    </font>
    
    
    
    <center>
    <table width="60%" border="1" align="center" bordercolorlight="#990099"
    bordercolordark="#990099"> <tr>
    <th>Prodotto</th>
    <th>Descrizione</th>
    <th>Prezzo (L.)</th>
    <th>Quantità</th>
    </tr>
    
    <%
    //creazione di un oggetto Enumeration
    Enumeration ogg = Carrello.enumera();
    String[] temp;
    
    //finchè ci sono elementi nel carrello
    while (ogg.hasMoreElements()){
    temp= (String[])ogg.nextElement();
    %>
    
    <tr>
    <td><%= temp[0] %></td>
    <td><%= temp[1] %></td>
    <td><%= Carrello.prezzo(temp[4])%></td>
    <td><%=temp[3] %></td>
    <td><center></center></td> <td><center>
        <form action="VisCarr.jsp" method="post" />
            <input type="submit" name="elimina" value="elimina" /></center></td>
            <input type="hidden" name="idtmp" value="<%= temp[4]%>" />
    <td>
    </tr>
    <%
    }//while
    %>
    <tr>
    <td></td>
    <td>Tot</td>
    <td><%= Carrello.spesaTot()%></td>
    <td><center><%= Carrello.totCD()%></center></td>
    </tr>
    
    </table>
    <font size="2">
    [ Indietro ]
    </font>
    </center>
    
    </BODY>
    </HTML>
    il mio problema è il seguente: in fase di aggiunta, non ci sono problema. Quando invece vado ad eliminare, ad esempio, il secondo, il terzo, ecc. oggetto del carrello, mi elimina sempre il primo.

    N.B. se li elimino in ordine, funziona.

    Qualcuno potrebbe aiutarmi? grazie in anticipo e spero di essere stato chiaro.

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328

    Moderazione

    Una lettura al regolamento:

    1) Titolo troppo generico
    2) Il codice va postato all'interno degli appositi tag e va indentato
    3) Java ha un forum dedicato.

    Per ora sposto, modifico il titolo e, se possibile, aggiungo io i tag CODE.

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    ho risolto. Grazie lo stesso

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.