Wie kann ich die Trennung query-string-Parameter von POST-Daten in einer java-servlet
Wenn du einen doGet oder doPost-Aufruf in ein servlet können Sie getparameterxxx()
man entweder den query-string oder post-Daten in einem leicht Platz.
Wenn der Anruf war ein ERHALTEN, Sie erhalten Daten aus der url/query-string.
Wenn der Anruf war ein POST, erhalten Sie den post-Daten die alle analysiert für Sie heraus.
Außer es stellt sich heraus, wenn Sie nicht setzen Sie ein 'action' - Attribut in deinem Formular aufrufen.
Wenn Sie geben Sie eine vollständig qualifizierte oder teilweise qualifizierte url für die Aktion param funktioniert alles Super, wenn nicht, der browser bei Aufruf der gleichen url wie auf der vorherigen Seite Einreichen, und wenn es geschieht, um query-string-Daten gibt, erhalten Sie, wie auch die POST-Daten, und es gibt keine Möglichkeit zu sagen, Sie auseinander.
Oder ist es?
Ich bin auf der Suche durch das request-Objekt, das ich sehe, wo die post-Daten kommt, ich versuche nur, um herauszufinden, wo die Daten kommt, damit ich löschen kann die Daten über einen post Aufruf und löschen Sie die post-Daten über einen GET-Aufruf, bevor es analysiert es aus, wenn möglich.
Keine Ahnung, was der sichere Weg, dies zu tun ist?
Und laß mich raten: Sie hat nie versucht, um nicht ein action-Feld in einem form-tag. 🙂
InformationsquelleAutor stu | 2009-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
In HTML, action ist ERFORDERLICH, so Schätze ich das Verhalten variieren zwischen den clients.
Ich habe noch nie sehen, aber ich habe versucht die action keine Sache, die in verschiedenen Browsern und Sie Verhalten sich alle gleich. Es hängt wahrscheinlich davon ab, wie qualifiziert der action-parameter ist...
im Rückblick auf diese Jahre später, was möglicherweise nicht offensichtlich war, dass dieses gebrochene form-tag war Teil einer großen Produktion, Anwendung, und ich hatte Angst, zu berühren, etwas, das so wichtig ist. Während also die Frage scheint dumm, das war meine Begründung in der Zeit.
InformationsquelleAutor MatthieuP
Du hast Recht, ich habe nie versucht, nicht zu einem action-Feld in einem form-tag 😉 und ich würde nicht, weil Sie sich genau, was Sie reden. (Auch, ich glaube, es ist kein Gültiger HTML-Code)
Ich kenne keine "saubere" Art und Weise zu unterscheiden zwischen GET und POST-Parameter, aber Sie können auf die raw-query-string in der
getQueryString()
Methode derHttpServletRequest
, und Sie können den Zugriff auf die rohen POST-Daten mit dergetInputStream()
Methode derServletRequest
. (Ich bin auf der Suche in der Tomcat-API-docs-speziell hier, obwohl ich denke, das sind beide Teil der standard-Servlet-API), Dann könnten Sie analysieren die POST-Daten und Daten getrennt, wenn Sie wollen. Sie wird (oder sollte eigentlich) beide gleich formatiert werden, d.h.wenn Sie möglicherweise das kaufmännische und-Zeichen ersetzt werden durch Semikolons (was Sie technisch tun können in HTTP/1.1, das wusste ich nicht, dass bis vor kurzem)
Einfach zu sagen, wenn Sie nicht Erben großes system mit vielen Formen mit keine Aktionen. 🙂 Aber ich sehe deinen Punkt. Danke.
InformationsquelleAutor David Z
Den HttpServletRequest.getParameterxxx () - Methoden unterscheiden nicht zwischen GET und POST Parameter. Wenn Sie wirklich brauchen, um zwischen Ihnen zu unterscheiden, Sie müssen analysieren Sie manuell mit getQueryString() für GET-Parameter und getInputStream()/getReader() für die POST-Daten.
InformationsquelleAutor Hilton Campbell
Ich würde schreiben ein ServletFilter und dekorieren Sie das Anfrage Objekt zu reinigen, die Dinge ein wenig (mit was Hilton oben vorgeschlagen). Dies ist die klassische Dekorator-Muster in ein drittes filter.
InformationsquelleAutor kipz