Documentos de Académico
Documentos de Profesional
Documentos de Cultura
10 DesarrolloWebConJava
10 DesarrolloWebConJava
Aplicaciones sencillas o
equipo de desarrollo
pequeo
Aplicaciones complejas o
equipo de desarrollo
grande
QU ES UN BEAN
Un bean es un objeto convencional Java, el cual tiene como propsito encapsular a otros (de ah su nombre) o
no. Para que una clase pueda ser tratada como bean debe cumplir con una serie de requisitos bsicos:
Sus atributos (propiedades) deben ser accesibles mediante mtodos getter y setters pblicos.
4.1. SERVLETS
Programas Java que se codifican en forma de clases. Los servlets heredan de la clase HttpServlet y permiten
gestionar elementos HTTP mediante las clases:
4.2. JSP
http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/
4.2.1. SCRIPTLETS
Pginas HTML con cdigo Java embebido de dos formas:
Scriptlets: cdigo Java multi-mensaje entre los smbolos <% %>. Cada mensaje debe ir separado por
punto y coma.
Expresiones: un mensaje Java que devuelve un resultado. No finaliza con punto y coma y se escribe
entre los smbolos <%= %>.
Los elementos HTTP definidos en los servlets estn predefinidos en los JSP, como:
request
response
sesin
application
Estos objetos se podrn invocar directamente sin necesidad de definirlos, como se puede ver en el siguiente
ejemplo:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1>Bienvenido</h2>
La hora actual es: <%= new java.util.Date() %>
<%
Persona p = new Persona(request.getParameter(nombre));
session.setAttribute(usuario, p);
out.println(p.getNombre());
%>
</body>
</html>
Cdigo 11. Ejemplo de JSP tratando objetos.
En el caso de que los valores a asignar a las propiedades del bean sean parmetros de una peticin POST/GET, se
utilizar param para establecer un parmetro determinado o property=* para asignar todos los
parmetros a las propiedades. En este ltimo caso, el nombre de los parmetros deber coincidir con el nombre
de la propiedad.
4.3.1. MVC 1
4.3.2. MVC 2
4.4. SESIONES
En una aplicacin web existen tres contextos diferentes de trabajo. Por un lado est el contexto de la peticin
web, como una request que realiza un usuario contra un recurso del servidor web. Cada peticin del usuario
tiene su propio de espacio de memoria independiente. Si se desea compartir un espacio de memoria entre todas
las peticiones realizadas por un mismo usuario, se debe trabajar con el concepto de sesin (session). Esto es muy
til, por ejemplo, para comprobar si el usuario est accediendo a un recurso de la aplicacin y previamente se ha
autenticado. Por ltimo, se puede compartir informacin entre todos los usuarios de la aplicacin en el espacio
de memoria de aplicacin (application).
Por defecto, cuando se crea una sesin para un usuario se genera un identificador nico para l en forma de
Cookie en su navegador. El nombre de esta Cookie es JSESSIONID.
El trabajar con sesiones, conlleva a que el usuario tenga habilitada la aceptacin de cookies en su navegador. Por
este motivo existe otra tcnica en la que se enva el identificador de sesin JSESSIONID como un parmetro ms
de la URL.
Es importante destacar que esta prctica es negativa desde el punto de vista de SEO (distintas URLs, muestran el
mismo contenido) y desde el punto de vista de seguridad, por la visibilidad del identificador de la sesin.
Aplicacin:
o Contenido del fichero web.xml:
<context-param>
<param-name>bd</param-name>
<param-value>personas</param-value>
</context-param>
this.getServletContext().getInitParameter("bd");
Sesin
o Cdigo Java de creacin de la sesin:
HttpSession sesion = request.getSession();
sesion.setAttribute("persona", p1);
Request
o Cdigo Java de acceso a un atributo de la request:
String nombre = request.getParameter(nombre));
4.5. COOKIES
Las cookies permiten persistir informacin en el lado del cliente, vinculando un servidor con el ordenador, y
nunca con el usuario. Generalmente, se utilizan para mejorar la experiencia de navegacin del usuario.
La creacin de la cookie se realiza en el servidor gracias a la clase Cookie, envindosela al navegador a travs
de la response, como se muestra en el cdigo siguiente.
Cookie c = new Cookie("usuario", request.getParameter("usuario"));
c.setComment("Control de acceso");
c.setMaxAge(60*60*24); //expresado en segundos
response.addCookie(c);
Cdigo 15. Servlet creando una cookie.
c.setHttpOnly(true);
c.setMaxAge(Integer.MAX_VALUE);
c.setMaxAge(-1);
c.setSecure(true);
A continuacin se muestra un ejemplo de cookies ledas mediante Javascript, definidas como HttpOnly y sin
definir esta propiedad.
Cdigo cliente
<script>
function leerCookies()
{
alert("Cookies leidas: " + document.cookie.split(";"));
}
</script>
Lenguaje que simplifica el proceso de recuperacin de objetos almacenados en los elementos bsicos de una
aplicacin web como son la request, session, cookies, etc. EL est basado en una notacin sencilla identificando
los objetos entre los caracteres ${.}. La ventaja del lenguaje EL es poder utilizar cualquier objeto depositado
como atributo en la request con la expresin ${objeto.propiedad}, sin necesidad de referenciar a este
mbito, ni realizar downcastings.
EL est incorporado por defecto en la especificacin JSP 2.0.
As, el acceso a los objetos depositados en la request (tpica accin de un patrn MVC) se acceder directamente.
Para el resto de elementos (parmetros, cookies, session, etc.) se utilizarn objetos predefinidos.
JSP estndar
JSP con EL
<%
ArrayList<Persona> lista =
(ArrayList<Persona>)
request.getAttribute("listaResultado");
%>
${listaResultado}
${persona.nombre}
${param["nombre"]}
Objetos predefinidos:
param
paramValues
header
headerValues
cookie
initParam
pageScope
requestScope
sessionScope
applicationScope
${sessionScope.validado}
${cookie.usuario.value}
${header['User-Agent']}
Cdigo 18. Ejemplo de acceso a elementos Java Web mediante el lenguaje EL.
4.7. JSTL
http://download.oracle.com/docs/cd/E17802_01/products/products/jsp/jstl/1.1/docs/tlddocs/
http://www.labcom.upcomillas.es/isw2/docs/JSTL.pdf
La librera JSTL est definida en la especificacin Java EE. Define un conjunto de etiquetas estandarizadas que
simplifica el desarrollo de aplicaciones MVC. Las etiquetas JSTL se organizan en 4 libreras:
<c:if test="${sessionScope.validado!=null}">
<h1>Bienvenido, ${sessionScope.nombre}.</h1>
<h2>Tu cookie de usuario es: ${cookie.usuario.value}</h2>
<h2>Tu informacin del navegador: ${header['User-Agent']}</h2>
</c:if>
Cdigo 21. Ejemplo de JSTL manipulando distintos tipos de variables: sesin, cookies y cabeceras HTTP.