Diferencia entre getAttribute () y getParameter()


¿Cuál es la diferencia entre los métodos getAttribute() y getParameter() dentro de la clase HttpServletRequest?

Author: javanna, 2011-03-09

10 answers

  • getParameter() devuelve parámetros de solicitud http. Aquellos pasados del cliente al servidor. Por ejemplo http://example.com/servlet?parameter=1. Solo se puede volver String

  • getAttribute() es solo para uso en el lado del servidor: rellena la solicitud con atributos que puedes usar dentro de la misma solicitud. Por ejemplo - usted establece un atributo en un servlet, y lo lee desde un JSP. Se puede usar para cualquier objeto, no solo para una cadena.

 284
Author: Bozho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-20 05:32:01

Generalmente, un parámetro es un valor de cadena que es más comúnmente conocido por ser enviado desde el cliente al servidor (por ejemplo, un mensaje de formulario) y recuperado de la solicitud de servlet . La excepción frustrante a esto es Parámetros iniciales de ServletContext que son parámetros de cadena que se configuran en web.xml y existen en el servidor.

Un atributo es una variable de servidor que existe dentro de un ámbito especificado, es decir:

  • application, disponible para la vida de toda la aplicación
  • session, disponible durante toda la sesión
  • request, solo disponible durante la duración de la solicitud
  • page (solo JSP), disponible solo para la página JSP actual
 40
Author: krock,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-08 08:24:14

Es crucial saber que atributos no parámetros.

El tipo de retorno para los atributos es un Objeto, mientras que el tipo de retorno para un parámetro es una cadena . Al llamar al método getAttribute(String name), tenga en cuenta que los atributos deben ser emitidos.

Además, no hay atributos específicos de servlet, y no hay parámetros de sesión.

Este post está escrito con el propósito de conectar en la respuesta de @Bozho, como información adicional que puede ser útil para otras personas.

 25
Author: oneiros,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-11-28 19:26:27

Petición.getParameter()

Utilizamos request.getParameter() para extraer parámetros de solicitud (es decir, datos enviados mediante la publicación de un formulario html ). El request.getParameter() siempre devuelve el valor String y los datos provienen del cliente.

Petición.getAttribute()

Usamos request.getAttribute() para obtener un objeto agregado al ámbito de la solicitud en el lado del servidor, es decir, usando request.setAttribute(). Puede agregar cualquier tipo de objeto que desee aquí, Strings, objetos personalizados, de hecho cualquier objeto. Agrega el atributo a la solicitud y reenviar la solicitud a otro recurso, el cliente no sabe de esto. Así que todo el código que maneja esto normalmente estaría en JSP / servlets. Puede usar request.setAttribute() para agregar información adicional y reenviar/redirigir la solicitud actual a otro recurso.

Por ejemplo,considere primero.jsp,

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

Y segundo.jsp:

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

Desde su navegador, ejecute primero.jsp?CLIENT = you y la salida en su navegador es

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

La diferencia básica entre getAttribute() y getParameter() es que el primer método extrae un objeto Java (serializado) y el otro proporciona un valor de cadena. Para ambos casos se da un nombre para que su valor (ya sea string o java bean) se pueda buscar y extraer.

 24
Author: AVI,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-21 06:28:06

La diferencia entre getAttribute y getParameter es que getParameter devolverá el valor de un parámetro que fue enviado por un formulario HTML o que fue incluido en una cadena de consulta. getAttribute devuelve un objeto que ha establecido en la solicitud, la única forma en que puede usarlo es en conjunto con un RequestDispatcher. Se utiliza un RequestDispatcher para reenviar una solicitud a otro recurso (JSP / Servlet). Así que antes de reenviar la solicitud puede establecer un atributo que será disponible para el próximo recurso.

 9
Author: Abhi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-20 06:11:36

getParameter - Se utiliza para obtener la información que necesita de la página HTML del Cliente

getAttribute - Esto se usa para obtener los parámetros establecidos previamente en otra o la misma página JSP o Servlet.

Básicamente, si está reenviando o simplemente va de un jsp/servlet a otro, no hay forma de tener la información que desea a menos que elija ponerla en un objeto y use el atributo set para almacenar en una variable de sesión.

Usando getAttribute, puedes recuperar la variable de sesión.

 3
Author: PaulStevens,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
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") obtendrá el valor de la forma publicada de la caja de entrada llamada " testParam "que es"Client param". Luego lo imprimirá, por lo que debería ver "Client Param" en la pantalla. Así lo solicito.getParameter () recuperará un valor que el cliente ha enviado. Obtendrá el valor en el lado del servidor.

-getAttribute (): request.getAttribute(), todo esto está hecho del lado del servidor. SE agrega el atributo a la solicitud y se envía la solicitud a otro recurso, el cliente no sabe acerca de esto. Así que todo el código que maneja esto normalmente estaría en servlets.getAttribute siempre devuelve el objeto.

 3
Author: Reetika,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-25 12:28:28

Otro caso en el que se debe usar .getParameter() es cuando se reenvía con parámetros en jsp:

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

En destination.jsp, puedes acceder a userName así:

request.getParameter("userName")
 1
Author: Hamid Mohayeji,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-08 08:03:46

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

Un "parámetro" es un par nombre / valor enviado desde el cliente al servidor - típicamente, de un formulario HTML. Los parámetros solo pueden tener valores de cadena. A veces (por ejemplo, usando una solicitud GET) verá estos codificado directamente en la URL (después de la ? cada uno en la forma nombre=valor, y cada par separado por un &). Otras veces, son incluido en el cuerpo de la solicitud, cuando se utilizan métodos como POST.

Un "atributo" es un mecanismo de almacenamiento local del servidor-nada almacenado en los atributos de ámbito se transmiten fuera del servidor a menos que explícitamente hacer que eso suceda. Los atributos tienen nombres de cadena, pero almacenan Valores de objeto. Tenga en cuenta que los atributos son específicos de Java (almacenan Java), mientras que los parámetros son independientes de la plataforma (son solo cadenas formateadas compuestas de bytes genéricos).

Hay cuatro ámbitos de atributos en total: "página" (para JSPs y etiqueta solo archivos), "solicitud" (limitada a la solicitud del cliente actual, destruido después de completar la solicitud), "sesión" (almacenado en el sesión del cliente, invalidada una vez finalizada la sesión), "aplicación" (existe para que todos los componentes accedan durante todo el vida útil implementada de su aplicación).

La línea de fondo es: utilice parámetros al obtener datos de la cliente, utilice atributos de ámbito al almacenar objetos en el servidor para utilizar internamente solo por su aplicación.

 0
Author: Bhavin Shah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-01 05:49:45

Diferencia Básica entre getAttribute() y getParameter() es el tipo de retorno.

java.lang.Object getAttribute(java.lang.String name)
java.lang.String getParameter(java.lang.String name)
 -6
Author: Chirag Visavadiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-09-05 15:37:57