100% encontró este documento útil (1 voto)
13K vistas46 páginas

Curso de JSP Basico

Aprende a crear aplicaciones web con Java (JSP). Escrito en español. Para Tomcat 7 y arriba. PDF actualizado disponible en http://solucionjava.com/manuales_gratis.php

Cargado por

Cedric Simon
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (1 voto)
13K vistas46 páginas

Curso de JSP Basico

Aprende a crear aplicaciones web con Java (JSP). Escrito en español. Para Tomcat 7 y arriba. PDF actualizado disponible en http://solucionjava.com/manuales_gratis.php

Cargado por

Cedric Simon
Derechos de autor
© Attribution Non-Commercial (BY-NC)
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

<JSP>

Reproduccinprohibida

Versin2.3

CopyrightCdricSimon,20052011

[Link]

Manual del alumno

[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:

GET /[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

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:

<form action="/[Link]" method="POST">


Cuidad: <input name="cuidad" type="text">
Pais: <input name="pais" type="text">
<p>
<input type="SUBMIT">
</form>

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:

<%@ page language="java" contentType="text/html;charset=Shift_JIS"%>


<%@ page import="[Link].*, [Link].*" %>

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.

nombre, Object valor)

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

<th>Su no de [Link] type=text name="tel" size=30></td>


<th>Su no celucar:</th><td><input type=text name="cel" size=30></td>
</tr>
<tr>
<th>Su nota:</th><td colspan=3><textarea name="nota" cols=75 rows=5></textarea></td>
</tr>
<tr>
<th></th><td><button type=reset>Resetiar</td>
<th></th><td><button type=submit>Enviar</td>
</tr>
</table>
</form>
</body>
</html>

[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 (![Link]("Otro"))
{
%>
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]:

<jsp:useBean id="usuario" class="[Link]">


<jsp:setProperty name="usuario" property="*" />
</jsp:useBean>
La infomacin siguiente fue guardada:
<ul>
<li>Nombre : <jsp:getProperty name="usuario" property="nombre" />
<li>Apellido: <%=[Link]()%>
</ul>

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:

public class NombreDelServlet extends HttpServlet {


public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{ ... }
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{ ... }
}

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 !!!");
}

public void doPost(HttpServletRequest request, HttpServletResponse response)


throws ServletException, IOException {
try
{
PrintWriter out = [Link]();
[Link]("text/html");
[Link]("<html>");
[Link]("<head>");
[Link]("<title>Resultado del Servlet</title>");
[Link]("</head>");
[Link]("<body>");
[Link]("<h1>Su nombre es :"+[Link]("nombre")+"</h1>");
[Link]("<hr>");
[Link]("Este pagina fue generada por un servlet!");
[Link]("</body>");
[Link]("</html>");
}
catch (Exception e) {
PrintWriter out = [Link]();
[Link]("text/html");
[Link]("the error is:"+[Link]());
[Link]();
[Link]("<center><font size=5> Error in inserting the data</font></center>");
[Link]("the error is:"+[Link]());
[Link]("Error is:"+[Link]());
}
}

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]:

<%@page contentType="text/html" %>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "[Link]
<html>
<link href="[Link]" rel="stylesheet">
<head> <title>Lectura de BLOB's</title></head>
<jsp:useBean id="readDB" scope="page" class="[Link]" />
<body bgcolor="#FFFFFF">
<h1>Lista de archivos binarios disponibles:</h1>
<hr><img src="servlet/DocRetriever?photo_id=1">
<table class="table3">
<th class="th2">Adjunto</th>
<th class="th2">Commentario</th> </tr>
<% int chk=0;
[Link]("select photo_id,photo_filename from photo_gallery");
while ([Link]())
{
chk+=1;
[Link]("<tr>");
[Link]("<td class=\"td2\"><a href=\"servlet/DocRetriever?photo_id="+
[Link]("photo_id")+"\" target=\"_blank\">"+
[Link]("photo_filename")+"</a>");
[Link]("</td><td class=\"td3\">"+[Link]("photo_filename")+"</td>");
[Link]("</tr>");
}
if (chk==0)
{
[Link]("<td width=\"25%\"></td><td width=\"45%\">No hay adjuntos.</td>");
[Link]("<td align=\"center\"><input type=\"button\" value=\"Manejo de adjuntos\"
onClick=\"[Link](href='[Link]')\"></td></tr>");
}
[Link]();
%>
</table>
</body>
</html>

