Discussione:
servlet: doPost e doGet
(troppo vecchio per rispondere)
ViandanteOscuro
2005-03-04 08:47:59 UTC
Permalink
Ciao a tutti!!
Sono un novello fresco fresco di servlet... a cui mi sto avvicinando per
esigenze universitarie piu' che altro... ed ho il seguente problema:

posso far coesistere sia il metodo doGet che il metodo doPost in una servlet?
ad esempio... io passo dei valorin in get e in post ad una pagina e a seconda
del valore associato ad una variabile get, con le variabili post ci faccio cose
diverse... come posso fare per far funzionare il tutto?
Solo con get o solo con post riesco, e' facile... ma mischiare i due tipi non so
come si fa!!

Grazie a tutti!!

Massimo
Federico Paparoni
2005-03-04 09:13:59 UTC
Permalink
Post by ViandanteOscuro
Solo con get o solo con post riesco, e' facile... ma mischiare i due tipi non so
come si fa!!
Definisci sia il metodo doGet che il metodo doPost, tranquillamente poi in
base alla richiesta HTTP sarà il servlet container a richiamare il metodo
giusto.


Federico Paparoni

JavaStaff.com Admin
<doc>In girum imus nocte et consumimur igni</doc>
Vincent Vega
2005-03-04 13:50:51 UTC
Permalink
Post by ViandanteOscuro
posso far coesistere sia il metodo doGet che il metodo doPost in una servlet?
Ovviamente si. Altrimenti non sarebbero esistiti separati e si sarebbero
limitati alla service().
Post by ViandanteOscuro
ad esempio... io passo dei valorin in get e in post ad una pagina e a
seconda del valore associato ad una variabile get, con le variabili post
ci faccio cose diverse... come posso fare per far funzionare il tutto?
doGet() viene chiamato quando il browser fa una richiesta GET, doPost()
quando fa una richiesta POST. Questa è la differenza e quella deve rimanere.
ViandanteOscuro
2005-03-04 14:02:29 UTC
Permalink
Post by Vincent Vega
doGet() viene chiamato quando il browser fa una richiesta GET, doPost()
quando fa una richiesta POST. Questa è la differenza e quella deve rimanere.
Perfetto... fin qua c'ero arrivato anche io... il mio problema e' come faccio ad
esempio a dire che in base ad un valore di una variabile passata in get, con le
variabili passate in post devo farci una determinata cosa...

Se non ho capito male, nel metodo doGet vengono passate solo le variabili in get
e nel metodo doPost solo quelle passate in post... come faccio a far interagire
i valori delle variabili dei due metodi?

Grazie!

Massimo
Federico Paparoni
2005-03-04 14:29:12 UTC
Permalink
Forse hai bisogno di chiarire meglio cosa vuoi fare.
Comunque può definire due diversi comportamenti per una servlet, ovvero
passare PRIMA i dati in get e POI passarli in post o viceversa. Non fai due
richieste contemporanee.
Post by ViandanteOscuro
Post by Vincent Vega
doGet() viene chiamato quando il browser fa una richiesta GET, doPost()
quando fa una richiesta POST. Questa è la differenza e quella deve rimanere.
Perfetto... fin qua c'ero arrivato anche io... il mio problema e' come faccio ad
esempio a dire che in base ad un valore di una variabile passata in get, con le
variabili passate in post devo farci una determinata cosa...
Se non ho capito male, nel metodo doGet vengono passate solo le variabili in get
e nel metodo doPost solo quelle passate in post... come faccio a far interagire
i valori delle variabili dei due metodi?
Grazie!
Massimo
Gio Ghi
2005-03-04 14:29:15 UTC
Permalink
Se passi delle varibili con il metodo GET e poi ci fai un POST la
servlet ti richiama entrambi i metodi, cioè sia la doGet che la doPost.
Però questo modo di operare non è granchè bello....

IN generale dovresti passare tutto con la POST...
Ciao
--gio
--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG
Vincent Vega
2005-03-04 14:37:30 UTC
Permalink
Post by ViandanteOscuro
Perfetto... fin qua c'ero arrivato anche io... il mio problema e' come
faccio ad esempio a dire che in base ad un valore di una variabile
passata in get, con le variabili passate in post devo farci una
determinata cosa...
Semplice. E' un caso inesistente.

