PDF de programación - 4.2 Tutorial de JSP

Imágen de pdf 4.2 Tutorial de JSP

4.2 Tutorial de JSPgráfica de visualizaciones

Publicado el 14 de Julio del 2018
441 visualizaciones desde el 14 de Julio del 2018
470,1 KB
56 paginas
Creado hace 21a (28/10/2002)
4.2 Tutorial de JSP

Introducción (1)

n Situación en el apartado anterior: el texto generado
para el aspecto (vista) de la interfaz gráfica (HTML,
WML, etc.) está mezclado con código Java
n No es posible usar herramientas de generación de HTML,

WML, etc. directamente

n La generación del texto necesita ser escrita por una persona

con conocimientos de Java => económicamente muy
costoso

n Cambios al aspecto de la interfaz gráfica requieren

recompilación, creación de un nuevo fichero .war y re-
arranque del servidor

n En una aplicación web, especialmente en Internet, los cambios

a la interfaz gráfica son muy frecuentes

Introducción (2)

n Situación a la que queremos llegar

n Separación de roles

n Personas que realizan el aspecto gráfico => diseñadores

gráficos o similares

n Conocimientos de diseño gráfico y herramientas para generación

de HTML y WML

n Personas que implementan el controlador y el modelo =>

informáticos

n Conocimientos de diseño e implementación

n Se deberían poder usar directamente las herramientas de

diseño de páginas web

n Las actualizaciones al aspecto gráfico no deben provocar un

re-arranque del servidor

Introducción (y 3)

n En este apartado

n Estudiaremos los aspectos principales de JSP (Java Server
Pages), como primer paso para alcanzar los anteriores hitos

n No resolveremos el problema de la separación de roles en su

totalidad

n Una parte la tenemos resuelta, dado que hemos aprendido ha

diseñar e implementar un modelo que no depende de la vista

n Los apartados 4.3 y 4.4 completarán los conocimientos

necesarios para resolver totalmente el problema

n Los apartados 4.5 y 4.6 ilustrarán dos aplicaciones completas

que reflejan la situación a la que queremos llegar

¿ Qué es JSP ? (1)

n ¿ Qué es JSP ?

n A modo de ejemplo, una página JSP que genera HTML

n Tiene el aspecto de una página HTML
n Puede incluir scriptlets (scripts) para generar HTML

dinámicamente

n Típicamente los scriptlets se escriben en Java

¿ Qué es JSP ? (2)

n En realidad, una página JSP es un tipo especial de servlet

(javax.servlet.jsp y javax.servlet.jsp.tagext)
orientado a generar el texto de la interfaz gráfica

Invocables por GET y POST

n

<<interface>>

javax.servlet.Servlet

<<interface>>

javax.servlet.jsp.JspPage

<<interface>>

javax.servlet.jsp.HttpJspPage

+ _jspService(request : HttpServletRequest, response : HttpServletResponse) : void

¿ Qué es JSP ? (y 3)

n ¿ Qué ocurre cuando se accede a una página JSP ?
n Si es la primera vez, el servidor de aplicaciones genera un

servlet (que implementa
javax.servlet.jsp.HttpJspPage) a partir de la
página JSP, lo compila y lo carga en memoria

n Si no es la primera vez, le pasa la petición al servlet (ya

compilado y creado en memoria)

n Si la página se ha modificado desde la última compilación, el
servidor se da cuenta, genera el nuevo servlet, lo compila y
lo carga de nuevo

Página principal del tutorial

Index.jsp

<html>

...

<ul>
<li><a href="Hello2/HelloUser.jsp?userName=Fernando+Bellas">
HelloUser by GET (userName = Fernando Bellas)</a></li>
<li><a href="Hello2/HelloUserByPost.html">HelloUser by POST</a></li>
<li><a href="<%= response.encodeURL("Portal2/MainPage.jsp") %>">
Portal-2 main page</a></li>
</ul>

...

</html>

Portal2/HelloUserByPost.html

<html>
...
<form method="POST" action="HelloUser.jsp">
<table width="100%" border="0" align="center" cellspacing="12">

<tr>

<th align="right" width="50%">User name</th>
<td align="left">

<input type="text" name="userName" size="16“

maxlength="16">

</td>
</tr>

<tr>

<td width="50%“></td>
<td align="left" width="50%">

<input type="submit" value="Say me hello">

</td>

</tr>

</table>
</form>
...
</html>

Demo HelloUser (1)

Servlet and JSP Tutorial Main Page

Clic en HelloUser by GET (userName = Fernando Bellas)

Demo HelloUser (y 2)

Servlet and JSP Tutorial Main Page

Clic en HelloUser by POST

Hello2/HelloUser.jsp

<html>
<head>
<title>HelloUser</title>
</head>

<body text="#000000" bgcolor="#ffffff">
<h1>Hello <%= request.getParameter("userName") %> </h1>

<br><br><br>

Your name written ten times:<br>

<%

%>

String name = request.getParameter("userName");

for (int i=0; i<10; i++) {

<b><%= name %></b> <br>

<%

}

%>

</body>
</html>

Comentarios

n Usa <%= expresión %> para incluir expresiones

Java
n La expresión es evaluada en tiempo de ejecución y

convertida a un String

n Usa scriptlets para incluir código Java

n <% ... %>

n Objetos implícitos

n request: javax.servlet.http.HttpServletRequest
n response: javax.servlet.http.HttpServletResponse
n session: javax.servlet.http.HttpSession
n out: javax.servlet.jsp.JspWriter
n Algunos más

n Los veremos a medida nos hagan falta

Demo Portal-2 (1)

