0% encontró este documento útil (0 votos)
13 vistas6 páginas

A03.s2 Antes Semana03 Sesion02

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas6 páginas

A03.s2 Antes Semana03 Sesion02

Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

2.4.

session

Es un objeto de la clase HttpSession. Nos permite acceder a la sesión asociada a la petición. A


través de este objeto podemos, entre otras cosas, guardar objetos que serán accesibles desde cualquier JSP
de la sesión o invalidarla.

Para guardar y recuperar información usaremos:


Object session.getAttribute("clave");
void session.setAttribute("clave", Object objeto);

Y para invalidar la sesión:


void session.invalidate();

Ejemplo:
<%@ page session="true" %>

<%
java.util.ArrayList accesos=
(java.util.ArrayList)session.getAttribute("accesos");
if (accesos==null)
accesos=new java.util.ArrayList();
accesos.add(new java.util.Date().toString());
session.setAttribute("accesos", accesos);
if (request.getParameter("invalidaSesion")!=null)
session.invalidate();

%>

<html>
<body>
<form>
<input type="submit" name="invalidaSesion"
value="Invalidar sesión"/>
<input type="submit" value="Recargar página"/>

</form>
<br/>
Usted accedió a esta página en los
siguientes momentos: <br>
<%
for (int i=0;i<accesos.size();i++)
{
%>
<%= accesos.get(i) %>
<br>
<%
}
%>
</body>
</html>

6
2.5. application

Es un objeto de la clase ServletContext. Este objeto es común para toda la aplicación web y,
entre otras cosas, nos permite almacenar información que será accesible desde todas las páginas de la
aplicación web, independientemente de la sesión.
Para guardar y recuperar valores:
Object application.getAttribute("clave");
void application.setAttribute("clave", Object objeto);

Ejemplo:
<%@ page session="true" %>

<%
java.util.Hashtable direcciones=
(java.util.Hashtable)application
.
getAttribute("direcciones");
if (direcciones==null)
direcciones=new java.util.Hashtable();
direcciones.put(request.getRemoteAddr(),"");
application.setAttribute("direcciones", direcciones);
%>

<html>
<body>
El servidor fue accedido desde las
siguientes direcciones IP:
<br>

<%
java.util.Enumeration e=
direcciones.keys();
while (e.hasMoreElements())
{
%>
<%= e.nextElement() %>
<br>
<%
}
%>
</body>
</html>

2.6. config

Es un objeto de la clase ServletConfig. Permite acceder a parámetros de inicialización del servlet


y a su contexto.

7
2.7. pageContext

Es un objeto de la clase PageContext. Entre otras cosas, nos permite almacenar información
localmente a la página.
Para guardar y recuperar valores:
Object pageContext.getAttribute("clave");
void pageContext.setAttribute("clave", Object objeto);

También podemos usar PageContext para almacenar y recuperar información en sesión y en aplicación:

Almacenar en contexto de página:


PageContext.setAttribute("clave", obj, PageContext.PAGE_SCOPE);
PageContext.setAttribute("clave", obj);
Almacenar en contexto de sesión:
PageContext.setAttribute("clave",obj, PageContext.SESSION_SCOPE);
session.setAttribute("clave", objeto);
Almacenar en contexto de aplicación:
PageContext.setAttribute("clave",obj,PageContext.APPLICATION_SCOPE);
application.setAttribute("clave",objeto);

2.8. page

Es un sinónimo de this, no tiene utilidad en el estado actual de la especificación.

3. Comunicación entre formularios HTML y páginas JSP


En esta sección se hará un breve repaso a los formularios HTML, y veremos las distintas formas de
enviar parámetros desde un formulario y de recibirlos desde un JSP. Dejaremos al margen algunos tipos
como botones y envío de archivos, por tener relevancia sólo en lenguajes de script del lado del cliente o
quedar fuera del alcance de este tutorial.

3.1. Conceptos básicos

Un formulario HTML tiene la forma:


<form action="destino" method="método">
Elementos de formulario
</form>

En destino especificaremos la página que recibe los datos del formulario (p.e. procesaformulario.jsp),
en el atributo method podemos indicar dos valores diferentes GET y POST. Si no se especifica el
valor de los atributos, los valores por defecto son la página actual para action y GET para method
3.2. GET y POST

Cuando usamos GET, la información se codifica directamente en la URL, con la forma:


http://url?param1=valor1&param2=valor2...&paramN=valorN

Con GET no podemos manejar grandes cantidades de información, y existe la desventaja de que el
servidor o el navegador guarden en caché la página llamada. Hay que tener en cuenta que los logs del
servidor y el historial del navegador guardarán el acceso incluyendo los parámetros, lo cual hace
desaconsejable GET para el envío de información privada. Por otro lado, al visualizarse en la URL los
parámetros, facilita el desarrollo y depurado de la aplicación web, y en algunos casos, es imprescindible
para realizar estadísticas basadas en los logs del servidor.
Con POST la información se envía directamente al servidor, no se codifica en la URL, y además
permite el envío de grandes cantidades de información, como podrían ser archivos.

8
3.3. Elementos de formulario

