web-dev-qa-db-de.com

Unterschied zwischen getAttribute () und getParameter ()

Was ist der Unterschied zwischen den Methoden getAttribute() und getParameter() in der Klasse HttpServletRequest?

268
priya
  • getParameter() gibt http-Anforderungsparameter zurück. Diese wurden vom Client an den Server übergeben. Zum Beispiel http://example.com/servlet?parameter=1. Kann nur String zurückgeben

  • getAttribute() ist nur für die serverseitige Verwendung vorgesehen - Sie füllen die Anforderung mit Attributen, die Sie in 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 eine Zeichenfolge.

307
Bozho

Im Allgemeinen ist ein Parameter ein Zeichenfolgenwert, von dem am häufigsten bekannt ist, dass er vom Client an den Server gesendet (z. B. ein Formularpost) und von Servlet-Anforderung abgerufen wird. Die frustrierende Ausnahme ist ServletContext-Anfangsparameter . Hierbei handelt es sich um Zeichenfolgenparameter, die in der Datei web.xml konfiguriert sind und auf dem Server vorhanden sind.

Ein Attribut ist eine Servervariable, die in einem bestimmten Bereich existiert, d. H .:

  • application, verfügbar für die gesamte Laufzeit der Anwendung
  • session, verfügbar für die Dauer der Sitzung
  • request, nur für die Gültigkeitsdauer der Anforderung verfügbar
  • page (nur JSP), nur für die aktuelle JSP-Seite verfügbar
43
krock

request.getParameter ()

Wir verwenden request.getParameter(), um Anforderungsparameter zu extrahieren (d. H. Daten, die durch das Posten eines HTML-Formulars gesendet wurden). Die Funktion request.getParameter() gibt immer den Wert String zurück und die Daten stammen vom Client.

request.getAttribute ()

Wir verwenden request.getAttribute(), um ein Objekt zum Anforderungsbereich auf der Serverseite hinzuzufügen, d. H. Mit request.setAttribute(). Sie können hier einen beliebigen Objekttyp hinzufügen, Strings, Benutzerdefinierte Objekte, und zwar ein beliebiges Objekt. Sie fügen der Anforderung das Attribut hinzu und leiten die Anforderung an eine andere Ressource weiter, der Client weiß davon nichts. Der gesamte Code, der damit umgeht, befindet sich normalerweise in JSP/Servlets. Sie können request.setAttribute() verwenden, um zusätzliche Informationen hinzuzufügen und die aktuelle Anforderung an eine andere Ressource weiterzuleiten/umzuleiten.

Betrachten Sie zum Beispiel über first.jsp,

//First Page : first.jsp
<%@ page import="Java.util.*" import="Java.io.*"%>
<% request.setAttribute("PAGE", "first.jsp");%>
<jsp:forward page="/second.jsp"/>

und second.jsp:

<%@ page import="Java.util.*" import="Java.io.*"%>
From Which Page : <%=request.getAttribute("PAGE")%><br>
Data From Client : <%=request.getParameter("CLIENT")%>

Führen Sie in Ihrem Browser first.jsp aus? CLIENT = you und die Ausgabe in Ihrem Browser ist

From Which Page : *first.jsp*
Data From Client : you

Der grundlegende Unterschied zwischen getAttribute() und getParameter() besteht darin, dass die erste Methode ein (serialisiertes) Java) - Objekt extrahiert und die andere Methode einen String-Wert bereitstellt In einigen Fällen wird ein Name angegeben, damit sein Wert (sei es ein String oder eine Java bean)) nachgeschlagen und extrahiert werden kann.

32
AVI

Es ist wichtig zu wissen, dass Attribute nicht Parameter sind.

Der Rückgabetyp für Attribute ist Object, während der Rückgabetyp für einen Parameter String ist. Beachten Sie beim Aufrufen der getAttribute(String name) -Methode, dass die Attribute umgewandelt werden müssen.

Zusätzlich gibt es keine servletspezifischen Attribute und keine Sitzungsparameter.

Dieser Beitrag wurde mit dem Ziel verfasst, eine Verbindung zu @ Bozhos Antwort herzustellen, um zusätzliche Informationen bereitzustellen, die für andere Personen nützlich sein können.

26
oneiros

