Wie wird das Attributfeld einer HttpServletRequest einer unformatierten HTTP-Anfrage zugeordnet?

8

In Java kann das Attributfeld eines HttpServletRequest-Objekts mithilfe der getAttribute-Methode abgerufen werden:

%Vor%

Wo die HttpServletRequest-Attributdaten in einer unformatierten HTTP-Anfrage gespeichert werden? Ist es im Körper der Anfrage?

Ich versuche zum Beispiel eine rohe GET HTTP-Anfrage zu erstellen, die mit einem Client-Programm an mein Servlet gesendet wird. Meine servlet.doGet () -Methode würde etwa so aussehen:

%Vor%

Wo sollte ich die 'my.username' Daten in die rohe HTTP Anfrage einfügen, so dass die 'myAttribute' Zeichenfolge nach der Zuweisung den Wert "John Doe" erhält?

    
Alceu Costa 26.05.2009, 16:17
quelle

3 Antworten

12

Um der @ gid-Antwort hinzuzufügen, sind Attribute in der HTTP-Anfrage in keiner Weise vorhanden, wenn sie über die Leitung läuft. Sie werden (durch Ihren Code) bei der Bearbeitung der Anfrage erstellt. Eine sehr häufige Verwendung besteht darin, dass ein Server einige Attribute (aka create) setzt und dann an eine JSP weiterleitet, die diese Attribute verwendet. Das heißt, eine HTTP-Anfrage kommt an und wird an ein Servlet gesendet. Das Servlet fügt einige Attribute hinzu. Eine zusätzliche serverseitige Verarbeitung wird durchgeführt, wobei schließlich die Seite an eine JSP gesendet wird, wo die Attribute verwendet werden. Die Antwort wird in der JSP generiert. Die HTTP-Anfrage und die HTTP-Antwort enthalten keine Attribute. Attribute sind 100% rein serverseitige Informationen.

Wenn eine einzelne HTTP-Anforderung abgeschlossen ist, werden die Attribute für die Garbage Collection verfügbar (sofern sie nicht an einem anderen Ort, z. B. einer Sitzung, beibehalten werden). Attribute sind nur einem einzelnen Anfrageobjekt zugeordnet.

    
Eddie 26.05.2009, 16:55
quelle
17

Nur um klar zu sein, wie ich denke @ Jons Antwort macht es nicht vollkommen klar. Die Werte für "getAttribute" und "setAttribute" in "HttpServletRequest" sind nicht vorhanden, wenn sie tatsächlich über die Verbindung gesendet werden, sie sind nur serverseitig.

%Vor%     
Gareth Davis 26.05.2009 16:34
quelle
3

Ich denke, was er wirklich fragt ist: "Wie bekomme ich Parameter in mein Programm", keine Attribute. Wenn das die Frage ist, dann senden Parameter in der GET-Anfrage als Teil der URL (nach einem Fragezeichen, Ссылка ) rufen Sie sie dann mit request.getParameter ("name") und request.getParameter ("Alter") oder was immer Sie brauchen.

    
Mi5ke 15.09.2009 10:50
quelle

Tags und Links