[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]("<p align=\"center\"><input type=\"button\" onClick=\"[Link]='../[Link]?


no_pulga="+[Link]("no_pulga")+"';\" value=\"Regressar al manejo de adjuntos\">");
[Link]("&nbsp;&nbsp;<input type=\"button\" onClick=\"/*alert('Empuja F5 para refrescar la lista de
adjuntos en el detalle de la pulga. Si has hechos cambios a la pulga, no empuje F5 pero guarda la pulga.');*/[Link]();\"
value=\"Cierar la ventana\"></p>");
[Link]();
}
catch (Exception e){
//
print error message
[Link]("<center><font size=5> Error in inserting the data</font></center>");
[Link]("the error is:"+[Link]());
[Link]("Error is:"+[Link]());
}
}

public void doGet(HttpServletRequest request, HttpServletResponse response)


throws ServletException {
doPost(request,response);
}

[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());

Enumeration params = [Link]();


while ([Link]()) {
name = (String)[Link]();
String value = [Link](name);
if ([Link]("doc_comment")) doc_comment =value;
if ([Link]("no_pulga")) no_pulga =value;
}
Enumeration files = [Link]();
while ([Link]()) {
name = (String)[Link]();
String filename = [Link](name);
String type = [Link](name);
File f = [Link](name);
if (f != null) {
FileInputStream fis = new FileInputStream(f);
PreparedStatement pstmt = [Link]("insert into adjuntos (adjunto,nombre,
doc_comment,tipo,no_pulga,medida) values(?,?,?,?,?,?)");
int i=1;
[Link](i, fis,(int)[Link]()); i++;
[Link](i,filename); i++;
[Link](i,doc_comment); i++;
[Link](i,type); i++;
[Link](i,no_pulga); i++;
[Link](i,(int)[Link]()); i++;
[Link]();
[Link]();
[Link]();
[Link]("<h3 align=\"center\"><font color=green>Archivo "+filename+" guardado.</font></h3>");
[Link]("<p align=\"center\"><input type=\"button\" onClick=\"[Link]='../[Link]?
no_pulga="+no_pulga+"';\" value=\"Regressar al manejo de adjuntos\">");
[Link]("&nbsp;&nbsp;<input type=\"button\" onClick=\"[Link]();\" value=\"Cierar la
ventana\"></p>");
}
else {
// the field did not contain a file
[Link]("<h3 align=\"center\"><font color=red>El archivo " + name + " no fue guardado porque estaba
VACILLO !!!</font></h3>");
[Link]("<p align=\"center\"><input type=\"button\" onClick=\"[Link]='../[Link]?
no_pulga="+no_pulga+"';\" value=\"Regressar al manejo de adjuntos\">");
[Link]("&nbsp;&nbsp;<input type=\"button\" onClick=\"[Link]();\" value=\"Cierar la
ventana\"></p>");
[Link]();
}
}
[Link]();
}
catch (IOException lEx) {
[Link]();
[Link]("error reading or saving file. Talves el archivo es demasiado grande (max 9.5 MB).");
[Link]();
}
}
catch (Exception e) {
//
print error message
PrintWriter out = [Link]();
[Link]("text/html");
[Link]("the error is:"+[Link]());
[Link]();
[Link]("<center><font size=5> Error in inserting the data</font></center>");
[Link]("the error is:"+[Link]());
[Link]("Error is:"+[Link]());
}
}
}

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

Curso de 
Java Server Pages
Nivel básico 
Manual del alumno
<JSP>
©Copyright Cédric Simon, 2005­2011
Versión 2.3
 Reproducció
Curso de Java Server Pages – Nivel básico
Pagina 2 / 46
Índice
Índice........................................................
Curso de Java Server Pages – Nivel básico
Pagina 3 / 46
7.5Agregar comentarios...............................................
Curso de Java Server Pages – Nivel básico
Pagina 4 / 46
14.2.2<jsp:getProperty>..............................................
Curso de Java Server Pages – Nivel básico
Pagina 5 / 46
1 Introducción al curso
1.1 Objetivo de este curso
 
 
En este curso 
Curso de Java Server Pages – Nivel básico
Pagina 6 / 46
2 Introducción al JSP
2.1 ¿Que es el JSP?
 
 
El JSP es una extensión
Curso de Java Server Pages – Nivel básico
Pagina 7 / 46
3 Arquitectura J2EE
3.1 Introducción a la Tecnología y Conceptos J2EE
Curso de Java Server Pages – Nivel básico
Pagina 8 / 46
3.3 La Arquitectura Java Naming Directory Interface (JNDI)
 
 
J2EE u
Curso de Java Server Pages – Nivel básico
Pagina 9 / 46
4 El protocolo HTTP
El protocolo HTTP (HyperText Transport Protocol) 
Curso de Java Server Pages – Nivel básico
Pagina 10 / 46
El título HOST dice al servidor el nombre (hostname) utilizado en el

También podría gustarte