¿Cuál es la diferencia entre getAttribute()
y los getParameter()
métodos dentro de la HttpServletRequest
clase?
¿Cuál es la diferencia entre getAttribute()
y los getParameter()
métodos dentro de la HttpServletRequest
clase?
Respuestas:
getParameter()
devuelve parámetros de solicitud http. Los pasados del cliente al servidor. Por ejemplo http://example.com/servlet?parameter=1
. Solo puede volverString
getAttribute()
es solo para uso del lado del servidor: completa la solicitud con atributos que puede usar dentro de la misma solicitud. Por ejemplo, establece un atributo en un servlet y lo lee desde un JSP. Se puede usar para cualquier objeto, no solo cadena.
${attrName}
en una página jsp, ¿esos son los atributos que configuras request.getSession().setAttribute()
?
getAttribute()
no es solo para uso del lado del servidor: puede obtener los datos de atributos en el front-end, en páginas jsp, por ejemplo, y mostrarlos
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 excepción frustrante a esto son 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 alcance especificado, es decir:
application
, disponible para toda la vida de la aplicaciónsession
, disponible para toda la vida de la sesiónrequest
, solo disponible durante la vigencia de la solicitudpage
(Solo JSP), disponible solo para la página JSP actual request.getParameter ()
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 String
y los datos provienen del cliente.
request.getAttribute ()
Usamos request.getAttribute()
para agregar un objeto al alcance de la solicitud en el lado del servidor, es decir, usar request.setAttribute()
. Puede agregar cualquier tipo de objeto que desee aquí, Strings
Objetos personalizados, de hecho cualquier objeto. Agregue el atributo a la solicitud y reenvíe 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 usar 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 second.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 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 una cadena o un Java Bean) se pueda buscar y extraer.
Es crucial saber que los atributos no son parámetros .
El tipo de retorno para atributos es un Objeto , mientras que el tipo de retorno para un parámetro es una Cadena . Al llamar al getAttribute(String name)
método, 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 .
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.
La diferencia entre getAttribute y getParameter es que getParameter devolverá el valor de un parámetro que se envió mediante un formulario HTML o que se incluyó 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 () :
<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 del formulario publicado del cuadro de entrada llamado "testParam", que es "Parámetros del cliente". Luego lo imprimirá, por lo que debería ver "Parámetros del cliente" en la pantalla. Entonces request.getParameter () recuperará un valor que el cliente ha enviado. Obtendrá el valor en el lado del servidor.
- getAttribute (): todo
request.getAttribute()
esto se realiza en el lado del servidor. USTED agrega el atributo a la solicitud y envía la solicitud a otro recurso, el cliente no lo sabe. Entonces, todo el código que maneja esto normalmente estaría en servlets.getAttribute siempre devuelve el objeto.
getParameter
- Se utiliza para obtener la información que necesita de la página HTML del cliente
getAttribute
- Esto se utiliza 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 colocarlos en un Objeto y usar el atributo set para almacenar en una variable de Sesión.
Con getAttribute, puede recuperar la variable de sesión.
de http://www.coderanch.com/t/361868/Servlets/java/request-getParameter-request-getAttribute
Un "parámetro" es un par de nombre / valor enviado desde el cliente al servidor, generalmente, desde un formulario HTML. Los parámetros solo pueden tener valores de cadena. A veces (p. Ej., Utilizando una solicitud GET), los verá codificados directamente en la URL (después de?, Cada uno en la forma nombre = 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: nada de lo almacenado en atributos con ámbito se transmite fuera del servidor a menos que explícitamente lo haga. Los atributos tienen nombres de cadena, pero almacenan valores de objeto. Tenga en cuenta que los atributos son específicos de Java (almacenan objetos Java), mientras que los parámetros son independientes de la plataforma (solo son cadenas formateadas compuestas de bytes genéricos).
Hay cuatro ámbitos de atributos en total: "página" (solo para JSP y archivos de etiquetas), "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 después de que finalice la sesión), "aplicación" (existe para que todos los componentes tengan acceso durante toda la vida útil desplegada de su aplicación).
La conclusión es: usar parámetros al obtener datos del cliente, usar atributos de ámbito al almacenar objetos en el servidor para uso interno de su aplicación solamente.
Otro caso en el que debe usar .getParameter()
es al reenviar parámetros en jsp:
<jsp:forward page="destination.jsp">
<jsp:param name="userName" value="hamid"/>
</jsp:forward>
En destination.jsp
, puedes acceder userName
así:
request.getParameter("userName")
La 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)