Ripeto: quando viene chiamato un servlet, il browser o ha fatto una
richiesta GET *oppure* una richesta POST.
Post by ViandanteOscuro
Se non ho capito male, nel metodo doGet vengono passate solo le
variabili in get e nel metodo doPost solo quelle passate in post... come
faccio a far interagire i valori delle variabili dei due metodi?
Hai capito male.

doGet viene chiamata per un tipo di richiesta e doPost per un'altra. Non
sono chiamate entrambe in nessun caso.
Gio Ghi
2005-03-04 14:49:33 UTC
Permalink
Post by Vincent Vega
Post by ViandanteOscuro
Perfetto... fin qua c'ero arrivato anche io... il mio problema e' come
doGet viene chiamata per un tipo di richiesta e doPost per un'altra. Non
sono chiamate entrambe in nessun caso.
Più volte mi è capitato in un HTML (che fa una POST )
di mettere (per errore ovviamente) nell'action un indirizzo
con dei parametri.
La servlet faceva entrambe le chiamate..sia la doget che la dopost...
L'application era una versione di un annetto fa di TomCat..
non so se era un baco di quella versione.... ma funzionava così...
--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG
ViandanteOscuro
2005-03-04 14:51:17 UTC
Permalink
Post by Vincent Vega
Ripeto: quando viene chiamato un servlet, il browser o ha fatto una
richiesta GET *oppure* una richesta POST.
Pero' se io in un form metto come action "pippo.php?ciao=1" e come metodo metto
post i campi del form mi vengono passati in post, ma ho anche una variabile in
get... io vorrei gestire questo caso.

Nel caso che ho detto la servlet cosa fa? chiama la doPost o la doGet?
Immagino la doPost perche' i dati del form vengono passati in post... ma la
variabile passata in get viene dimenticata?

Se non e' possibile abbandono...

Grazie ancora a tutti!!

Massimo
Vincent Vega
2005-03-04 14:53:53 UTC
Permalink
Post by ViandanteOscuro
Pero' se io in un form metto come action "pippo.php?ciao=1" e come
metodo metto post i campi del form mi vengono passati in post, ma ho
anche una variabile in get... io vorrei gestire questo caso.
E se fai l'ovverride del metodo service()?
ViandanteOscuro
2005-03-04 14:58:56 UTC
Permalink
Post by Vincent Vega
E se fai l'ovverride del metodo service()?
In che senso?
Scusate ma io di java sono quasi ignorante... non lo uso mai... e devo usarlo
per un progetto in università...

Come dovrei fare l'override di questo metodo?

Grazie!

Massimo
Vincent Vega
2005-03-04 15:10:45 UTC
Permalink
Post by ViandanteOscuro
Come dovrei fare l'override di questo metodo?
Implementandolo sul tuo servlet.
service() è il punto di ingresso delle chiamate, l'implementazione di
default richiama doGet, doPost etc... a seconda delle richieste.
service() viene chiamato comunque.

Vedi la documentazione di HttpServlet.service().
fez
2005-03-04 15:12:03 UTC
Permalink
Post by Vincent Vega
E se fai l'ovverride del metodo service()?
Probabilmente io sbaglio, ma e' quello che faccio sempre.

Oltretutto, se non erro, era anche quello che suggeriva Bruce Eckel in
"Thinking in java".

Stefano
Vincent Vega
2005-03-04 15:17:04 UTC
Permalink
Post by fez
Post by Vincent Vega
E se fai l'ovverride del metodo service()?
Probabilmente io sbaglio, ma e' quello che faccio sempre.
La documentazione dice che non è necessario farlo, non che sia
sconsigliato o deprecato.
L'implementazione di default smista le chiamate a seconda della
richiesta, in buona parte dei casi te ne interessa solo 2 (get e post) e
in molti casi non te ne frega neppure nulla di distinguerli.
Quindi...

Loading...