Diferencia entre getAttribute () y getParameter ()

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

  • getParameter() devuelve los parámetros de solicitud http. Los que pasaron del cliente al servidor. Por ejemplo http://example.com/servlet?parameter=1 . Solo se puede devolver 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, configura un atributo en un servlet y lo lee desde un JSP. Se puede usar para cualquier objeto, no solo para cuerda.

Generalmente, un parámetro es un valor de cadena que se conoce comúnmente como el que se envía desde el cliente al servidor (por ejemplo, una publicación de formulario) y se recupera de la solicitud de servlet . La excepción frustrante a esto es los parámetros iniciales de ServletContext, que son parámetros de cadena configurados en web.xml y que existen en el servidor.

Un atributo es una variable de servidor que existe dentro de un scope específico, es decir:

  • application , disponible durante toda la vida de la aplicación
  • session , disponible para 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

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

El tipo de devolución para los atributos es un Objeto , mientras que el tipo de devolución para un parámetro es una Cadena . Al invocar el getAttribute(String name) , tenga en cuenta que los atributos deben getAttribute(String name) .

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

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

request.getParameter ()

Usamos request.getParameter() para extraer los parámetros de solicitud (es decir, los datos enviados publicando un formulario html). El request.getParameter() siempre devuelve String valor de String y los datos provienen del cliente.

request.getAttribute ()

Usamos request.getAttribute() para obtener un objeto agregado al scope de la solicitud en el lado del servidor, es decir, utilizando request.setAttribute() . Puede agregar cualquier tipo de objeto que le guste aquí, Strings , objetos personalizados, de hecho cualquier objeto. Usted 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 típicamente 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 about first.jsp,

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

y second.jsp:

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

Desde su navegador, ejecute first.jsp? CLIENT = usted y el resultado 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 String. Para ambos casos, se da un nombre para que su valor (ya sea cadena o un bean Java) se pueda buscar y extraer.

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 usar esto es junto con un RequestDispatcher. Utiliza un RequestDispatcher para reenviar una solicitud a otro recurso (JSP / Servlet). Entonces, antes de reenviar la solicitud puede establecer un atributo que estará disponible para el siguiente recurso.

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

getAttribute : 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 una jsp / servlet a otra, no hay forma de tener la información que desea a menos que elija ponerlos en un Objeto y usar el atributo set para almacenar en una variable Session.

Usando getAttribute, puede recuperar la variable Session.

getParameter () :

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

request.getParameter("testParam") obtendrá el valor del formulario publicado del cuadro de entrada llamado “testParam” que es “Client param”. Luego lo imprimirá, por lo que debería ver “Client Param” en la pantalla. Entonces request.getParameter () recuperará un valor que el cliente ha enviado. Obtendrá el valor en el lado del servidor.

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

Otro caso en el que deberías usar .getParameter() es cuando .getParameter() con parámetros en jsp:

    

En destination.jsp , puede acceder a userName esta manera:

 request.getParameter("userName") 

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

Un “parámetro” es un par nombre / valor enviado del cliente al servidor, generalmente, desde un formulario HTML. Los parámetros solo pueden tener valores de cadena. A veces (por ejemplo, utilizando una solicitud GET) verá estos codificados directamente en la URL (después del?, Cada uno en el nombre del formulario = valor, y cada par separado por un &). Otras veces, se incluyen en el cuerpo de la solicitud cuando se utilizan métodos como POST.

Un “atributo” es un mecanismo de almacenamiento local del servidor; nunca se transmite nada almacenado en atributos delimitados fuera del servidor a menos que explícitamente se haga eso. Los atributos tienen nombres de cadena, pero almacenan valores de objeto. Tenga en cuenta que los atributos son específicos de Java (almacenan objetos de Java), mientras que los parámetros son independientes de la plataforma (solo son cadenas formateadas compuestas de bytes generics).

Hay cuatro ámbitos de atributos en total: “página” (solo para JSP y archivos de tags), “solicitud” (limitada a la solicitud del cliente actual, destruida después de completar la solicitud), “sesión” (almacenada en la sesión del cliente, invalidada una vez finalizada la sesión), “aplicación” (existe para que todos los componentes accedan durante toda la vida útil de su aplicación).

La conclusión es: usar parámetros al obtener datos del cliente, usar atributos de ámbito cuando se almacenan objetos en el servidor para que su aplicación los use internamente.

La diferencia básica entre getAttribute () y getParameter () es el tipo de devolución.

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