Servlet and JSP Tutorial Main Page

Clic en Portal-2 main page

Demo Portal-2 (2)

Demo Portal-2 (y 3)

Clic en Servlet and JSP tutorial main page

Servlet and JSP Tutorial Main Page

Clic en Logout

Terminar y lanzar el navegador dos días más tarde

Servlet and JSP Tutorial Main Page

Acceder a Servlet and JSP tutorial main page

Servlet and JSP Tutorial Main Page

Clic en Portal-2 main page

Clic en Portal-2 main page

Portal-2 login form

Organización del código

n Páginas JSP en WEB-INF/Portal-2

n MainPage.jsp
n ShowLogin.jsp
n ProcessLogin.jsp
n ProcessLogout.jsp

n En es.udc.fbellas.j2ee.servjsptutorial.portal2

n LoginManager
n LoginForm

Concepto de cookie (1)

n El API de servlets permite enviar cookies al

navegador del usuario
n Una cookie tiene un nombre y un valor asociado (cadena de

caracteres)

n Cookie cookie = new Cookie(“loginName”, loginName);
n Cada navegador debería soportar alrededor de 20 cookies

por cada sitio web al que está conectado, 300 en total y
puede limitar el tamaño de cada cookie a 4 Kbytes

n Para enviar una o varias cookies al navegador se

incluyen en la response
n response.addCookie(cookie);

n Cada vez que el navegador hace una petición, todas
las cookies relativas a esa aplicación web llegan en la
request
n Cookie[] cookies = request.getCookies();

Concepto de cookie (2)

n Tiempo de vida de una cookie

n cookie.setMaxAge(seconds);
n seconds > 0 => la cookie se almacenará

persistentemente en el navegador durante ese número de
segundos

n Los navegadores suelen almacenar este tipo de cookies en

ficheros locales

n seconds == 0 => eliminar la cookie
n seconds < 0 => la cookie no se almacenará

persistentemente y dejará de existir cuando el navegador
termine su ejecución

n Los navegadores mantienen este tipo de cookies en memoria

Concepto de cookie (3)

n En el ejemplo

n Gestión de la sesión: idem ejemplo anterior
n Se valida nombre de login y password de forma ficticia

n La password es válida si es igual al nombre de login

n Cada vez que un usuario hace login correctamente, se le

crea una sesión, y si ha seleccionado “recordar mi
password”, se le envían a su navegador dos cookies:
loginName y password, con tiempo de vida = 30 días
n Cada vez que un usuario accede a la página principal del

portal, si su sesión no existe o no tiene el loginName en la
sesión, se comprueba si en la request llegan las cookies
loginName y password, y que son correctas

n En caso afirmativo, se le crea una sesión y se le redirige a la

página principal

n En caso negativo, se le redirige a la página de login

n Cada vez que el usuario hace un logout, se le destruye su

sesión, se eliman las cookies de su navegador y se le
redirige a la página principal del tutorial

Concepto de cookie (y 4)

n Seguridad

n En un ejemplo real, el valor de la cookie password sería la

password cifrada

n MiniPortal lo hará así

n Aún así, las cookies no son un mecanismo seguro para el

usuario

n Si un usuario tiene acceso al fichero de cookies de otra

persona, puede copiar las cookies loginName y password a
su fichero de cookies, y por tanto, entrar en la aplicación web
con su identidad

n Los sitios web que tienen la opción de “recordar mi password”

suelen advertir del problema

es.udc.fbellas.j2ee.servjsptutorial.portal2.LoginManager (1)

public final class LoginManager {

private final static String LOGIN_NAME_SESSION_ATTRIBUTE =

"loginName";

private static final String LOGIN_NAME_COOKIE = "loginName";
private static final String PASSWORD_COOKIE = "password";

private static final int

COOKIES_TIME_TO_LIVE_REMEMBER_MY_PASSWORD =

30 * 24 * 3600; // 30 days

private static final int COOKIES_TIME_TO_LIVE_REMOVE = 0;

private LoginManager() {}

es.udc.fbellas.j2ee.servjsptutorial.portal2.LoginManager (2)

public final static void login(HttpServletRequest request,

HttpServletResponse response, String loginName,
String password, boolean rememberMyPassword)
throws IncorrectPasswordException {

validateLogin(loginName, password);

HttpSession session = request.getSession(true);
session.setAttribute(LOGIN_NAME_SESSION_ATTRIBUTE, loginName);

if (rememberMyPassword) {

leaveCookies(response, loginName, password,

COOKIES_TIME_TO_LIVE_REMEMBER_MY_PASSWORD);

}

}

es.udc.fbellas.j2ee.servjsptutorial.portal2.LoginManager (3)

public final static void logout(HttpServletRequest request,

HttpServletResponse response) {

HttpSession session = request.getSession(false);

if (session != null) {

session.invalidate();

}

leaveCookies(response, "", "", COOKIES_TIME_TO_LIVE_REMOVE);

}

es.udc.fbellas.j2ee.servjsptutorial.portal2.LoginManager (4)

public final static String getLoginName(

HttpServletRequest request) {

/* Try to get login name from session. */
String loginName = null;
HttpSession session = request.getSession(false);

if (session != null) {

loginName = (String) session.getAttribute(

LOGIN_NAME_SESSION_ATTRIBUTE);

if (loginName != null) {

return loginName;

}

}

es.udc.fbellas.j2ee.servjsptutorial.portal2.LoginManager (5)

/*

* The user had not logged in or his/her session has expired.
* We need to check if the user has selected "remember
  • Links de descarga
http://lwp-l.com/pdf12527

Comentarios de: 4.2 Tutorial de JSP (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad