Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

Esercitazione per il 22-11-2010


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 15 risposta/e

#1
antgreco89

antgreco89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 117 Messaggi:
Ragazzi, non so voi, ma per l'esercitazione che il Prof. Foggia ci ha assegnato per lunedi sono in alto mare.
Le problematiche riguardano in particolare:
-Trattare il carrello come una risorsa condivisa per le richieste riguardanti i tre prodotti.
-Gestione della sessione, argomento sul quale non ho la minima idea su come potrei procedere.

Se qualcuno di voi ha gli stessi problemi o li ha già risolti, potremmo confrontare le nostre idee a riguardo e trovare una soluzione...



#2
R0cKSt4R

R0cKSt4R

    Advanced Member

  • Utente
  • StellaStellaStella
  • 282 Messaggi:
ma a parte questo, mica sono disponibili le slide con cui il prof ci ha introdotto l'argomento delle servlet?
Immagine inviata

#3
nicklion

nicklion

    Advanced Member

  • Amministratore
  • 470 Messaggi:
guarda io ho capito questa cosa:
non ti devi preoccupare della gestione della sessione perchè ci pensa l'oggetto HttpSession il quale ti fa anche da tramite tra le diverse servlet e ti memorizza gli oggetti di cui hai bisogno :D
Immagine inviata

#4
antgreco89

antgreco89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 117 Messaggi:
Si, però affinchè il carrello possa essere condiviso per le richieste riguardanti i tre prodotti, bisogna renderlo un attributo di sessione. O sbaglio?

#5
nicklion

nicklion

    Advanced Member

  • Amministratore
  • 470 Messaggi:
l'oggetto session è gia di per se un attribbuto di sessione, con il metodo setAttribute(chiave,valore) tu aggiungi un oggetto a questo oggetto e questo rimarrà condiviso da tutte le servlet per tutta la durata della sessione
Immagine inviata

#6
antgreco89

antgreco89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 117 Messaggi:
Cmq ho risolto il problema della risorsa condivisa utilizzando il carrello come Vector e settandolo come attributo di sessione con il metodo setAttribute.

#7
BOJACK89

BOJACK89

    Newbie

  • Utente
  • StellaStellaStella
  • 141 Messaggi:
Infatti antò, pure io ho fatto così. Ho ipotizzato che il carrello fosse una collezione, per cui mi sono creato un oggetto linkedlist e l'ho aggiunto alla sessione, così ogni volta che devo accedere all'elenco di prodotti faccio la getAttribute del carrello, cioè della linkedlist.
'A vita è 'nu muorzo!

#8
White_Rabbit89

White_Rabbit89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 106 Messaggi:
Io ho un problema con l'ultima servlet, in pratica non riesco a resettare tutto...
Ho usato
	session = request.getSession();
session.invalidate();
, ma i valori del carrello continuano a rimanere inalterati... Ho anche provato a resettare i valori a mano, ma niente... Qualche possibile soluzione? Voi come risolvereste il problema?

#9
nicklion

nicklion

    Advanced Member

  • Amministratore
  • 470 Messaggi:
io ho risolto usanto la getAttributeNames che mi restituisce un oggetto di tipo enumeration con la lista di tutti gli oggetti salvati e poi li ho eliminati manualmente con la removeAttribute scorrendo tutta la collezione di enumeration; cmq alla fine anche l'idea del oggetto vector passato alla session è buona dipende da come voi volete implementare il carrello,
io visto che erano solamente tre oggetti ho usato direttamente i nomi degli oggetti come stringa chiave dell'oggetto session e un valore intero per indicare la quantità scelta
Immagine inviata

#10
White_Rabbit89

White_Rabbit89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 106 Messaggi:

io ho risolto usanto la getAttributeNames che mi restituisce un oggetto di tipo enumeration con la lista di tutti gli oggetti salvati e poi li ho eliminati manualmente con la removeAttribute scorrendo tutta la collezione di enumeration; cmq alla fine anche l'idea del oggetto vector passato alla session è buona dipende da come voi volete implementare il carrello,
io visto che erano solamente tre oggetti ho usato direttamente i nomi degli oggetti come stringa chiave dell'oggetto session e un valore intero per indicare la quantità scelta


anche io ho usato la stessa implementazione con il valore intero per indicare la quantità scelta... ^_^

#11
Luigo

Luigo

    Admin

  • Utente
  • StellaStellaStella
  • 1149 Messaggi:
