2009-05-14 23 views
6

He realizado algunas investigaciones, y la mayoría de los ejemplos que he encontrado usan formularios (obviamente para entrada del usuario) para recopilar datos que luego pasan a otra página JSP a través del objeto de solicitud.Paso del parámetro sin uso de formularios HTML en JSP

Mi pregunta es: ¿es posible pasar un parámetro entre las páginas JSP si el parámetro no se ha establecido en las etiquetas HTML <form>?

+1

Para mí, no está del todo claro qué quiere decir con "pasar un parámetro entre páginas JSP"? ¿Son esas páginas JSP solicitudes distintas del navegador o es un despacho de solicitud del lado del servidor? ¿Y qué tipo de parámetro quieres pasar? ¿Entrada del usuario, algún estado de procesamiento/usuario, ...? – rudolfson

Respuesta

5

No hay forma de una página JSP puede decir la diferencia entre una URL GET construida manualmente, por ejemplo:

<a href="/foo.jsp?bar=baz">Go to the next JSP page</a>, frente a algo como:

<form method="get" action="/foo.jsp"> 
<input name="bar" value="baz"> 
</form> 

De cualquier manera se puede acceder a través de getParameter o getParameterValues

¿Eso es lo que estás preguntando?

3

Por lo general, se pasan datos entre las páginas servlet/JSP o JSP en los atributos del ámbito (en solicitud, sesión o aplicación). P.ej. request.setAttribute("key", data) puede establecer el atributo "clave" en un JSP, y request.getAttribute("key") le obtiene estos datos en otro JSP (si varios JSP están procesando la misma solicitud).

Es posible crear parámetros falsos al envolver su solicitud y anular getParameter y un método similar, si eso es lo que realmente necesita.

Actualización: mi respuesta está hablando de pasar datos entre varias partes que procesan la misma solicitud. Esto puede ser o no lo que usted desea, ya que su pregunta no está clara.

17

Hay algunas maneras de pasar información de una página JSP a otra.

1. Valores ocultos.

Simplemente escriba los datos en un campo de entrada dentro de un formulario con el tipo 'oculto', p. Ej.

<input type="hidden" name="mydata" value="<%=thedata%>"> 

Los datos escritos por lo tanto se publicarán cuando se envíe el formulario correspondiente. Esta puede ser una forma útil de 'llevar adelante' la información a medida que el usuario rellena una serie de diálogos, ya que todos los estados son del lado del usuario y los botones de atrás y adelante funcionarán como se espera.

2. Escritura de URL.

Adjunta parámetros a las URL en los enlaces de la página, p.

<a href="another.jsp?mydata=<%=thedata>>Go!</a> 

Esto también mantiene el estado con el cliente al tiempo que elimina la necesidad de enviar un elemento de formulario.

3. Galletas.

Debe hablar por sí mismo. El estado sigue siendo del lado del usuario, pero ahora se maneja mediante una cookie. Más frágil en algunos aspectos dado que algunas personas desactivan las cookies. También los botones de avance y retroceso pueden hacer cosas inesperadas si no se tiene cuidado

4. Del lado del servidor (sesión)

Por último se podría almacenar los datos en una variable de sesión en un JSP y recuperarlo en el siguiente, p.ej

session.setAttribute(String key, Object value) 

y

session.getAttribute(String key) 

Aquí el estado es del lado del servidor mantenido que tiene algunas ventajas (el usuario puede navegar fuera y volver sin perder su lugar, pero tiende a hacer que la parte trasera y botones de avance en el El navegador es un poco fiable a menos que tenga cuidado. Además, el valor está disponible para todas las páginas.

Sin embargo, tiene la ventaja de que la información nunca se envía al cliente y por lo tanto es más segura y más inviolable

+0

Una quinta manera es crear una POST del lado del servidor. –

Cuestiones relacionadas