Diferencia entre getAttribute() y getParameter()

Resuelto priya asked hace 13 años • 10 respuestas

¿ Cuáles son las diferencias entre getAttribute()y los getParameter()métodos en HttpServletRequest?

priya avatar Mar 09 '11 16:03 priya
Aceptado
  • getParameter()devuelve los parámetros de solicitud http. Estos se pasan del cliente al servidor. Por ejemplo http://example.com/servlet?parameter=1. Sólo pueden regresar String.

  • getAttribute()es solo para uso del lado del servidor : usted completa la solicitud con atributos que puede usar dentro de la misma solicitud. Por ejemplo, establece un atributo en a Servlety lo lee desde un JSP. Estos se pueden usar para cualquier objeto, no solo para cadenas.

Bozho avatar Mar 09 '2011 09:03 Bozho

Generalmente, un parámetro es un valor de cadena que se conoce más comúnmente por ser enviado desde el cliente al servidor (por ejemplo, una publicación de formulario) y recuperado de la solicitud de servlet . La frustrante excepción a esto son los 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 del servidor que existe dentro de un alcance específico, es decir:

  • application, disponible durante la vida de toda la aplicación
  • session, disponible durante la duración de la sesión
  • request, solo disponible durante la vida de la solicitud
  • page(solo JSP), disponible solo para la página JSP actual
krock avatar Mar 09 '2011 09:03 krock

solicitud.getParameter()

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

solicitud.getAttribute()

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

Por ejemplo, considere first.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 first.jsp?CLIENT=you y el resultado en su navegador será

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. En ambos casos se proporciona un nombre para que se pueda buscar y extraer su valor (ya sea una cadena o un bean Java).

AVI avatar Dec 15 '2015 17:12 AVI

Es crucial saber que los atributos no son parámetros .

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

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

Esta publicación está escrita con el propósito de conectarse con la respuesta de @Bozho, como información adicional que puede ser útil para otras personas.

oneiros avatar Nov 28 '2012 19:11 oneiros