2010-11-14 15 views
10

Ich bin verpflichtet, einige kleine Aufgaben mit JSP zu tun; sehr neu zu JSP Ich fragte mich, ob es eine Möglichkeit gäbe, nur GET oder nur POST Parameter von der HTTP-Anfrage zu bekommen.JSP, GET und POST-Parameter

Ich habe gesehen ServletRequest.getParameter (und andere), aber es scheint, dass diese Methoden erhalten sowohl und POST-Parameter. Gibt es eine Möglichkeit, nur eine davon zu erhalten, ohne die URL oder die Anfrage selbst zu analysieren? Und wenn nicht, gibt es eine Vorrangregel, welche Werte überschreiben, die (wie POST-Parameter immer GET-Parameter überschreiben)?

+0

Dies ist eigentlich ein Code-Geruch. Was ist die funktionale Anforderung? Warum geben Sie GET und POST nicht einfach einen anderen Namen? – BalusC

+0

@BalusC: Es ist eigentlich ein Sicherheitsproblem. Wenn bestimmte Parameter nur als POST-Parameter (bzw. GET) gesendet werden sollen, verbessert dies die Sicherheit für den Endbenutzer. Und ich möchte nicht wirklich irgendeine Art von Parametern akzeptieren, nachdem ich gelernt habe, dies in Jahren der Erstellung von Webanwendungen zu vermeiden. – poke

+0

Dann ermitteln Sie einfach die Request-Methode oder implementieren Sie ein Servlet, mit dem Sie Code nur für eine bestimmte Methode ausführen können. Siehe Bozhos Antwort. – BalusC

Antwort

13

Im Allgemeinen sollten Anfragen besser in Servlets behandelt werden. Sie haben doGet(request, response) und doPost(request, response) Methoden, um die beiden zu unterscheiden.

Wenn Sie wirklich darauf bestehen, es in einer JSP zu tun, können Sie die Methoden unter Verwendung request.getMethod() unterscheiden. Es würde GET oder POST zurückgeben.

Da dies Hausaufgaben ist, denke ich, ist der Punkt zu lernen, Servlets und ihre doX Methoden zu verwenden, also tun Sie es so.

Update: Sie kann den Query-String bekommen (request.getQueryString()), die nur der GET-Parameter ist, und analysiert, aber ich würde eine gemeinsame und gute Praxis nicht sagen, das ist.

+0

Ja, aber denken Sie daran, dass Sie URL-Parameter in POSTs einfügen können, so dass die Frage nach Vorrang und Ursprung immer noch gilt, sogar in einem Servlet (was natürlich eine JSP ist). –

+0

Wir müssen JSP verwenden; und nein, impliziere nichts über den Grund dahinter, nur weil es Hausaufgaben sind. Der Kurs bringt nur zufällig neue Technologien hervor und möchte, dass wir etwas damit machen, ohne vorherige Anweisungen zu geben usw. Und ja, wie T.J. Crowder sagte, Sie können trotzdem GET-Parameter in einer POST-Anfrage setzen. – poke

+0

@poke siehe mein Update. – Bozho

4

In JSP können Sie das Anfrageobjekt betrachten, um festzustellen, um welche Art von Anfrage es sich handelt (GET oder POST), aber es gibt nur eine Parameterzuordnung.

-2

Versuchen Sie [Servlet + JSP]. Bei Servlet können Sie zwischen doPost() oder doGet() wählen