JSP Java
JSP Java
Pages (JSP)
1
Contenido
1.
Introduccin a JSP
Introduccin a JSP
Pgina JSP Servlet
La pgina JSP se convierte en un servlet
La conversin la realiza en la mquina
servidora el motor o contenedor JSP, la
primera vez que se solicita la pgina JSP
Este servlet generado procesa cualquier
peticin para esa pgina JSP
Si se modifica el cdigo de la pgina JSP,
entonces se regenera y recompila
Traduce
Compila
automticamente
el
servlet
y se
recarga la
Fichero.jsp
ServletJsp.java
ServletJsp.class
Motor
Compila
prxima vez
que
sea
solicitada
JSP
dor java
Funcionamiento
Peticin
fichero.jsp
Cliente
Servidor
Web
Respuesta
peticin
respuesta
Extensiones
del servidor
1 vez
Motor
JSP
1 vez
Analizador
JSP
Fichero.JSP
respuesta
Motor
Servlet
respuesta
peticin
1 vez
Compilador
Java
ServletJSP.java
Cargador
Clases
ServletJSP.class
...
if (_jspx_inited == false) {
_jspx_init();
_jspx_inited = true;
}
_jspxFactory = JspFactory.getDefaultFactory();
response.setContentType("text/HTML;charset=ISO-8859-1");
pageContext =
_jspxFactory.getPageContext(this, request, response,"",
true, 8192, true);
application = pageContext.getServletContext();
config = pageContext.getServletConfig();
session = pageContext.getSession();
out = pageContext.getOut();
Objetos implcitos
Objetos implcitos
Objetos implcitos
mbitos
Define dnde y durante cuanto tiempo estn
accesibles los objetos (Objetos implcitos,
JavaBeans, etc)
Tipos de mbitos:
de pgina. El objeto es accesible por el servlet
que representa la pgina
de peticin
de sesin. El objeto es accesible durante toda
la sesin, desde los servlets a los que se
accede
de aplicacin. El objeto es accesible por el
servlet que representa la pgina
Ejemplo de objetos
implcitos
Formulario HTML
(pide datos al cliente)
Objeto request
(contiene los parmetros de
la peticin)
Pgina JSP
(muestra saludo
personalizado al cliente)
Ejemplo de objetos
implcitos
Fichero HTML que pide los datos al cliente
(ej2_saludo.html)
<HTML>
<head>
<title> Formulario de peticin de nombre </title>
</head>
<body>
<h1> Formulario de peticin de nombre </h1>
<!-- Se enva el formulario al JSP saludo.jsp -->
<form method="post" action="saludo.jsp" >
<p> Por favor, introduce tu nombre:
<input type="text" name="nombre">
</p>
<p>
<input type="submit" value="enviar informacin">
</p>
</form> </body>
</HTML>
Ejemplo de objetos
implcitos
Cdigo HTML
Adems de cdigo HTML la pgina JSP puede
incluir marcadores que se agrupan en tres
categoras:
Directivas.
Afectan a toda la estructura del servlet generado
Elementos de Scripting (guiones)
Permiten insertar cdigo Java en la pgina JSP
Acciones
Afectan al comportamiento en tiempo de ejecucin
del JSP
Directivas JSP
Page
Include
Taglib
Sintaxis
<%@ page ATRIBUTOS %>
<%@
page language=Java import=java.rmi.*,java.util.*
session=true buffer=12kb %>
autoflush ="true|false".
extends ="package.class".
info ="message".
errorPage="url".
isErrorPage="true|false".
isThreadSafe="true|false"
language="java"
Sintaxis:
%>
Ejemplo de la Directiva
Include
Ejemplo:Pgina JSP que incluye el contenido de dos
ficheros (una pgina HTML y una pgina JSP)
<HTML>
<head>
<title> Pgina
</title>
</head>
<body>
<h1> Pgina
</h1>
<%@ include
<%@ include
</body>
</HTML>
Ejemplo de la Directiva
Include
Siendo, por ejemplo el fichero HTML el
Siendo, por ejemplo el fichero HTML el
siguiente:
<HTML>
<head> <title> Hola, Mundo </title> </head>
<body> <h1> Hola, Mundo! </h1>
</body>
</HTML>
Sintaxis
<%@ taglib uri=taglibraryURI prefix=tagPrefix
%>
Cdigo HTML
Directivas
page
include
taglib
Elementos de Scripting (guiones)
Acciones (marcas estandar)
Elementos Scripting
Ejemplo:
<%! int contador >
Ejemplo de uso de
Declaraciones
%>
Ejemplo
<% int i,j;
for (i=0;i<3;i++) {
j=j+1;
}
%>
Ejemplo de uso de
Scriptlets
Pgina JSP que usa cdigo Java para repetir 10
veces un saludo
<HTML>
<head><title> Pgina de ejemplo de scriptlet </title></head>
<body>
<h1> Pgina de ejemplo de scriptlet </h1>
<%
for (int i=0; i<10; i++;){
out.println("<b> Hola a todos. Esto es un ejemplo de
scriptlet " + i + "</b><br>");
System.out.println("Esto va al stream System.out" +
i );
//Esto ltimo va a la consola del Java, no al cliente,
//out a secas es para la respuesta al cliente.
}
%>
</body>
</HTML>
Ejemplo de uso de
Expresiones
En esta pgina JSP la expresin consiste en crear
<HTML>
<head>
<title> Pgina de ejemplo de expresiones </title>
</head>
<body>
<h1> Pgina de ejemplo de expresiones </h1>
Hola a todos, son las <%= new Date().toString() %>
</body>
</HTML>
Ejercicios
Con los ejemplos existentes en el directorio
JSP\ejemplossimples
1.
2.
3.
4.
5.
Cdigo HTML
Directivas
page
include
taglib
Elementos de Scripting (guiones)
Declaraciones
Cdigo Java arbitrario
Expresiones
Acciones
Acciones estndar
Acciones personalizadas
Acciones estndar
Son marcas estndar, con formato XML, que
afectan al comportamiento en tiempo de ejecucin
del JSP y la respuesta se devuelve al cliente.
En la traduccin de JSP al servlet, la marca se
reemplaza por cierto cdigo Java que define a dicha
marca. Una marca por tanto define un cierto cdigo
Java (es como una macro)
Constan de un prefijo y un sufijo adems de una
serie de atributos. El prefijo es siempre jsp en las
acciones estndar
Sintaxis
<jsp:sufijo
atributos/>
Ejemplo
<jsp:include page=mijsp.jsp flush=true />
Acciones estndar
existentes
<jsp:include>
<jsp:include>
<jsp:forward>
<jsp:param>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:plugin>
Accin jsp:include
Accin jsp:include
Sintaxis
<jsp:include page=URL flush=true>
<jsp:param name=nombre clave
value=valor /> (no obligatorios) ....
</jsp:include>
Ejemplo de la accin
include
<HTML>
<head>
<title> Inclusin de fichero </title>
</head>
<body>
<h1> Inclusin de ficheros </h1>
<%@ include file="incluido.jsp" %>
<jsp:include page=incluido.jsp />
</body>
</HTML>
Tipos de acciones
existentes
<jsp:include>
<jsp:param>
<jsp:forward>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:plugin>
Accin jsp:param
Sintaxis
<jsp:....
>
<jsp:param name=nombre clave
value=valor /> (no obligatorios)
....
</jsp:....
>
Tipos de acciones
existentes
<jsp:include>
<jsp:param>
<jsp:forward>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:plugin>
Accin jsp:forward
Esta marca permite que la peticin sea redirigida a
otra pgina JSP, a otro servlet o a otro recurso esttico
Muy til cuando se quiere separar la aplicacin en
diferentes vistas, dependiendo de la peticin
interceptada.
Cuando se ejecuta el servlet se redirige hacia otro
servlet y no se vuelve al servlet original
Sintaxis
<jsp:forward page=URL >
<jsp:param name=nombre clave
value=valor /> (no obligatorios)
....
</jsp:forward>
Ejemplo de la accin
forward
Formulario HTML que pide nombre y password y los
enva a una pgina jsp que lo analiza (forward.jsp)
<HTML>
<head> <title> Ejemplo de uso del forward
</title> </head>
<body>
<h1> Ejemplo de uso del forward </h1>
<form method=post action=forward.jsp>
<input type=text name=userName>
<br> y clave:
<input type=password name=password>
</p>
<p><input type=submit name=log in>
</form>
</body>
</HTML>
Ejemplo de la accin
forward
Pgina JSP que lo ejecuta
Ejemplo de la accin
forward
<% if
<% if
((request.getParameter(userName).equals(
Ricardo)) &&
(request.getParameter(password).equals(
xyzzy))) {
%>
<jsp:forward page=saludoforward.jsp />
<% } else { %>
<%@ include file=forward.html%>
<% } %>
Ejemplo de la accin
forward
El programa saludoforward.jsp podra ser el siguiente:
<HTML>
<head>
<title> Saludo al cliente </title>
</head>
<body>
<h1> Saludo al cliente</h1>
<%
out.println(Bienvenido a la nueva
aplicacin");
%>
</body> </HTML>
Tipos de acciones
existentes
<jsp:include>
<jsp:include>
<jsp:forward>
<jsp:param>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:plugin>
Accin jsp:useBean
Accin jsp:useBean
Accin jsp:useBean
Sintaxis
<jsp:useBean id=nombre scope=nombrembito
detalles />
page,request,session y application
Accin jsp:useBean
Accin jsp:setProperty
2 usos:
Despus de un useBean.
Accin jsp:setProperty
Dentro de un useBean
<jsp:useBean id="myName ... >
...
<jsp:setProperty name="myName"
property="someProperty" ... />
</jsp:useBean>
Accin jsp:setProperty
Sintaxis
<jsp:setProperty name=identificador del Bean detalles
de la propiedad />
Accin jsp:setProperty
property=* (se cogen como propiedades
y valores todos los parmetros del objeto
request)
property=Nombre (se coge un parmetro
con el mismo nombre del objeto request)
property=Nombre
param=NombreParmetro (si se desean
nombres distintos)
property=Nombre value=valor
parmetro (se asignan propiedades
arbitrarias con valores concretos)
Accin jsp:getProperty
Se utiliza para obtener el valor de las
propiedades de un Bean.
Dentro del mtodo _jspService() del servlet
generado se accede al valor de una propiedad, lo
convierte a string y lo imprime en la salida
del cliente (objeto out).
Sintaxis
Clase LenguajeBean
(classes\es.uniovi.di.servinfo.lenguaje.LenguajeB
ean.java)
package es.uniovi.di.servinfo.lenguaje;
public class LenguajeBean {
// propiedades
private String nombre;
private String lenguaje;
// constructor implicito, no hace falta declararlo
public LenguajeBean() {}
[]
Accin jsp:plugin
type
code
Nombre de la clase del applet
Obligatorio
width
Anchura en pxeles
Obligatorio
height
Altura en pxeles
Obligatorio
codebase
archive
Indica el fichero jar donde estn
almacenados el applet y sus recursos
No es obligatorio
<html>
<head><title>Boletin de noticias con
applet</title></head>
<body>
<h1>Boletin de noticias CON APPLET</h1>
<b>Jueguecillo de capitales (es un
applet):</b><p>
<jsp:plugin type="applet"
code="JuegoCapitales.class" width="700"
height="350">
</jsp:plugin><hr><p>
<b>Resumen de noticias:</b><p>
<ol>
<li><jsp:include
page="/Noticia1.html"/><hr><p>
<li><jsp:include
page="/Noticia2.html"/><hr><p>
<li><jsp:include page="/Noticia3.jsp">
<jsp:param name="origen" value="El Pas" />
</jsp:include><hr><p>
</ol>
</body>
</html>
JSP 2.0
Simple Expression
Language
Sintaxis de EL
Literales:
true o false
Integer
Floating point
String
null
Ejemplos:
${false} <%-- evaluates to false --%>
${3*8}
Sintaxis de EL
Operadores:
Ejemplos:
Sintaxis de EL
Objetos implcitos:
param
<-> request.getHeader(name)
${headerValues.name}
<-> request.getHeaderValues(name)
cookie
${header.name}
headerValues
header
$(param.name)
paramValues
Ejemplo: ${pageContext.response}
initParam
initParam.name ServletContext.getInitparameter(String
name)
Sintaxis de EL
Objetos implcitos:
requestScope
${requestScope.objectName}
${requestScope.objectName.attributeName}
sessionScope
${sessionScope.name}
applicationScope
Ejemplos EL
Ejemplos EL
El operador ?:
<select name="artist">
<option value="1" ${param.artist
'selected' : ''}>
Vesica Pisces
<option value="2" ${param.artist
'selected' : ''}>
Cortical Control
<option value="3" ${param.artist
'selected' : ''}>
Vida Vierra
</select>
== 1 ?
== 2 ?
== 3 ?
Elemento jsp-config
Su subelemento <jsp-property-group> es
muy interesante.
Elemento jsp-config
Elemento
Descripcin
<elignored
>
<scriptinginvalid>
<pageencodin
g>
<includecoda>
<includeprelude
>
<is-xml>
Ejercicios
Modificar la pgina ej4_directivainclude.jsp para
incluir tambin el fichero incluido.jsp como
accin include
Cambiar la pgina HTML o JSP y volver a ejecutar
comprobando resultados
Ejecutar el ejemplo del Bean que evala el lenguaje
preferido del cliente
Crear un Bean que funcione como sumadora.
1.
2.
3.
4.
5.
6.
Cdigo HTML
Directivas <%@
page
<%@ page ATRIBUTOS %>
include <%@ include file=Nombre del fichero %>
taglib <%@ taglib uri=taglibraryURI prefix=tagPrefix %>
Declaraciones
<% ! Declaracin %>
Cdigo Java arbitrario (scriptlets)
<% cdigo Java
Expresiones
%>
<jsp:useBean>
<jsp:setProperty>
<jsp:getProperty>
<jsp:include>
<jsp:param>
<jsp:forward>
<jsp:plugin>
jsp:useBean
jsp:getProperty
jsp:setProperty
Etiquetas
personalizadas
Las acciones personalizadas estn definidas por el
2.
Etiquetas personalizadas -
Uso en
Etiquetas personalizadas -
Partes de
un fichero TLD
description
attribute: cero o ms atributos que puede tener tres
subelementos:
name (obligatorio)
required: true o false (valor por defecto false)
rtexprvalue: determina si el valor de este atributo se puede
determinar en tiempo de ejecucin
Definicin de la estructura de
una etiqueta
En la definicin de una etiqueta personalizada
debe aparecer al menos:
<tag>
Indica comienzo de definicin
<name> Hola </name>
Nombre de la etiqueta
<tagclass> tagPaquete.HolaTag </tagclass>
Nombre de la clase que implementa la
funcionalidad
</tag>
Fin de la etiqueta
Adems puede llevar
Atributos, anidaciones y cuerpo
(WEB-INF\tlds\etiquetas.tld)
La API de Etiquetas
Personalizadas
Paquete javax.servlet.jsp.tagext
Un manejador de etiquetas (Tag Handler) es una
clase que est ligada a una etiqueta
personalizada y es invocada cada vez que el
contenedor de JSPs encuentra la etiqueta.
En JSP 1.2, la clase javax.servlet.jsp.tagext
tiene 4 interfaces y 12 clases
2.
3.
1.
2.
4.
2.
3.
4.
5.
6.
EVAL_BODY_AGAIN
SKIP_BODY
El interfaz Tag
Tag
IterationTag
BodyTag
java.io.IOException;
java.util.Date;
javax.servlet.jsp.*;
javax.servlet.jsp.tagext.*;
// clase HolaTag
definicin de la
clase controladora
package es.uniovi.di.servinfo.etiquetas;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class HolaTag extends TagSupport {
// Atributo de la etiqueta definido en el
fichero TLD
private String nombre = null;
public void HolaTag() {}
definicin de la
clase controladora
definicin de la
clase controladora
// Al inicio de la etiqueta
public int doStartTag() throws JspTagException {
try {
JspWriter out = pageContext.getOut();
out.println( "<table border=1>" );
if( nombre != null ) {
out.println( "<tr><td> Hola " +nombre+ "
</td></tr>" );
}
else { out.println( "<tr><td>Hola Mundo
JSP</td></tr>" );
}
} catch( Exception e ) { throw new
JspTagException( e.getMessage() );
}
return( SKIP_BODY );
}
definicin de la
clase controladora
// Al cierre de la etiqueta
public int doEndTag() throws JspTagException {
try {
/* Se utiliza el pageContext para obtener el
objeto de salida, sobre el que colocar la etiqueta
HTML de cierre de la tabla */
pageContext.getOut().print( "</table>" );
} catch( Exception e ) {
throw new JspTagException( e.getMessage() );
}
return( SKIP_BODY );
}
definicin de la
clase controladora
<body>
<h2>Ejemplo de biblioteca de etiquetas:
<i>HolaTagAtributo.java</i></h2>
En esta pgina se muestra el uso de esta etiqueta,
que se invoca en primer lugar especificando un valor
para el atributo <i>nombre</i> y luego sin ningn
argumento.
<p>
<hr><center>
<etiq:saludo nombre="Agustn"/>
</center><hr>
<etiq:saludo />
</body>
</html>
El interfaz IterationTag
Ejemplo IterationTag I
package es.deusto.customtags;
import
import
javax.servlet.jsp.*;
javax.servlet.jsp.tagext.*;
PageContext pageContext;
int number;
int power;
int counter = 0;
int result = 1;
Ejemplo IterationTag II
// the setter for power
public void setPower(int power) {
System.out.println("power: " + power);
this.power = power;
}
public int getPower() {
return this.power;
}
public void setParent(Tag t) {
}
public void setPageContext(PageContext p) {
System.out.println("setPageContext");
pageContext = p;
}
public void release() {
System.out.println("doAfterBody");
}
public Tag getParent() {
return null;
}
Fichero TLD:
La interfaz BodyTag
La clase BodyContent
Ejemplo:
Codificar el contenido HTML de una
etiqueta personalizada y visualizar
su contenido en el navegador
TLD file:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag
Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name/>
<tag>
<name>myTag</name>
<tag-class>es.deusto.customtags.EncoderTag</tag-class>
<body-content>tagdependent</body-content>
</tag>
</taglib>
Clases de ayuda
Ejemplo con
BodyTagSupport I
package es.deusto.customtags;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class CapitalizerTag extends BodyTagSupport {
public int doAfterBody() {
String content = bodyContent.getString();
try{
JspWriter out = bodyContent.getEnclosingWriter();
out.print(content.toUpperCase());
}
catch(Exception e) {}
return SKIP_BODY;
}
}
Ejemplo con
BodyTagSupport II
JSP que utiliza CapitalizerTag:
<%@ taglib uri="/myTLD" prefix="easy"%>
<easy:myTag>See the big picture?</easy:myTag>
Fichero TLD:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP
Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name/>
<tag>
<name>myTag</name>
<tag-class>es.deusto.customtags.CapitalizerTag</tag-class>
<body-content>tagdependent</body-content>
</tag>
</taglib>
Etiquetas anidadas
Cuando dos o ms etiquetas
personalizadas estn anidadas es posible
obtener una referencia a la clase padre a
travs de findAncestorWithClass
Ejemplo:
OuterTag1 parent1 =
(OuterTag1)findAncestorWithClass(thi
s, OuterTag.class);
Variables de script
Nombre variable
Clase de la variable
Boolean indicando si habr que crear una nueva variable
Scope de la variable:
AT_BEGIN variable disponible en interior etiqueta y el
resto del JSP
NESTED variable disponible en el interior de la etiqueta
AT_END variable disponible en el resto del JSP
Ejemplo: definir un
iterador I
package es.deusto.customtags;
import java.util.Collection;
import java.util.Iterator;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class IteratorTag
extends BodyTagSupport {
private
private
private
Collection collection;
Iterator iterator;
PageContext pageContext;
Ejemplo: definir un
iterador II
// the setter for number
public void setCollection(Collection collection) {
this.collection = collection;
}
public int doStartTag() throws JspException {
return collection.size() > 0 ? EVAL_BODY_BUFFERED : SKIP_BODY;
}
public void doInitBody() throws JspException {
iterator = collection.iterator();
this.pageContext.setAttribute("item", iterator.next());
}
Ejemplo: definir un
iterador III
public int doAfterBody() throws JspException {
if (iterator == null) {
iterator = collection.iterator();
}
if (iterator.hasNext()) {
this.pageContext.setAttribute("item", iterator.next());
return EVAL_BODY_AGAIN;
}
else {
try {
getBodyContent().writeOut(getPreviousOut());
}
catch (java.io.IOException e) {
throw new JspException(e.getMessage());
}
return SKIP_BODY;
}
}
public void release() {
collection = null;
iterator = null;
}
}
Ejemplo: definir un
iterador IV
package es.deusto.customtags;
import java.util.Collection;
import java.util.Iterator;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
public class IteratorTagInfo extends TagExtraInfo {
public VariableInfo[] getVariableInfo(TagData data) {
return new VariableInfo[]
{
new VariableInfo("item",
"java.lang.Object",
true,
VariableInfo.AT_BEGIN)
};
}
}
Ejemplo: definir un
iterador V
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name/>
<tag>
<name>iterate</name>
<tag-class>es.deusto.customtags.IteratorTag</tag-class>
<tei-class>es.deusto.customtags.IteratorTagInfo</tei-class>
<body-content>JSP</body-content>
<!--<variable>
<name-given>item</name-given>
<name-from-attribute>item</name-from-attribute>
<variable-class>java.lang.String</variable-class>
<declare>true</declare>
<scope>AT_BEGIN</scope>
</variable>
<attribute>
<name>id</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>-->
<attribute>
<name>collection</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
Ejemplo: definir un
iterador VI
<html><head><title>An Iterator</title></head>
<%@ taglib uri="/myTLD" prefix="it"%>
<body>
<%
java.util.Vector vector = new java.util.Vector();
vector.addElement("one");
vector.addElement("two");
vector.addElement("three");
vector.addElement("four");
%>
Iterating over <%= vector %> ...
<p>
<it:iterate collection="<%=vector%>">
Item: <%= item %><br>
</it:iterate>
</p>
</body>
</html>
Cdigo de marcado
Expresiones EL
Elementos de accin
Invocando Funciones
desde JSPs
La clase javax.servlet.jsp.tagext.SimpleTagSupport
implementa la interfaz
Slo se invoca un mtodo no tres como antes: doStartTag(),
doAfterBody(), doEndTag()
Ejemplo de Fichero de
Tag
<%@ tag body-content="empty" %>
<%@ attribute name="question" required="true" %>
<%@ attribute name="answers" required="true"
type="java.util.Map" %>
<%@ attribute name="votesMapName" required="true" %>
<%@ attribute name="answersMapName" required="true" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
Question: ${question}<br>
<form action="result.jsp" target="result">
<input type="hidden" name="question" value="${question}">
<input type="hidden" name="votesMapName" value="${votesMapName}">
<input type="hidden" name="answersMapName" value="${answersMapName}">
<c:forEach items="${answers}" var="a">
<input type="radio" name="vote" value="${a.key}">${a.value}<br>
</c:forEach>
<input type="submit" value="Vote">
</form>
Ejercicios
Ejecutar los ficheros
1.
2.
3.
4.
ejtag1_hola.jsp
ejtag2_hola.jsp
ejtag3_hola.jsp
Mantenimiento de
sesiones
Dado que el JSP se convierte en un servlet, todo lo visto
session.setAttribute(mipaquete.sesion.nombre,
miObjeto);
Clase unObjeto =
session.getAttribute(mipaquete.sesion.nombre);
session.removeAttribute(mipaquete.sesion.nombre);
Proceso de autentificacin de
usuarios
Por programa
Analizador SAX
Entrada
Proceso
OK
login01.jsp
login02.jsp
si.html
NO
no.html
Usuarios.xml
<%!
<%!
<%!
String
String
String
usuario=; %>
pwd=; %>
redireccionURL =; %>
if (request.getParameter(nombre)!= null)
{usuario=request.getParameter(nombre);
if (request.getParameter(pwd)!=null)
{ pwd= request.getParameter(pwd); }
Document documento;
DocumentBuilderFactory.newInstance();
redireccionURL=no.html;
<script language=javascript>
setTimeout(document.location=`<%= redireccionURL
%>`,100)
</script>
Control de la sesin
Qu se ha visto en esta
sesin
Primer vistazo a la tecnologa JSP
1.
2.
3.
Principales conclusiones de
diseo
La tecnologa JSP permite diseo de aplicaciones web con
generacin dinmico de pginas web tras un
procesamiento
La lgica de la aplicacin (procesamiento) se invoca desde
una pgina html mediante tres posibles modos
1.
2.
1.
2.
3.
3.
4.
Java Server
Pages (JSP)
Fin de la
sesin
180