Curso de JSP Basico
Curso de JSP Basico
Reproduccinprohibida
Versin2.3
CopyrightCdricSimon,20052011
[Link]
[Link]:22680974Cel:88882387Email: c e d r i c @ s o l u c i o n j a v a . c o m Web:[Link]
Curso de
Java Server Pages
Nivel bsico
CursodeJavaServerPagesNivelbsico
Pagina2/46
ndice
ndice..............................................................................................................................................................................................................2
1Introduccin al curso...................................................................................................................................................................................5
1.1Objetivo de este curso..........................................................................................................................................................................5
1.2Manual del alumno..............................................................................................................................................................................5
1.3Ejercicios prcticos..............................................................................................................................................................................5
1.4Requisitos para atender a este curso..................................................................................................................................................5
1.5Soporte despus del curso....................................................................................................................................................................5
2Introduccin al JSP.....................................................................................................................................................................................6
2.1Que es el JSP?.....................................................................................................................................................................................6
2.2Por qu utilizaramos el JSP?...........................................................................................................................................................6
2.3Navegadores web..................................................................................................................................................................................6
3Arquitectura J2EE.......................................................................................................................................................................................7
3.1Introduccin a la Tecnologa y Conceptos J2EE...............................................................................................................................7
3.2Componentes J2EE..............................................................................................................................................................................7
3.3La Arquitectura Java Naming Directory Interface (JNDI).............................................................................................................8
3.3.1Ejemplo de JNDI.............................................................................................................................................................................8
4El protocolo HTTP.......................................................................................................................................................................................9
4.1Modelo de consulta / respuesta HTTP...............................................................................................................................................9
4.2Detalles de una consulta......................................................................................................................................................................9
4.3Detalles de respuesta..........................................................................................................................................................................10
4.4Parmetros de consulta.....................................................................................................................................................................11
4.5Mtodos de consulta...........................................................................................................................................................................11
5Instalacin del servidor JSP......................................................................................................................................................................13
5.1Jakarta Tomcat..................................................................................................................................................................................13
5.2Instalacin...........................................................................................................................................................................................13
5.3Configuracin de Eclipse...................................................................................................................................................................13
5.4Verificacin de la instalacin............................................................................................................................................................14
6Uso de herramienta y entorno...................................................................................................................................................................15
6.1Eclipse.................................................................................................................................................................................................15
6.1.1Creacin del servidor....................................................................................................................................................................15
6.1.2Creacin de un nuevo proyecto web..............................................................................................................................................16
6.1.3Creacin de la pgina de ndice.....................................................................................................................................................17
7Utilizacin de los scriptlets........................................................................................................................................................................20
7.1Qu son los scriptlets?......................................................................................................................................................................20
7.2Los scriptlet de declaracin de variables.........................................................................................................................................20
7.3Los scriptlet de utilizacin de variables...........................................................................................................................................20
7.4Los scriptlets de cdigo......................................................................................................................................................................20
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina3/46
7.5Agregar comentarios..........................................................................................................................................................................21
8Utilizacin de directivas.............................................................................................................................................................................22
8.1Directiva de pgina............................................................................................................................................................................22
8.1.1Lista de parmetros para directiva de Pgina................................................................................................................................22
8.2Directiva de inclusin.........................................................................................................................................................................23
8.3Directiva taglib...................................................................................................................................................................................23
9Utilizacin de variables de sesin..............................................................................................................................................................24
9.1Declaracin de variable de sesin.....................................................................................................................................................24
9.2Recuperar el valor de un variable de sesin....................................................................................................................................24
9.3Invalidar una sesin...........................................................................................................................................................................24
9.4Otros mtodos.....................................................................................................................................................................................24
10Objetos implcitos.....................................................................................................................................................................................25
10.1request...............................................................................................................................................................................................25
10.2response.............................................................................................................................................................................................25
10.3session................................................................................................................................................................................................25
10.4application.........................................................................................................................................................................................25
10.5out......................................................................................................................................................................................................25
10.6exception...........................................................................................................................................................................................25
11Los formularios........................................................................................................................................................................................26
11.1Creacin del formulario..................................................................................................................................................................26
11.2Tratamiento del formulario............................................................................................................................................................26
12Elementos de acciones estndar..............................................................................................................................................................29
12.1<jsp:forward />.................................................................................................................................................................................29
12.2<jsp:include />..................................................................................................................................................................................29
12.3<jsp:param>.....................................................................................................................................................................................29
12.4<jsp:plugin>......................................................................................................................................................................................29
12.5<jsp:params>....................................................................................................................................................................................30
12.6<jsp:fallback>...................................................................................................................................................................................30
12.7<jsp:useBean>..................................................................................................................................................................................30
12.8<jsp:getProperty>............................................................................................................................................................................30
12.9<jsp:setProperty>.............................................................................................................................................................................30
13Gestin de errores....................................................................................................................................................................................31
13.1Errores de compilacin....................................................................................................................................................................31
13.2Errores de lgica..............................................................................................................................................................................31
13.3Errores de ejecucin........................................................................................................................................................................31
13.3.1Pgina de error personalizada.....................................................................................................................................................31
14Utilizacin de JavaBean..........................................................................................................................................................................33
14.1Qu es un JavaBean?.....................................................................................................................................................................33
14.2Declaracin de un JavaBean...........................................................................................................................................................33
14.2.1<jsp:useBean>.............................................................................................................................................................................33
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina4/46
14.2.2<jsp:getProperty>........................................................................................................................................................................34
14.2.3<jsp:setProperty>........................................................................................................................................................................35
14.3Scope de un JavaBean......................................................................................................................................................................35
15Utilizacin de servlets..............................................................................................................................................................................36
15.1Qu es un servlet?..........................................................................................................................................................................36
15.2Para que sirve un servlet?.............................................................................................................................................................36
15.3Anatoma de un servlet....................................................................................................................................................................36
15.4Ciclo de vida de un servlet...............................................................................................................................................................37
15.5Creacin de un servlet simple.........................................................................................................................................................37
15.6Uso de servlet para mostrar imgenes o archivos binarios..........................................................................................................38
16El modelo MVC........................................................................................................................................................................................43
16.1Qu es el modelo MVC?................................................................................................................................................................43
16.2MVC con JSP y JavaBeans.............................................................................................................................................................43
16.3MVC con JSP, JavaBeans y servlet................................................................................................................................................43
16.4MVC con JSP, servlet, JavaBeans y EJB......................................................................................................................................44
17Ejercicios..................................................................................................................................................................................................45
18 Esquema de la base de datos..................................................................................................................................................................46
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina5/46
1 Introduccinalcurso
1.1 Objetivodeestecurso
EnestecursovamosaaprenderellenguajeJSPquenospermitircrearpginaswebdinmicas.
1.2 Manualdelalumno
Estemanualdelalumnoesunaayudaparaelalumno,[Link]
resumendelasmateriasquesevanaestudiarduranteelcurso,peroelalumnodeberadetomarnotaspersonales
paracompletasestemanual.
1.3 Ejerciciosprcticos
Paracaptarmejorlateora,seharnmuchosejerciciosconlosalumnos,paraprobarlateorayverificarla
integracindelamateria.
Tambin,elalumnopodrcopiarsuscdigosenundisquetealfindelcursoparallevarse,confindeseguirlaprctica
ensuhogar.
1.4 Requisitosparaatenderaestecurso
[Link]
consideradacmoasimiladoantesdeempezarestecurso.
ElconocimientodellenguajeHTMLyJavaScriptsontambinrequeridosparapoderatenderaestecurso.
Sielalumnotienedificultadesenunuotrocapitulo,eldebesentirselibredepedirexplicacionesadicionalesal
profesor.
Perosiaparecequeelalumnonoposeelosrequisitosmnimosparaestecurso,porrespetoalosotrosalumnosqueya
poseenestamateria,elalumnopodrasertrasladoparaotrocursoenelfuturo,cuandoelcumplirconlosrequisitos.
1.5 Soportedespusdelcurso
Sitienespreguntassobrelamateriadelcursoentusejerciciosprcticos,puedesescribirtus
preguntasacedric@[Link].
Parainformacionessobreotroscursos,[Link].
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina6/46
2 IntroduccinalJSP
2.1 QueeselJSP?
ElJSPesunaextensindellenguajedeprogramacinJava,utilizadoparacrearpginaswebdinmicas.
ElJSPnecesitaqueunservidorwebconcapacidadJSPseainstaladoyfuncionandoparapoderejecutarlaspginas
JSP.
ElservidorvaacompilarelcdigoJSPytratarloentiemporeal,conlainformacinviniendodelclienteweb,para
regresarleunapaginawebadaptada,entiemporeal.
Elservidortienetambincapacidaddeseguirelcaminodeunusuario,ascmodeidentificarlo.
2.2 PorquutilizaramoselJSP?
ElJSPsenecesitacuandolapaginawebtienequeadaptarseenfuncindelusuario,ycuandosenecesitaguardar
valoresdesesindelusuario.
Existenotroslenguajequepermiteneso,comoelASPoelPHP,peroelJSPtienecomoaventajequeestabasadoenel
lenguajeJava,[Link]
operativos,entreotrosWindows,Linux,yUnix.
ElJSPesttambinutilizadoenpaquetesempresarialesmuygrandecomoelservidordeIBMWebsphere,oel
servidordeaplicacindeOracle.
ElJSPesunestndardeprogramacinInternet.
2.3 Navegadoresweb
SilosnavegadorespruebantodosdepoderaplicaralmximolasrecomendacionesdelHTML4.0existenciertas
opciones,[Link],unmismocdigono
aparecersiempreigualenunnavegadoreenotro.
ElJSPnoestligadodirectamenteconlosnavegadores,[Link]
podrafuncionarbienenunnavegador,[Link]
curso.
Enestecurso,utilizaremosdosnavegadoresdiferentes:elInternetExplorerdeMicrosoft,yelFirefoxdeMozilla.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina7/46
3 ArquitecturaJ2EE
3.1 IntroduccinalaTecnologayConceptosJ2EE
Java2EnterpriseEdition(J2EE)esunaarquitecturamulticapaparaimplementaraplicacionesdetipoempresarialy
[Link]
Webdegranescalaapequeasaplicacionesclienteservidor.ElobjetivoprincipaldelatecnologaJ2EEescrearun
simplemodelodedesarrolloparaaplicacionesempresarialesutilizandocomponentesbasadosenelmodelode
[Link],quedeotromodo
[Link]
escenarios:porejemplo,unapequeaaplicacinsecubriramejorutilizandounasolucindelatecnologaJavade
pesoligero(porejemploServlets,JSPs,etc.).
3.2 ComponentesJ2EE
LasaplicacionesJ2EEestncompuestasdediferentescomponentes.UncomponenteJ2EEesunaunidaddesoftware
funcionalautocontenidoqueseensambladentrodeunaaplicacinJ2EEconsusclasesdeayudayficherosyquese
comunicaconotroscomponentesdelaaplicacin.LaespecificiacinJ2EEdefinelossiguientescomponentesJ2EE:
1. LasAplicacionesClientesylosAppletssoncomponentesqueseejecutanenelladodelcliente.
2. LoscomponentesJavaServletlatecnologaJavaServerPagessoncomponentesWebqueseejecutan
enelladodelservidor.
3. LosEnterpriseJavaBeans(beansenterprise)soncomponentesdenegocioqueseejecutanenelservidor
deaplicacion.
TodosesoscomponentesseensamblanenunaaplicacinJ2EE,severificaqueestnbienformadosyquecumplenla
especificacinJ2EE,ysedesplieganenelentornodeproduccin,dondeseejecutanysoncontroladosporelservidor
deaplicacionesJ2EE.
Ademsdeestoscomponentesprincipales,J2EEincluyeserviciosestndarytecnologasdesoportecomo:
JavaDatabaseConnectivity(JDBC)tecnologaqueproporcionaaccesoasistemasdebasesdedatos
relacionales.
JavaTransactionAPI(JTA)oJavaTransactionService(JTS)proporcionasoporteparatransacionesa
loscomponentesJ2EE.
JavaMessagingService(JMS)paracomunicacinasncronaentrecomponentesJ2EE.
JavaNamingyDirectoryInterface(JNDI)proporcionanaccesosanombresydirectorios.
Nota:TodosloscomponentesJ2EEestnescritosenlenguajeJava
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina8/46
3.3 LaArquitecturaJavaNamingDirectoryInterface(JNDI)
J2EEutilizaelAPIJNDIparaaccedergenricamenteaserviciosdenombradoydirectorioutilizandolatecnologa
[Link]
transparenteparaloscomponentesdelaaplicacin:
UnclientepuedebuscarreferenciasacomponentesEJBuotrosrecursosenunserviciodenombrescomoel
[Link],sinimportarelserviciodenombresqueseestutilizandooen
qutecnologaestbasado,yestonocreaningunadiferencaenelmodoenquelosclienteslocalizanlosobjetos
remotosmedianteelAPIJNDI.
Paraqueunaaplicacinpuedainteractuarconunserviciodenombre,estedebeconocerlaspropiedadesdelservicio
[Link](facory),eldomicilioIPy
elPuertodelservicio.
3.3.1
...
...
EjemplodeJNDI
DataSource ds=null;
InitialContext ctx = new InitialContext();
ds = (DataSource) [Link]("java:comp/env/jdbc/"+datasourceName);
con = [Link]();
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina9/46
4 ElprotocoloHTTP
ElprotocoloHTTP(HyperTextTransportProtocol)esunprotocoloquedefineendetallecmounclienteyunservidor
[Link]
[Link].
4.1 Modelodeconsulta/respuestaHTTP
ElHTTPylosprotocolosextendidosbasadossobreelutilizanunmodelodecomunicacinsimple,peropoderoso.
Demaneratpica,unclienteenvaunaconsultaparaunrecursoaunservidor,yelservidorcontestaunarespuesta
quecorrespondealrecursopreguntado(ocontestaconunmensajedeerror).ElrecursopuedeserunapginaHTML,
ounaaplicacinquecontestaconuncontenidodinmico.
EstemodelosimpleimplicatrescosasqueUstedtienequeserconciente:
1. [Link]
delclientedepusedehaberlecontestado,yporesonopuedereconocerquevariasconsultasdeunmismo
clientepuedenserrelacionadas.
2. Laaplicacinwebnopuedeentregarunarespuestainmediato,[Link]
dependedelanchodebandadisponibleydelacargadelservidor.
3. Nohaynadaenelprotocoloqueindicaalservidorcomolaconsultalehallegado,asqueelservidornopuede
[Link],enservidornopuededistinguirunaconsultagenerada
porunclicenunenlacedelusodelbotn'atrs'[Link],comoelHTTPessinestado,nose
puedeadentrodelHTTPllamaralapginaanterior.
4.2 Detallesdeunaconsulta
Existendosmtodosdeconsulta:[Link],ylaqueseusopordefecto.
Ejemplodeunaconsulta:
LaprimeralneaespecificaqueseusaelmtodoGETysepreguntapararegresarelrecurso/[Link]
protocoloHTTP/[Link]
consulta.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina10/46
ElttuloHOSTdicealservidorelnombre(hostname)[Link],y
esteinformacinpermitedistinguirmltipleservidoresvirtualesutilizandounmismoprocesoweb.
[Link]
utilizaresteinformacinparagenerarrespuestasdiferentesdependiendodelnavegador(IE,Netscape,WAP,PDA,...).
LosttulosAcceptproveeninformacinsobreelidiomayelformatodearchivoqueelnavegadoracepta.
4.3 Detallesderespuesta
[Link]:unalneadeestado,unosttulosde
respuesta,yelcuerpodelarespuesta.
Ejemploderespuesta:
HTTP/1.0 200 OK
Last-Modified: Mon, 19 Dec 2004 [Link] GMT
Date: Tue, 12 Jul 2005 [Link] GMT
Status: 200
Content-Type: text/html
Servlet-Engine: Tomcat Web Server/3.2
Content-Length: 59
<html>
<body>
<h1>Hello World!</h1>
</body>
</html>
Lalneadeestadoempiezaconelnombredelprotocolo,seguidoporelcdigoderesultadoyunabrevadescripcindel
cdigoderesultado.Aquelcdigoderesultadoes200,quesignificaquesaliconxito.
Elmensajederespuestatienettulos,[Link]:
[Link]
estainformacinparamarcarlapginaelsucach,ypedirenelfuturosolamentelasquefueronmodificadas.
ElttuloContent-Typedicealnavegadorquetipodedatoscontieneelcuerpodelarespuesta.
ElttuloContent-Lengthdicealnavegadoreltamaodelcuerpodelarespuesta.
[Link]
[Link].
ElcuerpopuedecontenerpginasHTMLmscomplicadas,uotrotipodecontenido(imagen,sonido,archivo
comprimido,...).Elcuerpopuedetambincontenercdigoquevagenerarotrasconsultasalservidor,comola
insercindeunaimagen.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina11/46
Interaccinentreunclienteyunservidorweb
4.4 Parmetrosdeconsulta
[Link],despusdelnombredelapgina,hayque
mencionarunpuntodepregunta'?'yunoavariosparmetrosdeparadospor'&',conelnombredelparmetro,el
signo'=',yelvalordelparmetro.
Veremosejemplosutilizandolosformularios.
4.5 Mtodosdeconsulta
[Link]
GETpasalosparmetrosadentrodelURL,[Link],
ennavegadorsabequeestemtodonopuededaarelservidor,asaceptadesometerlaconsultanuevamente
(refresca)sinalerta.
ElmtodoPOST,envezdepasarlosparmetrosenelURL,[Link]
enviarconsultadetamaomsgrandeque2000caracteres,ysinquelosparmetrosaparecenenelURL.
Comolosparmetrosestnguardadosadentrodelcuerpodelaconsulta,laconsultanopuedeserguardadatan
fcilmenteenlosmarcadores,porqueademsdelURL,deberguardarelcuerpodelaconsulta.
Tambin,cuandoseprobadeenviardenuevounaencuestoPOST(refresh)elnavegadorgeneraunaalertoporque
esteaccinpuedegeneraraccionesposiblementeirreversiblealniveldelservidor.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina12/46
Ejemplodeformulario:
EjemplodeconsultaPOSTgeneradaporelformularioarriba:
POST / [Link] HTTP/1.0
Host: [Link]
User-Agent : Mozilla/4.5 [en] (WinNT; I)
Accept: image/gif, image/jpeg, image/pjpeg, image/png, */*
Accept-language : en
Accept-charset : iso-8859-1,*,utf-8
cuidad=Managua&pais=Nicaragua
EjemplodeSocketqueseconectaalservidorWeblocal(Tomcat),leenvaunaconsultaHTTPyrecibelapgina
HTML.
[Link]:
import [Link].*;
import [Link].*;
public class LeerWeb {
public LeerWeb() throws Exception {
Socket s = new Socket("[Link]", 8080);
OutputStream os = [Link]();
PrintStream ps = new PrintStream(os);
[Link]("GET / HTTP/1.0\r\n\r\n");
InputStream is = [Link]();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line = [Link]();
while (line!=null){
[Link](line);
line=[Link]();
}
}
public static void main(String[] args) throws Exception {
LeerWeb test = new LeerWeb();
}
}
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina13/46
5 InstalacindelservidorJSP
5.1 JakartaTomcat
ParapoderponerenprcticaellenguajeJSP,necesitamosunservidorconcapacidadJSP.
Poreso,vamosautilizarelfamososervidorTomcat,[Link]
proyectoJakartadelafundacinApache.
ElservidorTomcatesunproductogratuitoylibre:sucdigofuenteestdisponible,alladodelas
versionescompiladas.
Tomcatestdisponibleparavariossistemasoperativos,yestmuyutilizadobajoUnixyLinux,porsusestabilidad.
5.2 Instalacin
AntesdeinstalarelservidorTomcat(versin7.0),elJavaJREversin1.6oarribatienequeserinstaladoenel
[Link],enWindowsexisteuninstalador,yenLinuxbastacondescomprimirelarchivozipo
gzenunacarpetalocal(comosucarpera/home/usuario).
Esimportantedeleerlasnotasdeinstalacinparaversinohayinformacionesimportanteparanuestra
configuracin.
5.3 ConfiguracindeEclipse
SerequierecrearunservidorenEclipseparapodermanejarTomcatdesdeEclipse.
EscogelaperspectivaJavaEE,vistadeservidores,ycrearunnuevoservidor.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina14/46
5.4 Verificacindelainstalacin
Paraverificarsilainstalacinesexitosa,iniciaelservidordesdeEclipse
Luegoabrimosunnavegadorwebyvamosaldomicilio:[Link]
Pordefecto,elservidordeTomcatutilizaelpuerto8080,paranochocarconuneventualservidorApache(puerto80).
AhtenemosqueencontrarlapginapordefectodeTomcat,ounapginadeerrordeTomcat.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina15/46
6 Usodeherramientayentorno
6.1 Eclipse
ParadisearlaspginasJSP,vamosautilizarlaherramientaEclipseGanymede,ensuverisnJ2EEoReporting.
Estosprogramassonlibresygratuitos,yfuncionanbajoWindowscomobajosLinux.
6.1.1
Creacindelservidor
[Link]
nuevodespliegue,demaneraautomtica,[Link]
delservidorenEclipse,paraunadepuracinmscomoda.
Paracrearunservidor,presionaCTRL+[Link]'Servidor'[Link]'Tomcat7'.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
6.1.2
Pagina16/46
Creacindeunnuevoproyectoweb
ParacrearnuestraprimerapginaJSP,[Link],enEclipse,creamos
unnuevoproyectodetipo'DynamicWebProject',quellamamoscurso.
Escojamoscomo'TargetRuntime'[Link]
escojamos3.0,ycomoconfiguracin'<custom>'.Luegoaceptamoslosvalorespordefecto.
Unavezcreado,validamoslaspropiedadesdelproyecto,y
agregamoselproyectoalservidorTomcat7.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina17/46
Paraagregarelproyectoalservidor,hacerdobleclicsobreelservidorenlapantallaabajoaladerecha,escojala
pestaa'Module'yagregaelproyecto'curso'.
6.1.3
Creacindelapginadendice
Parapoderprobarelservidor,vamosacrearnuestraprimerapginaJSP.
Poreso,hacemosunclicderechosobrelacarpetaWebContentdelproyectocurso,enEclipse,yelegimosnew...JSP'.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina18/46
Unavezelegido,mencionamoselnombredelapgina,[Link](.jspen
minuscula)serntraducidasporelservidorenunservlet(cdigoJava)yproducirnunapginaHTMLcomosalida.
Paraprobarsilapginafunciona,tenemosquellenarlaconalgncdigoJSPy/[Link]
[Link].
Vamosamodificarelcdigodelamanerasiguiente,yloguardamos:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "[Link]
<html>
<head>
<%!
String titulo="Mi primera Pgina JSP";
int nrPagina=1;
%>
<title><%=titulo%></title>
</head>
<body bgcolor="#FFFFFF">
<h1><%=titulo%></h1>
<hr>
<p>
Este es mi pgina en JSP numero <%= nrPagina%>.
</body>
</html>
Enelfuturo,noescribirenelmanuallosencabezadosgeneradosporelentorno,como<%@page...><!DOCTYPE....>porque
nosonobligatorioparaquefuncionabienelcdigo.
Iniciamoselservidor.
Luegomiramoselresultadoconunnavegadorwebeneldomicilio:[Link]
[Link]
Pordefecto,siningunapginaestaespecificadaenelURL,[Link],luego
[Link],[Link],y/oalniveldelsitio,enelarchivo
[Link].
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina19/46
Aspodemosverqueenlabarradeaplicacincomoenlaprimeralneadelapginasaleenvalordelavariable
'titulo'.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina20/46
7 Utilizacindelosscriptlets
7.1 Qusonlosscriptlets?
LosscriptletssonlasetiquetasquepermitendedelimitarelcdigoJSP,quetienequeseranalizadoporelservidor
JSP,delcdigoHTML,[Link]
elresultadodelcdigoJSPparaobtenerlapginaHTMLqueserregresadaalclienteyledaporelnavegadordel
cliente.
ElJSPeslapartedelaprogramacinqueseejecutaalniveldelservidor,encontradelJavaScript,queseejecutaal
ladodelcliente.
7.2 Losscriptletdedeclaracindevariables
Elscriptletdedeclaracindevariablesirvenparadeclararvariablequesernaccesiblededesdecualquierlugardela
[Link].
Losscriptletsseutilizangeneralmenteadentrodelacabecera,oenelcuerpodelapginaHTML,antesdelos
scriptletsdecdigo.
Elscriptletdedeclaracinestencerradaentre'<%!'y'%>'(sinlascuotas).
Ejemplo:
<%! String titulo="Mi primera Pgina JSP";
int nrPagina=1; %>
7.3 Losscriptletdeutilizacindevariables
[Link]
contenerunavariable,perotambinsepuedeutilizarmtodosdeobjetosexistente,onuevosobjetos).
Elscriptletdedeclaracinestencerradaentre'<%='y'%>'(sinlascuotas),ynollevapuntocoma.
Ejemplo:
<h1><%=titulo%></h1>
7.4 Losscriptletsdecdigo
Unscriptletdecdigoestencerradoentre'<%'y'%>'(sinlascuotas).
[Link]
utilizarparadeclaraclasescmoparaimplementaresquemadedecisinadentrodelapginaparaqueseadinmica.
Losscriptletssepuedenutilizaradentrodelacabecera,oenelcuerpodelapginaHTML.
SielscriptlettienequegeneraralgncdigoHTML,haydosposibilidades:
1. [Link]
2. seabreunbloquedecdigoJava,secierraelscriptletyseponeelcdigoHTMLcmoenunapginaHTML
normal(perosepuedeutilizarotrosscriptletsadentrodeestecdigo).
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina21/46
[Link]
[Link],enlacabecera,unscriptletconelcdigode
inicializacindelasvariablesyelcdigoquenogeneracdigoHTML,yenelcuerpo,elloslugaresdeseados,los
scriptletsquegenerarancdigoHTMLparacompletarelcdigoHTMLfijo.
Ejemplono1:
<html>
<head>
<%!
String titulo="Mi primera Pgina JSP";
int nrPagina=1;
%>
<title><%=titulo%></title>
</head>
<body>
<h1><%=titulo%></h1>
<hr>
<p>
Este es mi pgina en JSP numero
<%
nrPagina++;
[Link] ("<font color=red><b>"+nrPagina+"</b></font> y me conviene el JSP");
%>.
</body>
</html>
Ejemplono2:
Porejemplo,enelcdigosiguiente,segnlahoradelda,semarcara'Buenosda',o'Buenastarde',o'Buenasnoche'.
<html>
<head>
<title>Saludo</title>
</head>
<body bgcolor="white">
<% [Link] clock = new [Link]( ); %>
<% if ([Link]( ) < 12) { %>
<h1>Buenos das!</h1>
<% } else if ([Link]( ) < 18) { %>
<h1>Buenas tardes!</h1>
<% } else { %>
<h1>Buenas noches!</h1>
<% } %>
</body>
</html>
7.5 Agregarcomentarios
Paraagregarcomentariosenunscriptlet,sepuedenutilizarloscomentariosdeJava: //parasimplelnea,/*y*/
paramltiplelneas.
Paracomentariosafueradeunscriptlet,puedenutilizarloscomentariosHTML,quesoncontenidosentre <!--y-->,
peroestoscomentariossernenviadosalnavegadordelclientey,anquenoservisibleenlapginaweb,sern
visibleporelusuariosielpreguntaalnavegadordeensearleelcdigofuente.
Siquierenponercomentariosafueradeunscriptlet,peroquenoseaenviadoalnavegadordelusuario(yasinvisible
parael),hayqueutilizarelscriptletdecomentariosJSPqueempiezacon <%--yterminacon--%>.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina22/46
8 Utilizacindedirectivas
[Link]
paraelusuario,peropermitedeterminarlamaneraqueelservidorvautilizarparatratarelcdigoJSPdelapgina.
Existentrestiposdedirectivas:depgina,deinclusin,[Link],hayqueincluirlaentre <
%@ y%>.Lainstruccindedirectivaincluyeeltipodedirectiva,elparmetrodeladirectiva,elsignoigual,ylavalor
delparmetro,enesteorden.
8.1 Directivadepgina
[Link]
pginaJSP,[Link] = "text/plain",lapginaJSPresultandoseensearacomo
textonormal,ynoHTML.
Ciertosnavegadores,comoInternetExplorer,quierenserdemasiadointeligenteycorregirlassupuestaerroresdel
desarrollador,asquemismoconladirectivadepginaparaindicarqueesuntextonormal,ellotrataracomo
HTML...
Estaaconsejadodeincluirlasdirectivasdepginaencimadelcdigo,antesdelaetiqueta<html>.
Ejemplo:
<%@ page contentType="text/plain" %>
<html>
<head>
<title>Test directiva de pgina</title>
</head>
<body bgcolor="white">
La fecha de hoy es <%= new [Link]() %>
</body>
</html>
8.1.1
ListadeparmetrosparadirectivadePgina
Attributo
autoFlush
buffer
contentType
errorPage
extends
import
info
Defecto
true
Estverdadero(true)cuandoelbufferdelapginadebeserenviado
automticamentecuandoestlleno,ofalso(false)siunaexcepcindebeser
generadacuandoestalleno.
8kb
[Link]
kilobytes,seguidodekb,otienequeserlapalabraclavenone(ninguna)para
deshabilitarlaopcindelusodeunbuffer.
text/html EspecificaeltipoMIMEdelarespuestageneradaporlapgina,ydemanera
opcional,eltipodecaracteresdelapginafuenteydelarespuesta.
Nodefecto UnapginaJSPquehayqueensearencasedeerrordurantelaejecucindel
cdigodelapgina.
Nodefecto [Link]
[Link].
[Link]
superclassrestringelaposibilidaddelcontenedorJSPdeentregarunasuperclass
especializadaydealtorendimiento.
Nodefecto DeclaracindelaimportacindeclasesopaquetesJava(separadosporcoma)
Nodefecto Textoqueuncontenedorwebpuedeutilizarcomodescripcindelapginaensu
interfazdeadministracin.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
isErrorPage
false
isThreadSafe
true
language
session
java
true
Pagina23/46
Siestpuestoaverdadero(true),significaqueestapginaesunapginadeerror
personalizada,ypermiteelusodelavariableimplcitaexceptionadentrodelos
[Link](false)parapginasJSPnormales..
Siestpuestoaverdadero(true),elcontenedorestpermitidodeutilizarvarios
hilosdeejecucinatravsdeestapgina(porejemplo,tratarconsultasdelapagina
enparalelo).Siestfalso(false),elcontenedortratalasconsultasporlapginaen
[Link](true)ymanejarlos
problemasdeejecucinmultihiloevitandodeclaracionesJSPyasegurndoseque
todoslosobjetosutilizadosenlapaginasonprocesoseguro(threadsafe).
Defineelidiomadescriptingutilizado.
Siestpuestoaverdadero(true),[Link]
falso(false),lasvariablesdesesinimplcitasnoestndisponibleenlapgina.
Unaunidaddetranslacin(lafuenteJSPytodoslosarchivosincluidosutilizandoladirectivadeinclusin)pueden
contenervariasdirectivasdepgina,perosolounejemplodecadaatributopuedeserpresente,alaexcepcindel
[Link],estarntodosajuntadosenunalistadedefinicindeimportacin.
Ejemplo:
8.2 Directivadeinclusin
[Link]
permitedeincluirunmismoarchivoenvariaspaginasJSP,sintenerquecopiarlo.
Losnombresdearchivosincluidospuedentenercualquieraextensin(txt,html,inc,jsp...),peroexisteunaextensin
especfica'jspf'(JSPFragment)quepermitelavalidacindelcdigoincluidoenvariosentornos(Eclipse,...).
ElarchivoincluidotienequeserpresenteyaccesibleenelsistemadearchivosdelservidorJSP.
Ejemplo:
<html><head>
<title>Test directiva de pgina</title>
</head>
<body bgcolor="white">
Aqu mi texto incluido:<br>
<%@ include file="[Link]" %>
</body>
</html>
8.3 Directivataglib
Ladirectivataglibpermitededefiniretiqu"etaspersonalizadas,parautilizaraccionespersonalizadasadentrodel
[Link]:<%@ taglib uri="librera_de_etiquetas.tld" prefix="mi_accion" %>
Parapoderutilizarlas,necesitamosaprenderlasaccionespersonalizadas,quesemiranenotrocurso(JSPAvanzado).
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina24/46
9 Utilizacindevariablesdesesin
Lasvariablesdesesinsonvariablesquesepuedenatribuiraunclienteconectado,yqueserndisponibleporel
tiempoqueduralasesin:Lasesinexpiracuandosecierraennavegador,onosenavegaenelsitioporuncierto
tiempo(dependedelaconfiguracindelservidorysepuedemodificarenelcdigoJSP),ocuandoseinvalidalasesin
explcitamenteenelcdigoJSP.
Cadaclienteconectadopodrastenersuspropiasvaloresquesequedaranguardadasenlamemoriadelservidor.
9.1 Declaracindevariabledesesin
Paradeclaraocambiarelvalordeunavariabledesesin,seutilizaelmtodosetAttribute(String
delobjetosession.
Porejemplo:[Link]("nombre","Cedric")[Link]
yaexiste,sololecambiaelvalor.
9.2 Recuperarelvalordeunvariabledesesin
Pararecuperarelvalordeunvariabledesesin,seutilizaelmtodogetAttribute(String
variablenoexiste,regresaraelvalornulo.
nombre)[Link]
Porejemplo:[Link]("nombre")[Link]
[Link],segnelejemplodearriba.
Ejemplo:
String miNombre=(String) [Link]("nombre");
9.3 Invalidarunasesin
Parainvalidarunasesin,seutilizaelmtodoinvalidate()delobjetosession.
Porejemplo:[Link]()vaainvalidarlasesincorrientedelusuario.
9.4 Otrosmtodos
Paraverlosotrosmtodosdisponibles(removeAttribute,getId,...)referirsealadocumentacinjavadelinterfaz
[Link]
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina25/46
10Objetosimplcitos
CuandousanscriptletsenunapginaJSP,hayunsinnmerodeobjetos(situadosabajo)queelcontenedorJSP
[Link]
[Link],verladocumentacindeJavadisponibleenlnea.
NombredeVariable Typo
request
response
pageContext
session
application
out
config
page
exception
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]
10.1request
[Link]
accederatodalainformacindelaconsultahttpcorriente,comolosparmetros,atributos,cabeceras,ycookies.
10.2response
[Link]
[Link],conmtodosparadefinirlacabecera,elcdigodeestado,yparaadjuntarcookies.
Tambinofrecemtodosparaseguimientodesesin.
10.3session
Elobjetosessionlepermiteaccederalosdatosdesesindelcliente,[Link]
[Link] class.
10.4application
[Link] [Link]
usuariospuedenacceder,[Link]
mtodoscomolog()paraescribirmensajeseneldiariodelcontenedor.
10.5out
[Link],quesonprint()yprintln().Esparecidoal
[Link],soloqueescribelasalidaenlafuturapginaHTML.
10.6exception
ElobjetoExceptionesdisponiblesolamenteenpginasdeerror,ycontieneinformacionessobrelaerrordeejecucin
[Link](pageContext,
config, and page)peroestmuyraroqueseusanenJSP.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina26/46
11Losformularios
11.1Creacindelformulario
[Link],por
ejemplo,asignarvalorespordefectoodesactivarciertoscampossegnlainformacindisponible(variabledesesin,u
otroformulario).
Esmuyimportantequecadacampodelformulariotengaunnombre(parmetroNAMEdelcampo).
ParaelparmetroMETHOD,[Link].
AquvamosautilizarunapginaJSP.
11.2Tratamientodelformulario
Cuandoelformularioestenviado,lapginaJSPalacualseenvopuederecuperarelcontenidodecadacampo
utilizandoelmtodogetParametero,sivariasvalorespuedenserelegidasalamismavezenelcampo getParameterValues,
delobjetorequest.
LosmtodosgetParameter ygetParameterValuesaceptaunparmetro:elnombredelcampoporlocualdeseamoselvalor.
Siprobamosdesacarelvalordeuncampoquenoexiste,elvalorsernulo.
Paramsfacilidad,[Link],todoslosparmetrossondetipoString
para getParameter,yString[][Link],hayqueutilizarlosmtodos
Javaapropiadosparaconvertirlostipos.
Elobjetorequesttienetambinotrosmtodosquepermitenobtenerinformacinsobrelaconsultaencurso,entreotros:
getLocal():regresalosparmetroslocalesdelPCdelcliente
getRemoteAddr():regresaelIPdelPCdelcliente
getRemoteHost():regresaelnombredelPCdelcliente
Ejemplo:
[Link]([Link])
<html>
<head>
<title>Test formulario</title>
</head>
<body bgcolor="#CCDDAA">
<h1>Formulario de prueba</h1>
<hr>
<p>
<form name="formulario" action="[Link]" method=POST>
<table border=0>
<tr>
<th>Su nombre:</th><td><input type=text name="nombre" size=30></td>
<th>Su apellido:</th><td><input type=text name="apellido" size=30></td>
</tr>
<tr>
<th>Su direccin:</th><td colspan=3><input type=text name="domicilio" size=100></td>
</tr>
<tr>
<th>Su pais:</th><td><select name="pais">
<option>Blgica
<option selected>Nicaragua
<option>Otro
</select></td>
</tr>
<tr>
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina27/46
[Link]:
<html>
<head>
<%
String nombre=[Link]("nombre");
String apellido=[Link]("apellido");
String domicilio=[Link]("domicilio");
String pais=[Link]("pais");
if (pais==null) pais="Otro";
String tel=[Link]("tel");
String cel=[Link]("cel");
String nota=[Link]("nota");
%>
<title>Resultado de formulario</title>
</head>
<body bgcolor="#CCDDAA">
<h1>Resultado de su formulario</h1>
<p>
<p>
Estimado/a seor(a) <big><%=apellido%></big>,<br>
<br>
Le/a informamos que su formulario fue transmitido con xito.
<p>
<%
if ()
{
%>
Notamos que Usted vive en <big><%=pais%></big>, por favor elige su cuidad:<br>
<form name="formulario" action="[Link]" method=POST>
<select name="cuidad">
<%
if ([Link]("Nicaragua"))
{
%>
<option>Managua
<option>Leon
<option>Granada
<option>Otro
<%
} // Nicaragua
if ([Link]("Blgica"))
{
%>
<option>Bruselas
<option>Namur
<option>Arlon
<option>Otro
<%
} // Belgica
%>
</select>
<input type=hidden name="nombre" value="<%=nombre%>">
<input type=hidden name="apellido" value="<%=apellido%>">
<input type=hidden name="domicilio" value="<%=domicilio%>">
<input type=hidden name="pais" value="<%=pais%>">
<input type=hidden name="cel" value="<%=cel%>">
<input type=hidden name="tel" value="<%=tel%>">
<input type=hidden name="nota" value="<%=nota%>">
<button type=submit>Enviar</button>
</form>
<%
} // otro pais
%>
<hr>
<h3>Enlaces</h3>
<a href="[Link]">Regresar al indice</a><br>
<a href="[Link]">Regresar al formulario</a>
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina28/46
</body>
</html>
[Link]:
<html>
<head>
<%
String nombre=[Link]("nombre");
String apellido=[Link]("apellido");
String domicilio=[Link]("domicilio");
String pais=[Link]("pais");
String tel=[Link]("tel");
String cel=[Link]("cel");
String nota=[Link]("nota");
String cuidad=[Link]("cuidad");
%>
<title>Resultado de formulario</title>
</head>
<body bgcolor="#CCDDAA">
<h1>Resultado final de su formulario</h1>
Su nombre : <%=nombre%><br>
Su apellido : <%=apellido%><br>
Su domicilio : <%=domicilio%><br>
Su cuidad : <%=cuidad%><br>
Su pais : <%=pais%><br>
Su celular : <%=cel%><br>
Su telefono : <%=tel%><br>
Su nota : <%=nota%><br>
<p>
El nombre de su PC : <%=[Link]()%><br>
El IP de su PC : <%=[Link]()%><br>
<hr>
<h3>Enlaces</h3>
<a href="[Link]">Regresar al indice</a><br>
<a href="[Link]">Regresar al formulario</a>
</body>
</html>
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina29/46
12Elementosdeaccionesestndar
12.1<jsp:forward/>
[Link]<jsp:forward>envaaotrapginaoservletsin
cambiarelURLdeorigen.
Ejemplo:
<jsp:forwardpage="[Link]"/>
12.2<jsp:include/>
IncluyeunservletoJSPdurantelafasedelprocesodeconsulta.
Ejemplo:
<jsp:includepage="[Link]">
12.3<jsp:param>
AdjuntaunvalordeparmetroaunaconsultapasadaaotroservletoJSPutilizando<jsp:include>o<jsp:forward>.
Ejemplo:
<jsp:forward page="[Link]">
<jsp:param name="test" value="mi paramtro"/>
</jsp:forward>
<jsp:include page="[Link]">
<jsp:param name="test" value="mi pgina incluida!"/>
</jsp:include>
12.4<jsp:plugin>
GenerauncdigoHTMLquecontieneloselementos(OBJECToEMBED)apropiadosdependiendodelnavegadordel
cliente,necesariosparaejecutarunAppletconelprogramadeJavaPlugin.
Losatributoscode,
Atributo
align
archive
code
codebase
height
hspace
iepluginurl
jreversion
name
nspluginurl
codebase,ytypesonobligatorios.
Descripcin
[Link]:bottom, middle, top.
ListadeURIsparaarchivosconteniendoclasesyotrosrecursosquesernprecargados,
utilizandoAppletClassLoaderyelatributoCodebase(URIsrelativos).
Elnombrecompletodelaclasedelobjeto.
[Link]
sitio.
[Link].
Cuantidaddeespacioblancoadejaraladerechayizquierdadelazonadelapplet,en
pxeles.
DireccinURLadondeseencuentraunaversindelpluginJavaparaInternetExplorer.
Actualmente,elpluginseencuentraenelJRE.
VersindeJREmnimarequeridaparaquefuncionaelplugin.
Nombredelapplet,utilizadoporotrasappletenlamismapgina,paracomunicarse.
DireccinURLadondeseencuentraunaversindelpluginJavaparaNescape.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
type
vspace
width
Pagina30/46
Actualmente,elpluginseencuentraenelJRE.
Tipodeobjeto:appletobean.
Cuantidaddeespacioblancoadejararribayabajodelazonadelapplet,enpxeles.
[Link].
Ejemplodeplugin:
...
Ejemplo de plugin...<br>
<jsp:plugin type="applet" code="[Link]"
codebase="applet"
jreversion="1.2" width="160" height="150" >
<jsp:params>
<jsp:param name="bgcolor" value="ccddff" />
<jsp:param name="fgcolor1" value="ccd000" />
<jsp:param name="fgcolor2" value="c0000f" />
</jsp:params>
<jsp:fallback>
<jsp:include page="/Pie" />
Plugin tag OBJECT or EMBED not supported by browser.
</jsp:fallback>
</jsp:plugin>
...
12.5<jsp:params>
Permiteasignarunvaloraunoovariosparmetrosdelapplet.
12.6<jsp:fallback>
Permiteensearuntextoencasodequeelnavegadordelclientenosoportaelementos<object>o<embed>.
12.7<jsp:useBean>
[Link].
12.8<jsp:getProperty>
[Link]
JavaBeans.
12.9<jsp:setProperty>
[Link].
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina31/46
13Gestindeerrores
[Link],loserroresdeejecucin,yloserroresdelgica.
Loserroresdeejecucin
13.1Erroresdecompilacin
[Link],elservidorJSPdetectaloserroresqueno
respetanlasintaxisdelJava,ascomoerroresdeconversindetipos,usodevariablesnodeclaradas,etc...
Cuandoocurrenerroresdecompilacin,eldetalledelaerrorapareceenlapginaJSP.
13.2Erroresdelgica
[Link],unbuclequenuncatermina,
unafaltadeortografaenuntexto,unaformuladeclculoequivocada,...
13.3Erroresdeejecucin
[Link],unnmero
divididoporcero,ollamaraunabasededatosquenoexiste,etc...
Existendosclasesdeexcepciones:laclaseErrorylaclaseException.
LasexcepcionesdelaclaseErrorabarcanfallosgravesqueelprogramanovaapoderrecuperary,portanto,no
puedensercaptadas.
[Link],como Runtime
Exception, IOException, InterruptedException,...
LasexcepcionesdelaclaseExcepcionpuedenseratrapadaadentrodelcdigo,paratomaraccincorrectivayasevitar
quelaerrorseafatalparalaaplicacin.
EnJSP,tenemosdosposibilidades:tratarlaexcepcinenelscriptlet,conbloques,comosehaceenelidiomaJava,o
dejarlapaginadeerrorquevienepordefectoconelservidorJSP(noesmuylinda...),outilizarunapginadeerror
personalizada.
13.3.1
Pginadeerrorpersonalizada
Parapoderutilizarunapginadeerrorpersonalizada,hayqueutilizarladirectivadepginaerrorPageenlapagina
adondepuedeocurrirelerror,quevaareferiraotrapginaJSP,queeslapginadeerrorpersonalizada.
LapaginadeerrorpersonalizadadebecontenerladirectivadepginaisErrorPage="true".Lapginadeerrores
capazdeensearcualeralaerrorqueocurri.
Ejemplo:
[Link](estapginageneralaerror,ynosevaaverestapgina)
<%@page autoFlush="false" errorPage="[Link]" %>
<html>
<head>
<%
int i = 5/0;
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina32/46
%>
<title>Prueba</title>
</head>
<body bgcolor="white">
<h1>Prueba</h1>
<hr>
La valor de i es <%=i%> <br>
<hr>
<a href="[Link]">Formulario</a><br>
<a href="[Link]">Test Bean</a><br>
</body>
</html>
[Link](estapginasemiraenvezdelapginaqueengendrolaerror)
<%@ page isErrorPage="true" %>
<html>
<head>
<title>Pagina de error</title>
</head>
<body bgcolor="FFCCCC">
<h1 style="color=red;">Se encontro un error</h1>
<hr>
Estimado Usuario,<br>
<br>
se encontro un error procesando su encuesta. <br>
<br>
Lo sentimos, y estamos haciendo lo posible para reparar este error lo ms pronto posible.<br>
Usted puede reportar la error a nuestro servicio al cliente, al correo electronico <a
href="[Link]
Servicio al cliente</a>.
<p>Gracias por comuncarnos el detall de la error.
<p>
La pagina es: <%=[Link]()%></p>
<p>
La error es: <%=[Link]()%></p>
<p>Ms detalles:<br>
<%=[Link]()%>
<p style="font-family: Monospace; font-size: 10px ;font-weight: bold;">
<%
[Link]();
for (StackTraceElement s : [Link]()){
[Link]([Link]()+"<br>");
}
%>
</p>
<hr>
<a href="[Link]">Menu</a><br>
</body>
</html>
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina33/46
14UtilizacindeJavaBean
14.1QuesunJavaBean?
[Link]
claseserializable.
EsopermitellamaraunamismaclasededesdevariaspginasJSP.
14.2DeclaracindeunJavaBean
ParapoderutilizarunJavaBean,[Link],seponelaclasecompilada
enlacarpetadelsitioweb,bajolasubcarpetaWEBINF/classes.
Sialgunalibrera(archivoJAR)esnecesario,comoporejemploeldriverJDBC,hayqueponerloenlasubcarpeta
WEBINF/lib.
14.2.1
<jsp:useBean>
EnlapginaJSP,sedeclaraelBeanantesdeusarlo,yseleatribuyeunnombre(ID),utilizandolaetiqueta
<jsp:useBean>conlosparmetrosclass=nombredelaclase,ID=nombredemiBeanparamipginaJSP,yscopeparala
duracindevidadelBean(page, request, session, application)yqueestpuestoapagepordefecto.
Luego,seutilizaelBeanusandocomosieraunobjetoJava,conelnombredelobjetoqueeseldelID.
Ejemplo:
[Link]
package bean;
import [Link];
public class LeerDB extends [Link]{
public LeerDB() throws Exception {
super();
}
public LeerDB(int sin_conexion) {
super(sin_conexion);
}
public LeerDB(String origin) throws Exception {
super(origin);
}
public LeerDB(String origin, String datasourceName) throws Exception {
super(origin, datasourceName);
}
protected void initConnectionVariables() {
datasourceName=null;
try {
debug("Buscando el driver JDBC...");
[Link](
"[Link]"
//"[Link]"
//"[Link]"
//"[Link]"
//"[Link]"
).newInstance();
debug("...Encontr el driver JDBC");
} catch (Exception e) {
debug("No pudo encontrar el driver JDBC !!!!");
[Link]([Link]);
return;
}
try {
debug("Connectando a la base de datos...");
con = [Link](
"jdbc:mysql://localhost/curso?user=curso&password=123"
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina34/46
//"jdbc:postgresql://localhost/curso:5432","postgres","123"
//"jdbc:oracle:thin:@[Link]:1521/XE","curso","123"
//"jdbc:sqlserver://[Link]:1433/database=curso/user=curso/password=123"
//"jdbc:firebirdsql:[Link]:C:/firebird/data/[Link]","curso","123"
);
debug("...Connectado a la base de datos");
} catch (Exception e) {
debug("No pudo conectarse a la base de datos !!!!");
[Link]([Link]);
return;
}
[Link]:
<%@page contentType="text/html" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[Link]
<html>
<head>
<jsp:useBean id="leerDB" scope="page" class="[Link]" />
<title>Test Bean</title>
</head>
<body bgcolor="white">
<h1>Prueba de JavaBean, utilizado para conectarse a Oracle</h1>
<hr>
<center><form name="form" action="[Link]" method="get">
<select name="pais" onchange="[Link]();">
<%
String pais=[Link]("pais");
if (pais==null) pais="France";
[Link]("select distinct job_country from employee");
while ([Link]()){
%>
<option value="<%=[Link](1) %>" <%=(([Link](1).equals(pais))?" selected ":"") %>>
<%=[Link](1) %></option>
<%} %>
</select>
</form></center>
<h2>Lista de empleados</h2>
<table>
<tr>
<th>Nombre</th><th>Apellido</th><th>Salario</th>
</tr>
<%
[Link]("select * from employee where job_country='"+pais+"'");
while ([Link]())
{
[Link]("<td>"+[Link]("first_name")+"</td>");
[Link]("<td>"+[Link]("last_name")+"</td>");
[Link]("<td>"+[Link]("job_country")+"</td>");
[Link]("<td>"+[Link]("salary")+" Cordobas</td>");
[Link]("</tr>");
}
[Link]();
%>
</table>
<hr>
<a href="[Link]">Menu</a>
</body>
</html>
14.2.2
<jsp:getProperty>
SacaelvalordeunapropiedaddeuncomponenteJavaBean.
Ejemplo:
<jsp:useBean id="clock" class="[Link]" />
La fecha y hora local del servidor son:
<ul>
<li>Da: <jsp:getProperty name="clock" property="date" />
<li>Mes: <jsp:getProperty name="clock" property="month" />
<li>Ao: <jsp:getProperty name="clock" property="year" />
<li>Hora: <jsp:getProperty name="clock" property="hours" />
<li>Minuto: <jsp:getProperty name="clock" property="minutes" />
</ul>
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
14.2.3
Pagina35/46
<jsp:setProperty>
AsignaelvalordeunapropiedaddeuncomponenteJavaBean.
Cuandosetrataderecibirparmetrosdeunformulario,siseutilizalaestrella*,elJSPasignaautomticamente
losvaloresalaspropiedadesdelJavaBeanquetienenelmismonombrequeunparmetrodelformularioenviado
(recibido),ydebeexistirelmtodosetAtributoparacadaatributo.
Ejemplo:
[Link]:
package bean;
import [Link];
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
private String nombre;
public String apellido;
public void setNombre(String nombre){
[Link]=nombre; }
public void setApellido(String apellido){
[Link]=apellido;
public String getNombre(){
return [Link]; }
public String getApellido(){
return [Link]; }
}
[Link]:
<form name="formulario" action="[Link]" method=POST>
<table><tr>
<th>Su nombre:</th><td><input type=text name="nombre" size=30"></td>
</tr><th>Su apellido:</th><td><input type=text name="apellido" size=30></td>
</tr><th></th><td><button type=submit>Entrada</td>
</tr></form>
</table>
[Link]:
14.3ScopedeunJavaBean
AldeclararunJavaBean,sedeclaratambinelparmetroscope,quedefinesuduracindevida.
Esteparmetropudetenerunadelosvaloressiguiente:
Page:vlidosolamenteadentrodeestapgina
Request:vlidoadentrodelamismaconsulta(sobreviveaun<jsp:forward>)
Session:vlidodurantelasesindelusuario
Application:vlidodelempiezodelaaplicacinasuapago.
Parailustrarelscope,vamosautilizarunobjeto(counter)avariosnivelesdescope,yverlosresultados.
PuedenprobarlosdiferentesscopedeunJavaBeanconlaspginascounter.jspdelproyectoJSP_basico.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina36/46
15Utilizacindeservlets
15.1Quesunservlet?
UnservletesunaclaseJavaquepuedeserllamadadirectamentededesdeelnavegadorwebydelcuallasalidapuede
serledaporelnavegadorquelallamo.
Enrealidad,todaslapginasJSPestnconvertidasenservletporelservidor,laprimeravezquesellamalapgina,
yluegoelservidorsoloejecutaelservlet.
15.2Paraquesirveunservlet?
ElservletpudeservirparagenerarpginasHTML,peroesunpocofastidiosohacerlonosotros,poresoexisteelJSP.
Elservletquevamosacrearservirnmejorparatratarelresultadodeunformularioydespusenviarelusuarioa
otrapgina,opararegresaralnavegadorarchivosbinariosusandounflujo,[Link]
ejemplo,enviaralnavegadorunaimagenounarchivoPDFquenoestapresenteenelsistemadearchivossinoen
unabasededatos,porejemplo.
Osservlets,comolosJavaBeansylasaccionespersonalizadas,permitendeencapsularlalgica,paraquesea
[Link],disminuyendoel
mantenimiento,eltamaodelaaplicacin,yelriesgodeerror.
15.3Anatomadeunservlet
[Link]
[Link]
mtododelassiguiente:
doGet,sielservlettienequemanejaconsultasHTTPutilizandoelmtodoGET.
doPost,sielservlettienequemanejaconsultasHTTPutilizandoelmtodoPOST.
doPut,sielservlettienequemanejaconsultasHTTPutilizandoelmtodoPUT
doDelete,sielservlettienequemanejaconsultasHTTPutilizandoelmtodoDELETE
initanddestroy,paramanejarrecursosquesonguardadosporlavidadelservlet
getServletInfo,queelservletutilizaparaentregarinformacinsobreelmismo.
Enrealidad,soloeldoGetydoPostsonutilizadas,porquelosmtodosdeconsultaPUTeDELETEnoseutilizan.
Ejemplo:
Losmtodosinitydestroysoloseutilizanencasodequeelservlettienequeguardarrecursosdurantetodasuvida.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina37/46
15.4Ciclodevidadeunservlet
Lavidadeunservlettienetresmomentosimportantes:suinicializacin,suutilizacin,ysudestruccin.
Paramanejarsuinicializacin,sesobreescribeelmtodoinit().Estosirvepara,porejemplo,manejarreferenciasa
recursosexternos,comoinformacindeconfiguracinobasededatos.
Cadavezqueseutilizaenservlet,sellamaalmtodoservice(),peronormalmentenosesobreescribeestemtodo
porqueseutilizaeldoGetoeldoPostparamanejarlasaccionesdelservlet.
Elmtododestroy()estllamadoalmomentodequeelservletsaledeservicio(principalmentecuandoseapagao
reiniciaelservidorweb).Estemtodopermiteliberarlosrecursosqueelhaadquiridoconelmtodoinit().
15.5Creacindeunservletsimple
UnservletesunaclaseJavaqueextiendelaclaseHttpServlet,yporlacualsesobredefineelmtododoGetoelmtodo
[Link],peropermitetratarformulariosdemsde2000caracteresloqueel
doGetnopuede.
Paraqueelservletseaaccesibleenelsitio,eltienequeserdefinidoenelarchivodeconfiguracindelsitioweb,quees
[Link],queseencuentrabajolacarpetaWEBINF,outilizarlasanotaciones
@WebServlet("...")sielservidorsoportalaversin3.0delAPIJavaServlet.
Ejemplo:
[Link]:
<html>
<head>
<title>Prueba de formulario enviado a un servlet</title>
</head>
<body bgcolor="#CCDDAA">
<h1>Formulario para Servlet</h1>
<hr><p>
<form name="formulario" action="servlet/ProcesFormulario" method=POST>
<table border=0><tr>
<th>Su nombre:</th><td><input type=text name="nombre" size=30></td>
</tr><tr>
<th></th><td><button type=submit>Enviar</td>
</tr></table>
</form>
</body>
</html>
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina38/46
[Link]
package servlet;
import [Link].*;
import [Link];
import [Link].*;
import [Link].*;
@WebServlet("/ProcesFormulario")
public class ProcesFormulario extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter out = [Link]();
[Link]("text/html");
[Link]("<html>");
[Link]("<head>");
[Link]("<title>Resultado del Servlet</title>");
[Link]("</head>");
[Link]("<body>");
[Link]("<h1>Llego con el metodo GET !!!</h1>");
[Link]("<hr>");
[Link]("</body>");
[Link]("</html>");
[Link]("Llego por el metodo GET !!!");
}
15.6Usodeservletparamostrarimgenesoarchivosbinarios
Parapodermostrarimgenesoarchivosbinariosguardadosenunabasededatos,hayqueutilizarunservlet,yel
[Link],refirasea:
[Link]
[Link]:Thesourcecode,objectcode,[Link]
copyrightandownedbyJasonHunter.
Losservletsquepermitentraerarchivosbinariosdedesdelabasededatos,soncontenidosenunaclaselamada
[Link]'COS'deOReillyestacolocadadebajode/WEBINF/lib,as
comoladeldriverdelabasededatos.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina39/46
Ejemplo:
[Link]:
[Link]:
package doc;
import [Link];
import [Link].*;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
/*
* Creado por: Cedric Simon
* Uso: Quitar un archivo binario de una base de datos.
* Licencia : El uso de este cdigo, o perte de este cdigo esta permitido
*
para uso no comercial.
*
*
Los paquetes de [Link] que son importados en este cdigo
*
estn protegido por una licencia. Mas detalles el [Link]
*
*/
@WebServlet("/Remover")
public class Remover extends HttpServlet implements Servlet {
private static final long serialVersionUID = 1L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException {
try
{
PrintWriter out = [Link]();
[Link]("text/html");
[Link] con = null;
[Link]("[Link]");
con =
[Link]("jdbc:firebirdsql:[Link]:C:/firebird/data/[Link]","pulgas","cs");
[Link] stmt =
[Link](ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
String query = "delete from adjuntos where no_adjunto="+[Link]("no_adjunto");
[Link](query);
[Link]("<h3 align=\"center\"><font color=green>Archivo quitado</font></h3>");
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina40/46
[Link]:
package doc;
import [Link].*;
import [Link].*;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
/*
* Creado por: Cedric Simon
* Uso: Traer un archivo binario de una base de datos.
* Licencia : El uso de este cdigo, o perte de este cdigo esta permitido
*
para uso no comercial.
*
*
Los paquetes de [Link] que son importados en este cdigo
*
estn protegido por una licencia. Mas detalles el [Link]
*
*/
@WebServlet("/DocRetriever")
public class Retriever extends HttpServlet implements Servlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
LeerDB readDB = null;
try {
readDB = new LeerDB([Link]());
String sql = "select * from photo_gallery where photo_id="
+ [Link]("photo_id");
[Link](sql);
if ([Link]()) {
int blobLen = [Link]("photo_filesize");
[Link]([Link]("photo_filetype"));
try {
ServletOutputStream sos = null;
sos = [Link]();
BufferedInputStream bis = new BufferedInputStream(readDB
.getBinaryStream("data"));
byte bindata[] = new byte[blobLen];
int bytesread = 0;
if (![Link]()) {
if ((bytesread = [Link](bindata, 0, [Link])) != -1) {
[Link](bindata, 0, bytesread);
} else {
[Link]([Link]());
}
}
[Link]();
} catch (IOException ioe) {
[Link]("Problem retrieving binary data1: "
+ ioe);
[Link]();
} catch (Exception cnfe) {
[Link]("Problem retrieving binary data2: "
+ cnfe);
[Link]();
}
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina41/46
}
} catch (Exception e) {
[Link] out = [Link]();
[Link]("<h1><font color=red>ERROR !!!!</font></h1><hr><br />"
+ e);
[Link]();
[Link]();
String stack = "";
StackTraceElement stackElm[] = [Link]();
for (int cntStack = 0; cntStack < [Link]; cntStack++) {
stack += stackElm[cntStack] + "\n";
}
try {
readDB
.logError([Link](), [Link](), stack,
((String) [Link]("User-Agent")
.nextElement())
+ " - IP:"
+ [Link]()
+ " - Host:"
+ [Link]()
+ " - Query string="
+ [Link](), 1);
} catch (Exception e1) {
[Link]();
}
} finally {
// close DB
try {
if (readDB != null)
[Link]();
readDB = null;
} catch (Exception e) {
}
}
[Link]();
[Link]:
package doc;
import [Link].*;
import [Link].*;
import [Link];
import [Link].*;
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
import [Link];
/*
* Creado por: Cedric Simon
* Uso: Cargar un archivo binario en una base de datos.
* Licencia : El uso de este cdigo, o perte de este cdigo esta permitido
*
para uso no comercial.
*
*
Los paquetes de [Link] que son importados en este cdigo
*
estn protegido por una licencia. Mas detalles el [Link]
*
*/
@WebServlet("/Uploader")
public class Uploader extends HttpServlet implements Servlet {
private static final long serialVersionUID = 1L;
public [Link] ds = null;
public
[Link] con = null;
private String dirName;
public void init(ServletConfig config) throws ServletException {
[Link](config);
// read the uploadDir from the servlet parameters
dirName = [Link]("uploadDir");
if (dirName == null) {
throw new ServletException("Please supply uploadDir parameter");
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
}
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina42/46
@SuppressWarnings("unchecked")
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//
[Link]("Step 0");
try{
PrintWriter out = [Link]();
[Link]("text/html");
String name="";
String no_pulga="";
String doc_comment="";
[Link]("[Link]");
con = [Link]("jdbc:firebirdsql:[Link]:C:/firebird/data/[Link]","pulgas","cs");
try {
MultipartRequest multi =
new MultipartRequest(request, dirName, 10*1024*1024,
"ISO-8859-1", new DefaultFileRenamePolicy());
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina43/46
16ElmodeloMVC
16.1QueselmodeloMVC?
ElmodeloMVC(ModelViewControler)esunconceptodeprogramacinqueintentadedividirlaaplicacinentres
partesdiferentes:elModelo,querepresentalosdatosdelaaplicacin,laVista,querepresentalapresentacindelos
datos(queestacontenidoenJavaBeansoEJB),yelControlador,querepresentalalgicadelnegocio(businesslogic).
[Link],elquetrabajaenla
presentacindelosdatos,notienequepreocuparseporlalgicadelnegocio,niconelmanejodelosdatos.
16.2MVCconJSPyJavaBeans
ElmodeloMVCsepuedeutilizarconsolamentepginasJSPyJavaBeans.
[Link]
paraaplicacionespequeasoprototipodeaplicacionesgrandes,yunavezlaestructuradelafuturaaplicacinestable,
yquelosdesarrolladorestienenunabuenacomprensindelaaplicacin,moverhastaelusodeservletsyEJB.
Elriesgoesquelamigracindelprototipohastalaaplicacinfinal,conusodeservletsyEJBnuncamiraelda...
16.3MVCconJSP,JavaBeansyservlet
Estemodelo,utilizandoelJSPparalapresentacin,losservletsparaelmanejodelalgicadelnegocio,ylos
JavaBeansparalosdatos,esunamanerapoderosadedesarrollaruneaplicacinbienestructurada,fcilamantener,
ylistaparaevolucionar.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina44/46
16.4MVCconJSP,servlet,JavaBeansyEJB
Estemodelo,utilizandoEJB,seutilizaparaaplicacionesempresariales,[Link],pero
tambinelmspoderoso.
LosEJBsirvenprincipalmenteparaelmanejodetransacionesyunmodelodecomponenteindependientedeltipode
[Link](navegador,aplicacinautonoma,
WAP,PDAs...),losEJBsonlamejoreleccin.
[Link]:losEJBdeentidades,ylosde
session.
LosEJBdeentidadesquerepresentanunapartedelnegocio,[Link]
tienenunaidentidadnica:todoslosclientsquequierenutilizaresteentidadutilizanlamismainstanciadeesteEJB.
LosEJBdesessionseusanparamanejarlalgicadelnegocio,ysonutilizadossolamenteporelclientequeloha
[Link],unbeandesessionoperasobrelosbeansdeentidadenlugardelcliente.
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina45/46
17Ejercicios
1)Utilizacindescriptlets:
a)Crearunapginaqueescribetodoslosnmerosde1a20enunatabladedoscolumnas(1a10y11a20)
utilizandounscriptletyunabucleJava.
b)CrearunobjetoMiAutoconatributoelcoloryelmodelo,ymtodopararegresarelcoloryel
[Link],susatributosysumtodoenunapginaJSP.
c)CrearcomentariosenunapginaJSP,de4manerasdiferentes.
d)CrearunapginaJSPdelacualelcolordelfondoestbasadoellassegundasdelahoradelsistemaal
momentodelaaperturadelapgina:silahoratieneentre0y14segundos,fondoblanco,15y29,coloramarillo,
30y44,azulclaro,y45y59,verde(sinrefrescoautomtico).
2)Directivasdepginas:
a)IncluirunadirectivadepginaquemostrarelcdigofuentedeunapginaHTML.
b)IncluirunadirectivadepginaqueincluyeunarchivotextooHTMLenunapginaJSP.
3)Variablesdesesin:
a)Crearunformulariodeentradaalsitio,yrecuperarelnombredeusuarioenunavariabledesesinymencionar
sunombreenotraspginasrelacionadasdelmismositio.
b)Crearunformularioderegistro,ysiunusuariopruebadellegaraotrapginadelsitiosihaberregistrado,
mandarloalapginaderegistro.
c)Crearunaopcinenlaspginasparasalirdesusesin
4)Objetosimplcitos:
a)Verificarenladocumentacinlasopcionesdisponiblesparalosobjetosimplcitosyutilizarlasquelesparece
interesante.
5)Formulario:
a)Crearunformulariodeinscripcinaunconcurso(nombre,apellido,email),ydespusdehabertratadosu
contenido,ensearenotrapginaelcontenidodelformulariollenado,enformatodetabla.
b)[Link](lostres
camposnopuedensernulo,elemaildebecontenerun?@?),yencasodeerror(camponulo,etc...)regresaral
formulariooriginalenseandoloscamposconerrores.
6)Accionesestndar:
a)InsertarunapginaJSPenotra:silahora<30sec,incluyeaunapagina,sinoaotra.
7)Gestindeerrores:
a)Crearyprobarunapginadeerrorpersonalizada.
8)JavaBeans:
a)CrearunJavaBeanquerepresentaunempleado,yutilizarelBeanparamanejarelempleado(creacin,
modificacin).Esosinllamadaalabasededatos,soloenmemoria.
b)Crearunapaginaquepermiteverlalistadeempleadosdelabasededatosyfiltrarlaporpais(job_country).
9)Servlet:
a)Crearunservletquetratalosdatosdeunformularioysegnelresultado(checkOKono)envaaunapginau
aotra.
b)Crearunservletqueintentaconectarsealabasededatosyencasodeerrordicecualeselniveldeerror(JDBC
drivernoencontrado,noconexinalabasededatos,consultaincorrecta).
c)Crearunapaginawebconteniendotextoeimgenes,quevienendeunabasededatos.
Ejerciciofinal(siquedatiempo):Crearunaaplicacinwebque:
1)Traetodosucontenidodeunabasededatos:Textos,etiquetas,imgenes,...
2)Tienepginadeerrorpersonalizadautilizadaporcadapgina.
3) Manejodeunsistemadecompraenlnea:elusuariopuedellenarunalistadecompras,verlascompras
anteriores,etc...
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida
CursodeJavaServerPagesNivelbsico
Pagina46/46
18Esquemadelabasededatos
CopyrightCdricSimon,20052011
Versin2.3
Reproduccinprohibida