Se indican con las etiquetas HTML:


<input type="tipo" name="nombre" value="valor"/>
<textarea name="nombre"/>Contenido por
defecto</textarea> <select name="nombre">
<option value="valorOpcion">Texto
opcion</option> [...]
</select>

Para enviar los datos usamos el tipo submit.


<input type="submit"/>

3.3.1. Campos de texto.

Los tipos que se envían como texto simple son text y password para <input>, y el elemento
<textarea>.
Ejemplo:
<form action="pagina.jsp">
<input type="text" name="parametro1"
value="valor por defecto"/>
<br>
<input type="password" name="clave"/>
<br>
<textarea name="parametro2">Texto por
defecto</textarea> <br>
<input type="submit"/>
</form>

Y en el archivo pagina.jsp:

Valor de parametro1: <%= request.getParameter("parametro1")


%> <br>
Valor de parametro2: <%= request.getParameter("parametro2")
%> <br>
Valor de parametro ‘clave’:
<%= request.getParameter("clave") %>

3.3.2. Selectores ON/OFF. Checkbox.

Se indica con el tipo checkbox.


<input type="checkbox" name="nombreCheckbox"/>

Si el checkbox está marcado, se envía un parámetro con el nombre especificado con el valor on. Si
no está marcado, no se envía el parámetro. Así que podemos recibirlo en JSP de la siguiente forma:
<%
String checkbox= request.getParameter("nombreCheckbox");

if (checkbox!=null && checkbox.equalsIgnoreCase("on"))


{
%>
Checkbox seleccionado en el formulario origen.
<%
}
else
{
%>
Checkbox NO seleccionado en el formulario origen.
<%
}

9
%>

3.3.3. Parámetros ocultos. Tipo hidden.

Se indican con el tipo hidden, los pares clave valor indicados se enviaran siempre junto con el resto
de información del formulario. Se reciben en el JSP de la misma forma que los campos de texto. Ejemplo:

<form action="pagina.jsp">
<input type="text" name="variable" value="por defecto"/>
<input type="hidden" name="fijo" value="valor fijo"/>
</form>

3.3.4. Botones radio.

Son grupos de valores ON/OFF, sólo puede haber uno seleccionado dentro del grupo con el mismo
nombre en el atributo name. Sólo se envía un parámetro para el botón seleccionado, con el valor
indicado en la etiqueta value. El valor se recibe en el JSP de forma similar a los campos de texto.
Ejemplo:
<form action="pagina.jsp">
Opcion 1 <input type="radio" name="radio"
value="uno"/> <br>
Opcion 2 <input type="radio" name="radio"
value="dos"/> <br>
<input type="submit"/>
</form>

3.3.5. Selecciones. Etiquetas <select> y <option>.

Se usan para desplegables y listas. Se especifica un nombre para el parámetro y se envía como valor
el contenido de la etiqueta <option>. Si especificamos el atributo value en la etiqueta option,
Se mostrará en el desplegable el texto en el cuerpo de la etiqueta, pero se enviará el valor especificado en
el atributo value en caso de ser la opción seleccionada.
Ejemplo:
<form action="pagina.jsp">
<select name="selectSimple">
<option value="1">Uno</option>
<option>Dos</option>
<option>Tres</option>
<option>Cuatro</option>
</select>
<input type="submit"/>
</form>

También podemos crear listas que nos permitan la selección de múltiples valores, esto se indica
añadiendo el atributo MULTIPLE al <select> en este caso se generan parámetros con el mismo
nombre para cada opción seleccionada, lo que nos obliga a recuperar estos valores con la función:
String[] getParameterValues(String name).

Ejemplo:
<form action="pagina.jsp">
<select name="selectMultiple" MULTIPLE>
<option value="1">Uno</option>
<option>Dos</option>
<option>Tres</option>
<option>Cuatro</option>
</select>
<input type="submit"/>
</form>

10
Y en pagina.jsp:
Se marcaron las siguientes entradas:
<br>
<%
String[] seleccion=
request.getParameterValues("selectMultiple");
for (int i=0;i<seleccion.length;i++)
{
%>
<%= seleccion[i] %>
<br>
<%
}
%>

3.3.6. Codificación directa en el URL.

En algunos casos resulta útil enviar directamente información a JSP, codificada en la URL.

Ejemplo:
<a href="noticias.jsp?param=nacional">Actualidad</a> <br>
<a href="noticias.jsp?param=deportes">Deportes</a> <br>
<a href="noticias.jsp?param=sociedad">Sociedad</a> <br>

Debemos tener cuidado cuando enviemos caracteres especiales, para codificar cadenas podemos usar la
función estática String java.net.URLEncoder.encode(String s);
Ejemplo:

<%
String url="armas.jsp?tipo=cañón";
String urlCodificada=
"armas.jsp?tipo="+java.net.URLEncoder.encode("cañón");
%>
Pulse un enlace y compruebe los parámetros
en la barra de direcciones. <br>

<a href="<%=url%>"/>URL sin


codificar</a> <br>
<a href="<%=urlCodificada%>"/>URL codificada</a>

También podría gustarte