2008-10-23 16 views

Respuesta

23

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 alguna parte.

Si desea persistir atributos a través de peticiones que o bien:

  1. tienen una entrada oculta en su forma, tal como <input type="hidden" name="myhiddenvalue" value="<%= request.getParameter("value") %>" />. Esto estará disponible en el servlet como parámetro de solicitud.
  2. lo puso en la sesión (ver request.getSession() - en un JSP está disponible como simplemente session)

recomiendo el uso de la sesión, ya que es más fácil de manejar.

+0

Quizás eso no sea desafortunado. Los scriptlets de JSP son una mala práctica. Tenga cuidado al usar la sesión, es más fácil de administrar, pero a veces es "caro" en términos de escalabilidad. –

+2

Bueno, póngalo de esta manera: la sesión es probablemente mejor que cualquier otra cosa que escriba usted mismo :) Si está en un servidor de aplicaciones decente, puede realizar replicaciones, etc., y tiene opciones de almacenamiento (no solo en la memoria). –

1

corrígeme si mal ... Creo solicitud no persisten entre las páginas consecutivas ..

Piense que recorrer de la página 1 -> página 2 -> página 3.

Usted tiene algún valor establecer en el objeto de solicitud usando setAttribute desde la página 1, que recuperas en la página 2 usando getAttribute, luego si intentas configurar algo nuevamente en el mismo objeto de solicitud para recuperarlo en la página 3, falla al darte un 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 la misma cosa ha trabajado en el caso de la página 1 como:

así que creo que tendría que proceder con cualquiera de las dos opciones sugeridas por Phill.

4

La respuesta de Phil Sacre fue correcta; sin embargo, la sesión no debe usarse por el simple hecho de hacerlo. Solo debe usar esto para valores que realmente necesitan para vivir durante el tiempo de vida de la sesión, como un inicio de sesión de 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.

0

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.

2

Trate

request.getSession().setAttribute("SUBFAMILY", subFam); 
request.getSession().getAttribute("SUBFAMILY"); 
4

Si desea que sus solicitudes a persiste intente esto:

ejemplo: en su página JSP o servlet

request.getSession().setAttribute("SUBFAMILY", subFam); 

y en cualquier página de recepción usar las siguientes líneas para recuperar su sesión y datos:

SubFamily subFam = (SubFamily)request.getSession().getAttribute("SUBFAMILY"); 
3

Puede hacerlo utilizando atributos pageContext, sin embargo:

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 a la "Enter.do" url-pattern):

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.

Cuestiones relacionadas