Der Unterschied zwischen getAttribute und getParameter besteht darin, dass getParameter den Wert eines Parameters zurückgibt, der von einem HTML-Formular übermittelt oder in einer Abfragezeichenfolge enthalten war. getAttribute gibt ein Objekt zurück, das Sie in der Anforderung festgelegt haben. Dies kann nur in Verbindung mit einem RequestDispatcher verwendet werden. Mit einem RequestDispatcher leiten Sie eine Anfrage an eine andere Ressource (JSP/Servlet) weiter. Bevor Sie die Anfrage weiterleiten, können Sie ein Attribut festlegen, das für die nächste Ressource verfügbar ist.

9
Abhi

-getParameter ():

<html>
<body>
<form name="testForm" method="post" action="testJSP.jsp">
<input type="text" name="testParam" value="ClientParam">
<input type="submit">
</form>
</body>
</html>

    <html>
    <body>
    <%
    String sValue = request.getParameter("testParam");
    %>
    <%= sValue %>
    </body>
    </html>

request.getParameter("testParam") erhält den Wert aus der angegebenen Form des Eingabefelds mit dem Namen "testParam", das "Client param" ist. Es wird dann ausgedruckt, sodass "Client Param" auf dem Bildschirm angezeigt wird. Request.getParameter () ruft also einen vom Client übermittelten Wert ab. Sie erhalten den Wert auf der Serverseite.

-getAttribute ():request.getAttribute(), dies ist alles serverseitig erledigt. SIE fügen der Anfrage das Attribut hinzu und SIE senden die Anfrage an eine andere Ressource, der Client weiß nichts davon. Der gesamte Code, der damit umgeht, befindet sich normalerweise in servlets.getAttribute und gibt immer ein Objekt zurück.

5
Reetika

getParameter - Wird verwendet, um die benötigten Informationen von der HTML-Seite des Kunden abzurufen

getAttribute - Hiermit werden die zuvor auf einer anderen oder derselben JSP- oder Servlet-Seite festgelegten Parameter abgerufen.

Grundsätzlich gibt es keine Möglichkeit, die gewünschten Informationen zu erhalten, wenn 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 Attribut set, um sie in einer Sitzungsvariablen zu speichern.

Mit getAttribute können Sie die Sitzungsvariable abrufen.

4
PaulStevens

Ein weiterer Fall, in dem Sie .getParameter() verwenden sollten, ist die Weiterleitung mit Parametern in jsp:

<jsp:forward page="destination.jsp">
    <jsp:param name="userName" value="hamid"/>
</jsp:forward>

Im destination.jsp, können Sie userName wie folgt zugreifen:

request.getParameter("userName")
3
Hamid Mohayeji

from http://www.coderanch.com/t/361868/Servlets/Java/request-getParameter-request-getAttribute

Ein "Parameter" ist ein Name/Wert-Paar, das vom Client an den Server gesendet wird - normalerweise aus einem HTML-Formular. Parameter können nur Zeichenfolgenwerte enthalten. Manchmal (z. B. mithilfe einer GET-Anforderung) werden diese direkt in die URL codiert (nach dem?, Jeweils in der Form name = value und jedes Paar durch ein & getrennt). In anderen Fällen werden sie beim Verwenden von Methoden wie POST in den Hauptteil der Anforderung aufgenommen.

Ein "Attribut" ist ein serverlokaler Speichermechanismus - nichts, was in Attributen mit Gültigkeitsbereich gespeichert ist, wird jemals außerhalb des Servers übertragen, sofern Sie dies nicht ausdrücklich zulassen. Attribute haben Stringnamen, speichern jedoch Objektwerte. Beachten Sie, dass Attribute spezifisch für Java (sie speichern Java Objekte)) sind, während Parameter plattformunabhängig sind (sie sind nur formatierte Zeichenfolgen, die aus generischen Bytes bestehen).

Insgesamt gibt es vier Bereiche von Attributen: "Seite" (nur für JSPs und Tag-Dateien), "Anforderung" (beschränkt auf die aktuelle Client-Anforderung, die nach Abschluss der Anforderung zerstört wird), "Sitzung" (in der Client-Sitzung gespeichert, ungültig) Nach Beendigung der Sitzung wird "application" angezeigt (Zugriff für alle Komponenten während der gesamten bereitgestellten Lebensdauer Ihrer Anwendung).

Die Quintessenz lautet: Verwenden Sie Parameter, wenn Sie Daten vom Client abrufen, und Attribute mit Gültigkeitsbereich, wenn Sie Objekte auf dem Server speichern, die nur von Ihrer Anwendung intern verwendet werden.

3
Bhavin Shah