anch'io ho usato una vector, mi funzionano tutte le servlet e devo dire che il programma fa quello che deve fare, e non mi dà problemi(intendo la scelta del vector)...
per cancellare tutto ho risolto semplicemente facebndo una setattribute di tutto il carrello , passando come valore new Vector() .

Luigi_Banner_sig_by_Chivi_chivik.png


#12
antoniosim

antoniosim

    Newbie

  • Utente
  • StellaStellaStella
  • 278 Messaggi:
Ragazzi riguardo l'esercizio vorrei farvi una domanda che può darsi sia banale ma sinceramente è una cosa su cui non so dove mettere le mani.

Ho abbozzato le servlet di aggiunta del prodotto al carrello e quella di visualizzazione dei prodotti e sembrano funzionare.
La cosa che non riesco però a risolvere è il fatto che quando clicco sul bottone di aggiunta del prodotto al carrello mi si apre, ovviamente, una pagina vuota.

È possibile fare in modo che premendo il bottone parta la servlet ma si resti sulla stessa pagina? O deve necessariamente essere aperta una nuova pagina?

Grazie.

#13
BluCreativo

BluCreativo

    Advanced Member

  • Utente
  • StellaStellaStella
  • 79 Messaggi:
Non si può far rimanere sulla stessa pagina. E' proprio il metodo del funzionamento che non lo permette. Quando clicchi su "compra" in sostanza vai sul servlet che si trova su un'altra "pagina" (il browser così la vede alla fine) e a questa pagina invii dei dati tramite link o 'header. Si potrebbe cercare un modo per poter fare un redirect alla pagina dell'interno della servlet ma IMHO è un inceppamento mentale eccessivo per un semplice esercizio sui cookie.
Mai fidarsi di un computer che non è possibile gettare dalla finestra.
Steve Wozniak

BluCeativo.it potrebbe esserti utile....

#14
White_Rabbit89

White_Rabbit89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 106 Messaggi:
Non so se anche ad altri capita la mia stessa situazione... Ho seguito tutti i consigli che mi avete dato, ho fatto le tre servlet e funzionano... L'unica cosa è che quando ripulisco il carrello, e voglio rifare un acquisto, "magicamente" quando aggiungo un nuovo prodotto, ricompaiono i valori del vecchio carrello, come se nella servlet che aggiunge i prodotti rimanessero sempre memorizzati... La prima servlet l'ho fatta del tipo

import java.io.*;
import java.util.LinkedList;

import javax.servlet.*;
import javax.servlet.http.*;

public class AddServlet extends HttpServlet{
private static final long serialVersionUID = 1L;

LinkedList lista;

public void init() throws ServletException {
lista = new LinkedList();
}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
HttpSession session;
String prodotto;

prodotto = request.getParameter("Aggiungi");
lista.add(prodotto);

session = request.getSession();
session.setAttribute("listItem", lista);

response.sendRedirect("home.html");

}

}

dove sbaglio? :badmood:

#15
RuoMA

RuoMA

    Newbie

  • Utente
  • StellaStellaStella
  • 103 Messaggi:
Anche a me faceva lo stesso errore, per pulire la lista (io in realtà ho usato una ArrayList ma credo sia uguale la cosa) ho usato il metodo della stessa clear(); vedi un po' se così funziona.
...ogni uomo, nel corso della sua breve esistenza, deve scegliere eternamente tra la speranza insonne e la saggia rinuncia a ogni speranza, tra i piaceri dell'anarchia e quelli dell'ordine, tra il Titano e l'Olimpico.
Scegliere tra essi, o riuscire a comporre, tra essi l'armonia.

#16
White_Rabbit89

White_Rabbit89

    Advanced Member

  • Utente
  • StellaStellaStella
  • 106 Messaggi:
Nella servlet che conferma l'acquisto ho usato questo brano di codice

session = request.getSession();
lista = (LinkedList) session.getAttribute("listItem");
lista.clear();
session.setAttribute("listItem", lista);
session.removeAttribute("listItem");

e sembra funzionare... Anche se non riesco a capire perchè se faccio solo il removeAttribute senza fare lista.clear() la lista non me la svuota, anche se controllando la sessione l'elemento "listItem" non c'è più, e quindi la lista non dovrebbe più essere allocata... Boh... Funziona, questo è l'importante :cheers: grazie per l'aiuto :-D




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi