java - parametros - Usando request.setAttribute en una página JSP
session getattribute in jsp (7)
¿Es posible usar request.setAttribute
en una página JSP y luego en HTML Submit obtener el mismo atributo de solicitud en el Servlet
?
Corrígeme si está mal ... Creo que la solicitud persiste entre páginas consecutivas ...
Piensa que atraviesas desde la página 1 -> página 2 -> página 3.
Tiene algún valor establecido en el objeto de solicitud usando setAttribute de la página 1, que recupera en la página 2 usando getAttribute, luego, si intenta establecer algo nuevamente en el mismo objeto de solicitud para recuperarlo en la página 3, falla y le da valor nulo como " la solicitud que creó el JSP, y la solicitud que se genera cuando se envía el JSP son solicitudes completamente diferentes y los atributos colocados en el primero no estarán disponibles en el segundo ".
Quiero decir algo como esto en la página 2 falla:
Donde como lo mismo ha funcionado en el caso de la página 1 como:
Entonces, creo que tendría que seguir con cualquiera de las dos opciones sugeridas por Phill.
Creo que phil es la opción de solicitud correcta está disponible hasta la carga de la página. entonces, si queremos enviar valor a otra página, queremos configurarla en la etiqueta oculta o al lado de la sesión si solo necesita el valor solo en otra página y no más que eso, entonces las etiquetas ocultas son la mejor opción si necesita ese valor en más de una página en ese momento, la sesión es la mejor opción que las etiquetas ocultas.
La respuesta de Phil Sacre fue correcta; sin embargo, la sesión no debería usarse solo por el gusto de hacerlo. Solo debe usar esto para los valores que realmente necesitan vivir durante la vida de la sesión, como el inicio de sesión de un usuario. Es común ver a las personas abusar de la sesión y encontrarse con más problemas, especialmente cuando se trata de una colección o cuando los usuarios regresan a una página que visitaron anteriormente solo para descubrir que aún les quedan valores de una visita anterior. Un programa inteligente minimiza el alcance de las variables tanto como sea posible, uno malo usa demasiado la sesión.
No. Desafortunadamente, el objeto Request solo está disponible hasta que la página termine de cargarse; una vez que está completo, perderá todos los valores en él a menos que se hayan almacenado en algún lugar.
Si desea persistir atributos a través de solicitudes, necesita:
- Tenga una entrada oculta en su formulario, como
<input type="hidden" name="myhiddenvalue" value="<%= request.getParameter("value") %>" />
. Esto estará disponible en el servlet como parámetro de solicitud. - Ponlo en la sesión (mira
request.getSession()
- en un JSP esto está disponible como simplementesession
)
Recomiendo usar la sesión ya que es más fácil de administrar.
Si desea que sus solicitudes persistan intente esto:
ejemplo: en su página JSP o servlet
request.getSession().setAttribute("SUBFAMILY", subFam);
y en cualquier página de recepción use las líneas a continuación para recuperar su sesión y datos:
SubFamily subFam = (SubFamily)request.getSession().getAttribute("SUBFAMILY");
Sin embargo, puedes hacerlo usando los atributos pageContext:
En el JSP:
<form action="Enter.do">
<button type="SUBMIT" id="btnSubmit" name="btnSubmit">SUBMIT</button>
</form>
<% String s="opportunity";
pageContext.setAttribute("opp", s, PageContext.APPLICATION_SCOPE); %>
En el Servlet (vinculado al patrón url "Enter.do"):
String s=(String) request.getServletContext().getAttribute("opp");
Hay otros ámbitos además de APPLICATION_SCOPE como SESSION_SCOPE. APPLICATION_SCOPE se usa para los atributos de ServletContext.
Tratar
request.getSession().setAttribute("SUBFAMILY", subFam);
request.getSession().getAttribute("SUBFAMILY");