Attribut ist nur für http-Anfrage, die Servlets hilft, zusammenzuarbeiten
bitfishxyz
Antworten:
328
getParameter()Gibt http-Anforderungsparameter zurück. Diese wurden vom Client an den Server übergeben. Zum Beispiel http://example.com/servlet?parameter=1. Kann nur zurückkehrenString
getAttribute()ist nur für die serverseitige Verwendung vorgesehen - Sie füllen die Anforderung mit Attributen, die Sie innerhalb derselben Anforderung verwenden können. Beispiel: Sie legen ein Attribut in einem Servlet fest und lesen es aus einer JSP. Kann für jedes Objekt verwendet werden, nicht nur für Zeichenfolgen.
Ich nehme an, wenn Sie so etwas wie ${attrName}eine JSP-Seite verwenden, sind dies die Attribute, die Sie verwenden request.getSession().setAttribute()?
ha9u63ar
Kann ich ein Anforderungsattribut für eine Post-Redirect-Get-Anforderung zwischen Servern festlegen, da die Anforderungsattribute auf der Serverseite gespeichert sind? Ich möchte Informationen von einem Server zu einem anderen Server in JSF über ein Attribut in einer Umleitungsanforderung senden. Ich kann ab sofort per POST-Anfrage senden.
user2918640
In diesem Fall scheint "Parameter" gleichbedeutend mit "
Abfragezeichenfolge
getAttribute()ist nicht nur für die serverseitige Verwendung
gedacht
49
Im Allgemeinen ist ein Parameter ein Zeichenfolgenwert, von dem am häufigsten bekannt ist, dass er vom Client an den Server gesendet wird (z. B. ein Formularbeitrag) und von der Servlet-Anforderung abgerufen wird . Die frustrierende Ausnahme hiervon sind ServletContext-Anfangsparameter, bei denen es sich um Zeichenfolgenparameter handelt, die in web.xml konfiguriert sind und auf dem Server vorhanden sind.
Ein Attribut ist eine Servervariable, die in einem bestimmten Bereich vorhanden ist, dh:
application, verfügbar für die Lebensdauer der gesamten Anwendung
session, verfügbar für die Dauer der Sitzung
request, nur für die Dauer der Anfrage verfügbar
page (Nur JSP), nur für die aktuelle JSP-Seite verfügbar
"Im Allgemeinen ist ein Parameter ein Zeichenfolgenwert" Was könnten wir außer Zeichenfolgen senden?
Honig
^ Objekte wie im Fall von request.setAttribute
Arijit
37
request.getParameter ()
Wir verwenden request.getParameter(), um Anforderungsparameter zu extrahieren (dh Daten, die durch das Posten eines HTML-Formulars gesendet werden). Der Wert wird request.getParameter()immer Stringzurückgegeben und die Daten stammen vom Client.
request.getAttribute ()
Wir verwenden request.getAttribute(), um ein Objekt auf der Serverseite zum Anforderungsbereich hinzuzufügen, dh mit request.setAttribute(). Sie können hier einen beliebigen Objekttyp hinzufügen Strings, benutzerdefinierte Objekte, in der Tat ein beliebiges Objekt. Sie fügen das Attribut der Anforderung hinzu und leiten die Anforderung an eine andere Ressource weiter. Der Client weiß davon nichts. Der gesamte Code, der dies behandelt, befindet sich normalerweise in JSP / Servlets. Sie können request.setAttribute()zusätzliche Informationen hinzufügen und die aktuelle Anforderung an eine andere Ressource weiterleiten / umleiten.
Führen Sie in Ihrem Browser first.jsp? CLIENT = you und die Ausgabe in Ihrem Browser aus
FromWhichPage:*first.jsp*DataFromClient: you
Der grundlegende Unterschied zwischen getAttribute()und getParameter()besteht darin, dass die erste Methode ein (serialisiertes) Java-Objekt extrahiert und die andere einen String-Wert bereitstellt. In beiden Fällen wird ein Name angegeben, damit sein Wert (sei es ein String oder eine Java-Bean) nachgeschlagen und extrahiert werden kann.
Dies war ein großartiges Beispiel. Dies sollte die akzeptierte Antwort sein. Die akzeptierte Antwort ist richtig, aber für Neuankömmlinge hat ein Beispiel alles klargestellt. Danke dir.
CapturedTree
26
Es ist wichtig zu wissen, dass Attribute keine Parameter sind .
Der Rückgabetyp für Attribute ist ein Objekt , während der Rückgabetyp für einen Parameter ein String ist . Beachten Sie beim Aufrufen der getAttribute(String name)Methode, dass die Attribute umgewandelt werden müssen.
Darüber hinaus gibt es keine servletspezifischen Attribute und keine Sitzungsparameter .
Dieser Beitrag wurde mit dem Ziel verfasst, eine Verbindung zu @ Bozhos Antwort herzustellen, als zusätzliche Information, die für andere Personen nützlich sein kann.
Der Unterschied zwischen getAttribute und getParameter besteht darin, dass getParameter den Wert eines Parameters zurückgibt, der von einem HTML-Formular gesendet oder in eine Abfragezeichenfolge aufgenommen wurde. getAttribute gibt ein Objekt zurück, das Sie in der Anforderung festgelegt haben. Sie können dies nur in Verbindung mit einem RequestDispatcher verwenden. Sie verwenden einen RequestDispatcher, um eine Anforderung an eine andere Ressource (JSP / Servlet) weiterzuleiten. Bevor Sie die Anforderung weiterleiten, können Sie ein Attribut festlegen, das für die nächste Ressource verfügbar ist.
request.getParameter("testParam")Der Wert wird aus dem angegebenen Formular des Eingabefelds "testParam" abgerufen, das "Client param" lautet. Es wird dann ausgedruckt, sodass "Client Param" auf dem Bildschirm angezeigt werden sollte. Also ruft request.getParameter () einen Wert ab, den der Client übermittelt hat. Sie erhalten den Wert auf der Serverseite.
- getAttribute ():request.getAttribute() Dies ist alles serverseitig erledigt. SIE fügen das Attribut der Anfrage hinzu und SIE senden die Anfrage an eine andere Ressource. Der Client weiß davon nichts. Der gesamte Code, der dies behandelt, befindet sich normalerweise in servlets.getAttribute und gibt immer ein Objekt zurück.
getParameter - Wird verwendet, um die benötigten Informationen von der HTML-Seite des Kunden abzurufen
getAttribute - Dies wird verwendet, um die zuvor auf einer anderen oder derselben JSP- oder Servlet-Seite festgelegten Parameter abzurufen.
Grundsätzlich gibt es keine Möglichkeit, die gewünschten Informationen zu erhalten, wenn Sie sie weiterleiten oder nur von einem JSP / Servlet zu einem anderen wechseln, es sei denn, Sie fügen sie in ein Objekt ein und verwenden das set-Attribut zum Speichern in einer Sitzungsvariablen.
Mit getAttribute können Sie die Sitzungsvariable abrufen.
Ein "Parameter" ist ein Name / Wert-Paar, das vom Client an den Server gesendet wird - normalerweise aus einem HTML-Formular. Parameter können nur String-Werte haben. Manchmal (z. B. bei Verwendung einer GET-Anforderung) werden diese direkt in der URL codiert (nach dem ?, Jeweils in der Form name = value und jedes Paar durch ein & getrennt). In anderen Fällen sind sie im Hauptteil der Anforderung enthalten, wenn Methoden wie POST verwendet werden.
Ein "Attribut" ist ein serverlokaler Speichermechanismus. Nichts, was in Attributen mit Gültigkeitsbereich gespeichert ist, wird jemals außerhalb des Servers übertragen, es sei denn, Sie machen dies ausdrücklich möglich. Attribute haben Zeichenfolgennamen, speichern jedoch Objektwerte. Beachten Sie, dass Attribute spezifisch für Java sind (sie speichern Java-Objekte), während Parameter plattformunabhängig sind (sie sind nur formatierte Zeichenfolgen, die aus generischen Bytes bestehen).
Insgesamt gibt es vier Attributbereiche: "Seite" (nur für JSPs und Tag-Dateien), "Anforderung" (beschränkt auf die Anforderung des aktuellen Clients, nach Abschluss der Anforderung zerstört), "Sitzung" (in der Sitzung des Clients gespeichert, ungültig nach Beendigung der Sitzung) "Anwendung" (vorhanden, auf die alle Komponenten während der gesamten bereitgestellten Lebensdauer Ihrer Anwendung zugreifen können).
Das Fazit lautet: Verwenden Sie Parameter, wenn Sie Daten vom Client abrufen, und verwenden Sie Gültigkeitsbereichsattribute, wenn Sie Objekte auf dem Server speichern, die nur von Ihrer Anwendung intern verwendet werden.
Antworten:
getParameter()
Gibt http-Anforderungsparameter zurück. Diese wurden vom Client an den Server übergeben. Zum Beispielhttp://example.com/servlet?parameter=1
. Kann nur zurückkehrenString
getAttribute()
ist nur für die serverseitige Verwendung vorgesehen - Sie füllen die Anforderung mit Attributen, die Sie innerhalb derselben Anforderung verwenden können. Beispiel: Sie legen ein Attribut in einem Servlet fest und lesen es aus einer JSP. Kann für jedes Objekt verwendet werden, nicht nur für Zeichenfolgen.quelle
${attrName}
eine JSP-Seite verwenden, sind dies die Attribute, die Sie verwendenrequest.getSession().setAttribute()
?getAttribute()
ist nicht nur für die serverseitige VerwendungIm Allgemeinen ist ein Parameter ein Zeichenfolgenwert, von dem am häufigsten bekannt ist, dass er vom Client an den Server gesendet wird (z. B. ein Formularbeitrag) und von der Servlet-Anforderung abgerufen wird . Die frustrierende Ausnahme hiervon sind ServletContext-Anfangsparameter, bei denen es sich um Zeichenfolgenparameter handelt, die in web.xml konfiguriert sind und auf dem Server vorhanden sind.
Ein Attribut ist eine Servervariable, die in einem bestimmten Bereich vorhanden ist, dh:
application
, verfügbar für die Lebensdauer der gesamten Anwendungsession
, verfügbar für die Dauer der Sitzungrequest
, nur für die Dauer der Anfrage verfügbarpage
(Nur JSP), nur für die aktuelle JSP-Seite verfügbarquelle
request.getParameter ()
Wir verwenden
request.getParameter()
, um Anforderungsparameter zu extrahieren (dh Daten, die durch das Posten eines HTML-Formulars gesendet werden). Der Wert wirdrequest.getParameter()
immerString
zurückgegeben und die Daten stammen vom Client.request.getAttribute ()
Wir verwenden
request.getAttribute()
, um ein Objekt auf der Serverseite zum Anforderungsbereich hinzuzufügen, dh mitrequest.setAttribute()
. Sie können hier einen beliebigen Objekttyp hinzufügenStrings
, benutzerdefinierte Objekte, in der Tat ein beliebiges Objekt. Sie fügen das Attribut der Anforderung hinzu und leiten die Anforderung an eine andere Ressource weiter. Der Client weiß davon nichts. Der gesamte Code, der dies behandelt, befindet sich normalerweise in JSP / Servlets. Sie könnenrequest.setAttribute()
zusätzliche Informationen hinzufügen und die aktuelle Anforderung an eine andere Ressource weiterleiten / umleiten.Betrachten Sie zum Beispiel first.jsp,
und second.jsp:
Führen Sie in Ihrem Browser first.jsp? CLIENT = you und die Ausgabe in Ihrem Browser aus
Der grundlegende Unterschied zwischen
getAttribute()
undgetParameter()
besteht darin, dass die erste Methode ein (serialisiertes) Java-Objekt extrahiert und die andere einen String-Wert bereitstellt. In beiden Fällen wird ein Name angegeben, damit sein Wert (sei es ein String oder eine Java-Bean) nachgeschlagen und extrahiert werden kann.quelle
Es ist wichtig zu wissen, dass Attribute keine Parameter sind .
Der Rückgabetyp für Attribute ist ein Objekt , während der Rückgabetyp für einen Parameter ein String ist . Beachten Sie beim Aufrufen der
getAttribute(String name)
Methode, dass die Attribute umgewandelt werden müssen.Darüber hinaus gibt es keine servletspezifischen Attribute und keine Sitzungsparameter .
Dieser Beitrag wurde mit dem Ziel verfasst, eine Verbindung zu @ Bozhos Antwort herzustellen, als zusätzliche Information, die für andere Personen nützlich sein kann.
quelle
Der Unterschied zwischen getAttribute und getParameter besteht darin, dass getParameter den Wert eines Parameters zurückgibt, der von einem HTML-Formular gesendet oder in eine Abfragezeichenfolge aufgenommen wurde. getAttribute gibt ein Objekt zurück, das Sie in der Anforderung festgelegt haben. Sie können dies nur in Verbindung mit einem RequestDispatcher verwenden. Sie verwenden einen RequestDispatcher, um eine Anforderung an eine andere Ressource (JSP / Servlet) weiterzuleiten. Bevor Sie die Anforderung weiterleiten, können Sie ein Attribut festlegen, das für die nächste Ressource verfügbar ist.
quelle
- getParameter () :
request.getParameter("testParam")
Der Wert wird aus dem angegebenen Formular des Eingabefelds "testParam" abgerufen, das "Client param" lautet. Es wird dann ausgedruckt, sodass "Client Param" auf dem Bildschirm angezeigt werden sollte. Also ruft request.getParameter () einen Wert ab, den der Client übermittelt hat. Sie erhalten den Wert auf der Serverseite.- getAttribute ():
request.getAttribute()
Dies ist alles serverseitig erledigt. SIE fügen das Attribut der Anfrage hinzu und SIE senden die Anfrage an eine andere Ressource. Der Client weiß davon nichts. Der gesamte Code, der dies behandelt, befindet sich normalerweise in servlets.getAttribute und gibt immer ein Objekt zurück.quelle
getParameter
- Wird verwendet, um die benötigten Informationen von der HTML-Seite des Kunden abzurufengetAttribute
- Dies wird verwendet, um die zuvor auf einer anderen oder derselben JSP- oder Servlet-Seite festgelegten Parameter abzurufen.Grundsätzlich gibt es keine Möglichkeit, die gewünschten Informationen zu erhalten, wenn Sie sie weiterleiten oder nur von einem JSP / Servlet zu einem anderen wechseln, es sei denn, Sie fügen sie in ein Objekt ein und verwenden das set-Attribut zum Speichern in einer Sitzungsvariablen.
Mit getAttribute können Sie die Sitzungsvariable abrufen.
quelle
von http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute
quelle
Ein weiterer Fall, den Sie verwenden sollten,
.getParameter()
ist das Weiterleiten mit Parametern in jsp:In
destination.jsp
können SieuserName
wie folgt zugreifen :quelle
Der grundlegende Unterschied zwischen getAttribute () und getParameter () ist der Rückgabetyp.
quelle