[Java] Différence entre getAttribute () et getParameter ()



Answers

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

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

  • application , disponible pour la vie de l'ensemble de l'application
  • session , disponible pour la durée de la session
  • request , uniquement disponible pour la durée de la demande
  • page (JSP uniquement), disponible uniquement pour la page JSP en cours
Question

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




Un autre cas où vous devriez utiliser .getParameter() est lors de la transmission de 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")



La différence de base entre getAttribute () et getParameter () est le type de retour.

java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)



getParameter - Utilisé pour obtenir les informations dont vous avez besoin à partir de la page HTML du client

getAttribute - Utilisé pour obtenir les paramètres précédemment définis dans une autre page JSP ou Servlet.

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

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




request.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). request.getParameter() renvoie toujours la valeur String et les données proviennent du client.

request.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 aimez ici, Strings , objets personnalisés, en fait n'importe quel objet. Vous ajoutez l'attribut à la demande et transférez la demande à une autre ressource, le client ne le sait pas. Donc, tout le code traitant ceci serait typiquement dans JSP / servlets. Vous pouvez utiliser request.setAttribute() pour ajouter des informations supplémentaires et transférer / rediriger la requête en cours vers une autre ressource.

Par exemple, considérons à propos de first.jsp,

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

et second.jsp:

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

Depuis votre navigateur, exécutez first.jsp? CLIENT = vous et la sortie de 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 String. Dans les deux cas, un nom est donné pour que sa valeur (que ce soit une chaîne ou un bean java) puisse être recherchée et extraite.




Links