Différence entre getAttribute () et getParameter()

Quelle est la différence entre les méthodes getAttribute() et getParameter() dans la classe HttpServletRequest?

244
demandé sur javanna 2011-03-09 12:33:29

10 réponses

  • getParameter() renvoie les paramètres de requête http. Ceux qui sont passés par le client vers le serveur. Par exemple http://example.com/servlet?parameter=1. Peut seulement revenir String

  • getAttribute() est pour le serveur-côté utilisation: vous remplissez la demande avec les attributs que vous pouvez utiliser dans la même demande. Par exemple - vous définissez un attribut dans un servlet et le lisez à partir d'un JSP. Peut être utilisé pour n'importe quel objet, pas seulement une chaîne.

284
répondu Bozho 2014-03-20 05:32:01

Généralement, un paramètre est une valeur de chaîne qui est le plus communément connue pour être envoyée du client au serveur (par exemple un post de formulaire) et récupérée à partir de la demande de servlet . L'exception frustrante à ceci est ServletContext paramètres initiaux qui sont des paramètres de chaîne qui sont configurés dans le web.xml et existent sur le serveur.

Un attribut est une variable serveur qui existe dans une portée spécifiée, c'est-à-dire:

  • application, disponible pour la vie de l'application entière
  • session, disponible pour la durée de la session
  • request, disponible uniquement pour la durée de vie de la demande
  • page (JSP uniquement), disponible pour la page JSP actuelle uniquement
40
répondu krock 2011-04-08 08:24:14

, Il est crucial de savoir que attributs ne sont pas paramètres.

Le type de retour pour les attributs est un objet , alors que le type de retour pour un paramètre est une chaîne . Lorsque vous appelez la méthode getAttribute(String name), gardez à l'esprit que les attributs doivent être convertis.

En Outre, pas de servlet attributs spécifiques, et il n'y a pas paramètres de session.

Ce post est écrit dans le but de se connecter sur la réponse de @Bozho, que des informations supplémentaires qui peuvent être utiles pour d'autres personnes.

25
répondu oneiros 2012-11-28 19:26:27

Demande.getParameter()

Nous utilisons request.getParameter() pour extraire les paramètres de requête (c'est-à-dire les données envoyées en postant un formulaire html ). Le request.getParameter() renvoie toujours la valeur String et les données proviennent du client.

Demande.getAttribute()

Nous utilisons request.getAttribute() pour obtenir un objet ajouté à la portée de la requête côté serveur, c'est-à-dire en utilisant request.setAttribute(). Vous pouvez ajouter n'importe quel type d'objet que vous voulez ici, Strings, objets Personnalisés, en fait, n'importe quel objet. Vous ajoutez l'attribut à la requête et transmettre la demande à une autre ressource, le client ne sait pas à ce sujet. Donc, tout le code gérant cela serait généralement dans JSP / servlets. Vous pouvez utiliser request.setAttribute() pour ajouter des informations supplémentaires et transférer/rediriger la requête actuelle vers une autre ressource.

Par exemple, considérez about first.jsp,

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

Et deuxième.jsp:

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

À partir de votre navigateur, exécutez en premier.jsp?CLIENT = Vous et la sortie sur votre navigateur est

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

La différence fondamentale entre getAttribute() et getParameter() est que la première méthode extrait un objet Java (sérialisé) et l'autre fournit une valeur de chaîne. Dans les deux cas, un nom est donné afin que sa valeur (que ce soit une chaîne ou un bean java) puisse être recherchée et extraite.

24
répondu AVI 2016-04-21 06:28:06

La différence entre getAttribute et getParameter est que getParameter retournera la valeur d'un paramètre qui a été soumis par un formulaire HTML ou qui a été inclus dans une chaîne de requête. getAttribute renvoie un objet que vous avez défini dans la demande, la seule façon vous pouvez l'utiliser en conjonction avec un RequestDispatcher. Vous utilisez un RequestDispatcher pour transférer une requête à une autre ressource (JSP / Servlet). Donc avant de transférer la requête vous pouvez définir un attribut qui sera disponible à la ressource suivante.

9
répondu Abhi 2013-11-20 06:11:36

getParameter - est utilisé pour obtenir les informations dont vous avez besoin à partir de la page HTML du Client

getAttribute - Ceci est utilisé pour obtenir les paramètres définis précédemment dans une autre page ou la même page JSP ou Servlet.

Fondamentalement, si vous transférez ou passez simplement d'un JSP/servlet à un autre, il n'y a aucun moyen d'avoir les informations que vous voulez sauf si vous choisissez de les placer dans un objet et d'utiliser l'attribut set pour stocker dans une variable de Session.

En utilisant getAttribute, vous pouvez récupérer la variable de Session.

3
répondu PaulStevens 2014-07-24 21:25:45

-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") obtiendra la valeur du formulaire posté de la boîte de saisie nommée " testparam "qui est " client param". Il va ensuite l'imprimer, de sorte que vous devriez voir "client Param" sur l'écran. En font la demande.getParameter() récupère une valeur que le client a soumise. Vous obtiendrez la valeur côté serveur.

-getAttribute() : request.getAttribute(), tout cela est fait Côté Serveur. Vous ajoutez l'attribut à la demande et vous soumettez la demande pour une autre ressource, le client ne le sait pas. Donc, tout le code qui gère cela serait généralement dans les servlets.getAttribute retourne toujours l'objet.

3
répondu Reetika 2015-07-25 12:28:28

Un autre cas où vous devez utiliser .getParameter() est lors du transfert avec des paramètres dans jsp:

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

Dans destination.jsp, vous pouvez accéder userName comme ceci:

request.getParameter("userName")
1
répondu Hamid Mohayeji 2017-08-08 08:03:46

Depuis http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute

Un "paramètre" est une paire nom/valeur envoyée du client au serveur - typiquement, à partir D'un formulaire HTML. Les paramètres ne peuvent avoir que des valeurs de chaîne. Parfois (par exemple en utilisant une requête GET), vous verrez ces encodé directement dans L'URL (après le ? chacun sous la forme nom=valeur, et chaque paire séparée par un&). D'autres fois, ils sont inclus dans le corps de la demande, lors de l'utilisation de méthodes telles que POST.

Un "attribut" est un mécanisme de stockage local du serveur-rien stocké dans scoped attributs est jamais transmis en dehors du serveur sauf si vous explicitement que cela se produise. Les attributs ont des noms de chaîne, mais stockent Les valeurs de l'objet. Notez que les attributs sont spécifiques à Java (ils stockent Objets Java), tandis que les paramètres sont indépendants de la plate-forme (ils sont uniquement les chaînes formatées composées d'octets génériques).

Il y a quatre portées des attributs au total: "page "(pour JSP et tag les fichiers uniquement), "demande" (limitée à la demande du client, détruit une fois la demande terminée), "session" (stockée dans le session du client, invalidée après la fin de la session), "application" (existe pour tous les composants à accéder pendant toute la durée durée de vie déployée de votre application).

La ligne de fond est: utiliser des paramètres lors de l'obtention de données à partir du client, utilisez des attributs étendus lors du stockage d'objets sur serveur pour utilisé en interne par votre demande.

0
répondu Bhavin Shah 2016-03-01 05:49:45

Différence Fondamentale entre les getAttribute() et getParameter() est le type de retour.

java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)
-6
répondu Chirag Visavadiya 2014-09-05 15:37:57