2010-11-14 22 views
10

Sono obbligato a svolgere alcune piccole attività con JSP; essendo molto nuovo a JSP mi chiedevo se ci fosse alcuna possibilità di ottenere solo GET o solo POST parametri dalla richiesta HTTP.Parametri JSP, GET e POST

Ho visto ServletRequest.getParameter (e simili) ma sembra che quei metodi ottengano entrambi i parametri GET e POST. C'è un modo per ottenere solo uno di essi, senza analizzare personalmente l'URL o il corpo della richiesta? E se no, esiste una regola di precedenza che sovrascrive i valori che (come i parametri POST sovrascrivono sempre i parametri GET)?

+0

Questo è in realtà un odore di codice. Qual è il requisito funzionale? Perché non dare semplicemente un nome diverso a GET e POST? – BalusC

+0

@BalusC: in realtà è un problema di sicurezza. Richiedere parametri specifici da inviare solo come parametri POST (o GET rispettivamente) migliora la sicurezza per l'utente finale. E non voglio accettare ciecamente nessun tipo di parametro dopo aver imparato ad evitarlo in anni di creazione di applicazioni web. – poke

+0

Quindi basta determinare il metodo di richiesta o implementare un servlet che consente di eseguire il codice solo su un determinato metodo. Vedi la risposta di Bozho. – BalusC

risposta

13

In genere, le richieste devono essere gestite meglio nei servlet. Hanno metodi doGet(request, response) e doPost(request, response), per differenziare i due.

Se si vuole davvero farlo in un JSP, è possibile differenziare i metodi utilizzando request.getMethod(). Restituirebbe GET o POST.

Dato che si tratta di compiti a casa, suppongo che il punto sia imparare come usare i servlet e i loro metodi doX, quindi fare così.

Aggiornamento: È possibile ottenere la stringa di query (request.getQueryString()), che dista solo i parametri di ottenere, e analizzarlo, ma non direi che è una pratica comune e buono.

+0

Sì, ma ricorda che puoi includere parametri URL sui POST, quindi la domanda sulla precedenza e l'origine si applica ancora, anche in un servlet (che, ovviamente, è ciò che diventa un JSP). –

+0

Siamo tenuti ad usare JSP; e no, non sottintendere nulla sul motivo alla base solo perché è compito. Il corso mostra solo in modo casuale nuove tecnologie e ci vuole fare qualcosa senza dare istruzioni precedenti ecc. E sì, come T.J. Crowder ha detto, è ancora possibile impostare i parametri GET in una richiesta POST. – poke

+0

@poke vedere il mio aggiornamento. – Bozho

4

In JSP, è possibile esaminare l'oggetto richiesta per determinare il tipo di richiesta (GET o POST), ma esiste una sola mappa dei parametri.

-2

Prova [Servlet + JSP]. A Servlet puoi scegliere tra doPost() o doGet()