Está en la página 1de 54

J2EE

Java2EnterpriseEdition

Servlets
Java
JSPs
JSP
DAW
06/07

JDBC

Copyright 2006 Raquel CEDAZO LEN


RaquelCEDAZOLEN
rcedazo@fi.upm.es

J2EE

Java2EnterpriseEdition
Copyright 2006 Raquel CEDAZO LEN
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.2
or any later version published by the Free Software Foundation; with
no Invariant Sections, no Front-Cover Texts, and no Back-Cover
Texts.
A copy of the license is included in the section entitled "GNU Free
Documentation License".

DAW
06/07

http://www.gnu.org/copyleft/fdl.html
RaquelCEDAZOLEN
rcedazo@fi.upm.es

J2EE

ndice

DAW
06/07

Introduccin

Servlets

Tomcat

Eclipse

Filtros

JSPs

TagLibs

JDBC

ANT

EasyEclipse

RaquelCEDAZOLEN
rcedazo@fi.upm.es

J2EE

Introduccin(1/5)

DiferentesplataformasdeJava:

J2SE(Java2StandardEdition)

J2ME(Java2MicroEdition)

DAW
06/07

Desarrollodeaplicacionesyapplets
Desarrollodeaplicacionesparamicrodispositivos(pantallaymemoria
limitados):PDAsytelfonosmviles

J2EE(Java2PlataformEnterpriseEdition)

Aplicacionesdeservidor

Coneltiempo,algunasAPIsdeJ2EEsevanpasandoaJ2SE

J2EEesunconjuntodeespecificacionesorientadasaldesarrollo
deaplicacionesempresariales

RaquelCEDAZOLEN
rcedazo@fi.upm.es

J2EE

Introduccin(2/5)

Caractersticasdelasaplicacionesempresariales:

Seguridad
Integracin

Arquitecturadetrescapas:

DAW
06/07

Accesoabasededatos
Transaccionalidad
Escalabilidad
Disponibilidad

Mquinacliente
MquinaservidorJ2EE
Basededatos

RaquelCEDAZOLEN
rcedazo@fi.upm.es

J2EE

Introduccin(3/5)

DAW
06/07

Especificacionesprincipales:

Servlets:APIparacrearaplicacioneswebdinmicas

JSPs(JavaServerPage):extensindeServletsparafacilitarel
desarrollodeaplicacionesweb

JDBC(JavaDabaseConnectivity):APIparaaccederabasede
datos(incluidaenJ2SE)

JNDI(JavaNamingandDirectoryInterface):APIparaaccedera
serviciosdedirectorios.Ej.LDAP(incluidaenJ2SE)

JMS(JavaMessageService):APIparacolasdemensajes
asncronas

EJBs(EnterpriseJavaBeans):APIparalarealizacinde
componentesdistribuidos

JTA(JavaTransactionAPI):APIpararealizaraplicaciones
transaccionalesdistribuidas

RaquelCEDAZOLEN
rcedazo@fi.upm.es

J2EE

Introduccin(4/5)

DAW
06/07

JavaMail:APIpararealizaraplicacionesdeemailindependientesde
plataformayprotocolo

JAF(JavaBeansActivationFramework):APInecesariopara
JavaMailparamanejarmensajesMIME(MultipurposeInternetMail
Extension)

JAXP(JavaAPIforXMLProcessing):APIparaparsearXMLy
transformacionesXSLT

JCA(JavaConnectorArchitecture):APIparaconectarconotros
sistemasdeinformacin.Ej.centrodemensajescortos

JAAS(JavaAuthenticationandAuthorizationServer):APIque
proporcionamecanismosdeautenticacinyautorizacin

RaquelCEDAZOLEN
rcedazo@fi.upm.es

J2EE

Introduccin(5/5)

J2EEnodejadeserunCONJUNTODEESPECIFICACIONES.
Existendiferentesimplementacionessegnelfabricante:

DAW
06/07

Libres

Tomcat:ContenedordeServletsymotordeJSPs

JBoss:ServidordeaplicacionesJ2EE

Geronimo:ServidordeaplicacionesJ2EE

Comerciales

BEAWebLogicServer

IBMWebSphere

OracleApplicationServer

RaquelCEDAZOLEN
rcedazo@fi.upm.es

J2EE

Servlets.Introduccin(1/4)

APIparalageneracindecontenidodinmico
Servlet:claseJavaquerecibepeticiones(normalmenteHTTP)y
generaunarespuesta(normalmenteHTMLoXML)
UnaaplicacinwebcompuestadeServletsseejecutaenun
servidordeaplicacionesweb(contenedor)

Usuario

navegador

HTTP

TCP
/IP

Petic
ion

Respu
e

DAW
06/07

(GET
/PO

ST)

ServletContainer(Tomcat)

s ta
Servlet

Servlet

Servlet

RaquelCEDAZOLEN
rcedazo@fi.upm.es

J2EE

Servlets.Ejemplo:HolaMundoServlet(2/4)
EJEMPLO

DAW
06/07

ImprimelacadenaHolaMundodesdeunServletenunapgina
web
Ficheros:

HolaMundoServlet.java

web.xml

RaquelCEDAZOLEN
rcedazo@fi.upm.es

10

J2EE

Servlets.Ejemplo:HolaMundoServlet(3/4)
HolaMundoServlet.java
packageservlets;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.*;
publicclassHolaMundoServletextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponse
response)throwsServletException,IOException{
response.setContentType("text/html");
PrintWriterout=response.getWriter();

DAW
06/07

out.println("<html>");
out.println("<body><h1>HolaMundodesdeunServlet</h1></body>");
out.println("</html>");
}
}

RaquelCEDAZOLEN
rcedazo@fi.upm.es

11

J2EE

Servlets.Ejemplo:HolaMundoServlet(4/4)
web.xml
<?xmlversion="1.0"encoding="ISO88591"?>
<!DOCTYPEwebapp
PUBLIC"//SunMicrosystems,Inc.//DTDWebApplication2.3//EN"
"http://java.sun.com/dtd/webapp_2_3.dtd">
<webapp>
<displayname>Ejemplos</displayname>
<description>
EjemplosdeJ2EE(DAW0607)
</description>
<servlet>
<servletname>HolaMundoServlet</servletname>
<servletclass>servlets.HolaMundoServlet</servletclass>
</servlet>

DAW
06/07

<servletmapping>
<servletname>HolaMundoServlet</servletname>
<urlpattern>/HolaMundoServlet</urlpattern>
</servletmapping>
</webapp>
RaquelCEDAZOLEN
rcedazo@fi.upm.es

12

J2EE

Tomcat(1/3)

ServidordeaplicacionesweboContenedordeServlets

Tomcat:http://tomcat.apache.org

Descargar:Tomcat5.0.28(jakartatomcat5.0.28.tar.gz)

Requisito:JDK(JavaDevelopmentKit)

Descomprimir:tarzxvfjakartatomcat5.0.28.tar.gz

exportJAVA_HOME=DIR_INSTALACION_JDK

Scriptsdearranqueyparadadelservidor,dentrodel
directorio/bindeinstalacin:

ArrancarTomcat:
./startup.sh

DAW
06/07

PararTomcat:
./shutdown.sh
RaquelCEDAZOLEN
rcedazo@fi.upm.es

13

J2EE

Tomcat(2/3)

DAW
06/07

RaquelCEDAZOLEN
rcedazo@fi.upm.es

14

J2EE

Tomcat(3/3)

Pasosparadesplegarunaaplicacinweb:

DAW
06/07

CrearunarchivoWAR(Ejemplo:DAW0607.war):

WEB_INF

WEB_INF/classes

WEB_INF/lib

WEB_INF/web.xml

Copiardentrodeldirectoriowebapps
ReiniciarelTomcat
Abrirunnavegador:http://localhost:8080/DAW0607/MI_APLICACION

server.xml(directorioconf):permitedefinirnuevoscontextos

<Contextpath="/daw0607"docBase="/home/rcedazo/workspace/DAW0607/web/"
reloadable="true">
</Context>

RaquelCEDAZOLEN
rcedazo@fi.upm.es

15

J2EE

Eclipse(1/2)

DAW
06/07

IDE(IntegratedDevelopmentEnvironment)

Descargar:EclipseSDK3.2.1http://www.eclipse.org

Requisito:JRE(JavaRuntimeEnvironment)

Eclipseplugins:http://eclipseplugins.2y.net/

RaquelCEDAZOLEN
rcedazo@fi.upm.es

16

J2EE

Eclipse(2/2)

DAW
06/07

RaquelCEDAZOLEN
rcedazo@fi.upm.es

17

J2EE

Filtros.Introduccin(1/5)

DAW
06/07

Accionesrepetitivas:controldeseguridad,herramientadelogs,
sistemacompresindedatos
Solucintradicional:includedeficheros
Filtro:mecanismogestionadoporelcontenedordeServletsque
interceptalaspeticionesaServletsoJSPsyqueactaantesy
despusdepasarelcontrolalServlet

PreprocesadoresypostprocesadoresdeServlets

Transparenciayreutilizacindecdigo

Contenidodinmicoyesttico(HTML,imgenes)

Mtodosqueimponelainterfaz:

init():inicializacindelfiltro
destroy():destruccindelfiltro
doFilter(request,response,filterChain)

RaquelCEDAZOLEN
rcedazo@fi.upm.es

18

J2EE

Filtros.Ejemplo:VelocidadFilter(2/5)
EJEMPLO

MideeltiempodeejecucindelosServletsyloimprimeporla
salidaestndar
Recibeunparmetroqueindicalaunidadenlaquesequiere
medireltiempo.Enestecasopuedensersegundoso
milisegundos
Ficheros:

DAW
06/07

VelocidadFilter.java
web.xml

RaquelCEDAZOLEN
rcedazo@fi.upm.es

19

J2EE

Filtros.Ejemplo:VelocidadFilter(3/5)
VelocidadFilter.java
packagefilters;
importjava.io.IOException;
importjavax.servlet.Filter;
importjavax.servlet.FilterChain;
importjavax.servlet.FilterConfig;
importjavax.servlet.ServletException;
importjavax.servlet.ServletRequest;
importjavax.servlet.ServletResponse;
publicfinalclassVelocidadFilterimplementsFilter{
privateFilterConfigfilterConfig=null;
publicvoidinit(FilterConfigfilterConfig)throwsServletException{
this.filterConfig=filterConfig;
}

DAW
06/07

publicvoiddoFilter(ServletRequestrequest,ServletResponseresponse,
FilterChainchain)throwsIOException,ServletException{
RaquelCEDAZOLEN
rcedazo@fi.upm.es

20

J2EE

Filtros.Ejemplo:VelocidadFilter(4/5)
longstartTime=System.currentTimeMillis();
chain.doFilter(request,response);
longstopTime=System.currentTimeMillis();
Stringunidad=filterConfig.getInitParameter("unidad");
Doubletiempo;
if(unidad.equalsIgnoreCase("segundos")){
tiempo=newDouble(((double)(stopTimestartTime))/1000);
}else{
tiempo=newDouble(stopTimestartTime);
}

System.out.println("Tiempodeejecucindelservlet
["+((HttpServletRequest)request).getServletPath()+"]:
"+tiempo+""+unidad);

DAW
06/07

publicvoiddestroy(){
this.filterConfig=null;
}
}
RaquelCEDAZOLEN
rcedazo@fi.upm.es

21

J2EE

Filtros.Ejemplo:VelocidadFilter(5/5)
web.xml
<filter>
<filtername>VelocidadFilter</filtername>
<filterclass>filters.VelocidadFilter</filterclass>
<initparam>
<paramname>unidad</paramname>
<paramvalue>segundos</paramvalue>
<description>Unidadenlaquesemideeltiempo(milisegundoso
segundos)</description>
</initparam>
</filter>
<filtermapping>
<filtername>VelocidadFilter</filtername>
<urlpattern>/*</urlpattern>
</filtermapping>

DAW
06/07

RaquelCEDAZOLEN
rcedazo@fi.upm.es

22

J2EE

JSPs.Introduccin(1/7)

JavaServerPage:Servletorientadoagenerareltextodela
interfazgrfica
Ventajas:

CiclodevidadeunJSP:

Primeravez:apartirdelJSPelservidordeaplicacionescreaun
Servlet,locompilaylocargaenmemoria.

Encasocontrario:lepasalapeticinalServletyacompilado.
SisemodificaelJSPdesdelaltimacompilacin:segeneraunnuevo
Servlet,locompilaylovuelveacargarenmemoria

DAW
06/07

Usodeherramientasdediseodepginaswebdirectamente
Actualizacionesdelaspectogrficonoprovocanelrearranquedel
servidor

RaquelCEDAZOLEN
rcedazo@fi.upm.es

23

J2EE

JSPs.Sintaxis(2/7)

DAW
06/07

Variablesimplcitas:

request(HttpServletRequest)

response(HttpServletResponse)

out(PrintWriter)

session(HttpSession)

application(ServletContext)

config(ServletConfig)

pageContext(PageContext)

page(this)

RaquelCEDAZOLEN
rcedazo@fi.upm.es

24

J2EE

JSPs.Sintaxis(3/7)

Archivocompuestopor:

Contenidocliente(HTML,XMLyJavascript)

Comentario<%comentario%>

Scriptlet:cdigoservidorJava,escritoentre<%codigoJava%>

Expresin:insertavaloresJavadirectamenteenlasalida
<%=expresinJava%>

Declaracin:definemtodosocamposquesoninsertados
dentrodelaclaseServlet<%!codigoJava%>

Directiva:dostiposprincipalespageeinclude
<%@directivaatributo=valor%>
<%@pageimport=clase%><%@includefile=fichero%>

DAW
06/07

Tag:instruccinenformatoXMLasociadaaclasesJava
RaquelCEDAZOLEN
rcedazo@fi.upm.es

25

J2EE

JSPs.Sintaxis(4/7)

DAW
06/07

Acciones:construccionesXMLquecontrolanelcomportamiento
delmotordeServlets

<jsp:attributename=nombre>

<jsp:body>

<jsp:elementname=nombre>

<jsp:includepage=url>

<jsp:forwardpage=url>

<jsp:paramname=nombrevalue=valor>

<jsp:text>

<jsp:useBeanid=nombreclass=clase/>

<jsp:setPropertyname=idBeanproperty=propvalue=valor>

<jsp:getPropertyname=idBeanproperty=prop>
RaquelCEDAZOLEN
rcedazo@fi.upm.es

26

J2EE

JSP.Ejemplo:JSPTEST(5/7)
EJEMPLO

JSPquegeneraunHTMLutilizando:

Fichero:

DAW
06/07

Expresin:devuelveelnombredelequipo
Scriptlet:obtienelosdatosenviadosporelmtodoGET
Declaracin:variablequemideelnmerodeaccesosaesapgina
web
Directivapage:importalaclasejava.util.*
Directivainclude:incluyeelficherofoot.html
jspTest.jsp

RaquelCEDAZOLEN
rcedazo@fi.upm.es

27

J2EE

JSPs.Ejemplo:JSPTEST(6/7)
jspTest.jsp
<!DOCTYPEHTMLPUBLIC"//W3C//DTDHTML4.01Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

DAW
06/07

<head>
<title>EjemploJSP</title>
<metaname="GENERATOR"content="QuantaPlus">
<metahttpequiv="ContentType"content="text/html;charset=iso88591">
</head>
<body>
<ul>
<li><b>Expresi&oacute;n:</b><br/>
Tuequipo:<%=request.getRemoteHost()%>.
</li>
<li><b>Scriptlet:</b><br/>
<%Stringpeticion=request.getQueryString();
if(peticion!=null)
out.println("DatosGET:"+peticion);
else
out.println("NohaydatosGET");
%>
</li>

RaquelCEDAZOLEN
rcedazo@fi.upm.es

28

J2EE

JSPs.Ejemplo:JSPTEST(7/7)
<li><b>Declaraci&oacute;n:</b><br/>
<%!privateintaccessCount=0;%>
N&#186;deaccesosalap&aacute;ginadesdequearranc&oacute;el
servidor:<%=++accessCount%>
</li>
<li><b>Directiva"page":</b><br/>
<%@pageimport="java.util.*"%>
Fechaactual:<%=newDate()%>
</li>
<li><b>Directiva"include"fichero:</b><br/>
<%@includefile="foot.html"%>
</li>
</ul>
</body>
</html>

DAW
06/07

RaquelCEDAZOLEN
rcedazo@fi.upm.es

29

J2EE

CombinacindeServletsyJSPs.Ejemplo:HolaMundoServletJSP(1/3)
EJEMPLO

ImprimelacadenaHolaMundodesdeunJSPenunapginaweb

Ficheros:

HolaMundoServletJSP.java
holaMundo.jsp
header.jsp
footer.jsp

web.xml

DAW
06/07

RaquelCEDAZOLEN
rcedazo@fi.upm.es

30

J2EE

CombinacindeServletsyJSPs.Ejemplo:HolaMundoServletJSP(2/3)
HolaMundoServletJSP.java
packageservlets;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.*;
publicclassHolaMundoServletJSPextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponse
response)
throwsServletException,IOException{
Stringmessage="HolaMundodesdeunJSP";
request.setAttribute("message",message);
request.getRequestDispatcher("holaMundo.jsp").forward(request,
response);
}
}

DAW
06/07

RaquelCEDAZOLEN
rcedazo@fi.upm.es

31

J2EE

CombinacindeServletsyJSPs.Ejemplo:HolaMundoServletJSP(3/3)
holaMundo.jsp
<jsp:includepage="/WEBINF/jspf/header.jsp">
<jsp:paramname="title"value="Holamundo"/>
</jsp:include>
<strong><%=request.getAttribute("message")%></strong>

<jsp:includepage="/WEBINF/jspf/footer.jsp"/>

header.jsp
<html>
<head>
<title><%=request.getParameter("title")%></title>
</head>
<body>

footer.jsp

DAW
06/07

</body>
</html>

RaquelCEDAZOLEN
rcedazo@fi.upm.es

32

J2EE

TagLib.Introduccin(1/7)

Sonlibrerasdeetiquetasquepermitencrearetiquetas
personalizadasparaincluirenlosJSPs
PermitenminimizarcdigoJavaenJSPs
JSTL(JavaStandardTemplateLibrary):Bibliotecaqueimplementa
funcionesdeusofrecuenteenaplicacionesJSP.Incluye:

DAW
06/07

Funcionescomunesdeiteracinsobredatos,operaciones
condicionales,eimportacindeotraspginas
Internacionalizacinyformateodetexto
Funcionesdemanipulacindecadenas
ProcesamientodeXML
Accesoabasesdedatos(NORECOMENDADO)
Unlenguajedeexpresinparareferenciarobjetosysuspropiedades
sinnecesidaddecdigoJava
RaquelCEDAZOLEN
rcedazo@fi.upm.es

33

J2EE

TagLib.Ejemplo:MostrarEmailyPonerMayusculas(2/7)
EJEMPLO

Servletquerecogelosdatosdeunusuariointroducidosenun
formularioyredirigeaunJSPqueutilizatresTagLibs:

Ficheros:

DAW
06/07

muestraEmail:sustituyeelcarcter@deunemailporlacadenaat
ponMayusculas:poneenmaysculaselatributodeunusuario
horaSistema:imprimelahoradelsistema

index.html
ProcesarUsuario.java
respuestaUsuario.jsp
MostrarEmail.java
daw.tld
web.xml

RaquelCEDAZOLEN
rcedazo@fi.upm.es

34

J2EE

TagLib.Ejemplo:MostrarEmailyPonerMayusculas(3/7)
ProcesarUsuario.java
packageservlets;
importjava.io.IOException;
importjavax.servlet.ServletException;
importjavax.servlet.http.*;
importbeans.Usuario;
publicclassProcesarUsuarioextendsHttpServlet{

DAW
06/07

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponse
response)
throwsServletException,IOException{
Usuariousuario=newUsuario();
usuario.setEmail(request.getParameter("email"));
usuario.setNombre(request.getParameter("nombre"));
usuario.setApellidos(request.getParameter("apellidos"));
request.setAttribute("usuario",usuario);

request.getRequestDispatcher("respuestaUsuario.jsp").
forward(request,response);
}
}

RaquelCEDAZOLEN
rcedazo@fi.upm.es

35

J2EE

TagLibs.Ejemplo:MostrarEmailyPonerMayusculas(4/7)
respuestaUsuario.jsp
<%@taglibprefix="daw"uri="daw"%>
<%@pageimport="beans.Usuario"%>

DAW
06/07

<html>
<head><title>Ejemplodeusodebeans</title></head>
<body>
<jsp:useBeanid="usuario"class="beans.Usuario"
scope="request"></jsp:useBean>
Haintroducidolossiguientesdatos:
<br>
Email:
<strong><daw:muestraEmailvalor="<%=usuario.getEmail()%>"/></strong>
<br>
Nombre:
<strong><daw:ponMayusculasnombre="usuario"propiedad="nombre"/></strong>
<br>
Apellidos:
<strong><daw:ponMayusculasnombre="usuario"
propiedad="apellidos"/></strong>
<br>
Horadelsistema:<strong><daw:horaSistema/></strong>
</body>
</html>

RaquelCEDAZOLEN
rcedazo@fi.upm.es

36

J2EE

TagLibs.Ejemplo:MostrarEmailyPonerMayusculas(5/7)
MostrarEmail.java
packagetaglibs;
importjava.io.IOException;
importjavax.servlet.jsp.JspException;
importjavax.servlet.jsp.tagext.TagSupport;
publicclassMostrarEmailextendsTagSupport{
privateStringvalor;

DAW
06/07

publicintdoStartTag()throwsJspException{
try{
pageContext.getOut().println(valor.replace("@","at"));
}catch(IOExceptione){
e.printStackTrace();
}
returnSKIP_BODY;
}
publicvoidsetValor(Stringvalor){
this.valor=valor;
}
}

RaquelCEDAZOLEN
rcedazo@fi.upm.es

37

J2EE

TagLibs.Ejemplo:MostrarEmailyPonerMayusculas(6/7)
daw.tld

DAW
06/07

<?xmlversion="1.0"encoding="ISO88591"?>
<!DOCTYPEtaglibPUBLIC"//SunMicrosystems,Inc.//DTDJSPTagLibrary
1.1//EN"
"http://java.sun.com/j2ee/dtds/webjsptaglibrary_1_1.dtd">
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>daw</shortname>
<uri>/WEBINF/tlds/daw.tld</uri>
<info>MyfirstTaglibrary</info>
<tag>
<name>muestraEmail</name>
<tagclass>taglibs.MostrarEmail</tagclass>
<info>Muestraelemailsustituyendo@porat</info>
<attribute>
<name>valor</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>

RaquelCEDAZOLEN
rcedazo@fi.upm.es

38

J2EE

TagLibs.Ejemplo:MostrarEmailyPonerMayusculas(7/7)
web.xml
<taglib>
<tagliburi>daw</tagliburi>
<tagliblocation>/WEBINF/daw.tld</tagliblocation>
</taglib>

DAW
06/07

RaquelCEDAZOLEN
rcedazo@fi.upm.es

39

J2EE

JDBC.Introduccin(1/8)

APIquepermitehacerconsultasaunabasededatosrelacional
EsunaESPECIFICACIN,losdriverslosproporcionanlos
diferentesfabricantesdebasesdedatos
UndriveresunJAR(JavaArchive)conlaimplementacindelos
interfacesdelAPIdeJDBC
LoidealesquesisecambiadeBBDD,nosenecesitecambiarel
cdigo.

DAW
06/07

Inconveniente:SeusadiferentesintaxisSQL
Existenpatronespararesolveresteproblema

RaquelCEDAZOLEN
rcedazo@fi.upm.es

40

J2EE

JDBC.EjemploMostrarusuariosdeunaBBDD(2/8)
EJEMPLO

Obtienelosdatosdelosusuariosquehayenlatablausuariosde
labasededatosdaw0607yseimprimenenunJSP.
Ficheros:

DatabaseManager.java

UsuarioDAO.java
MostrarUsuariosJDBC.java
listarUsuarios.jsp

ConectorMySQL:

DAW
06/07

mysqlconnectorjava5.0.4bin.jar

RaquelCEDAZOLEN
rcedazo@fi.upm.es

41

J2EE

JDBC.EjemploMostrarusuariosdeunaBBDD(3/8)
DatabaseManager.java
packagedb;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
publicclassDatabaseManager{
privatestaticStringCONEXION="jdbc:mysql://localhost/daw0607";
privatestaticStringUSER="rcedazo";
privatestaticStringPASSWORD="mypassword";
privatestaticDatabaseManagerinstance;

DAW
06/07

privateDatabaseManager(){
try{
Class.forName("com.mysql.jdbc.Driver");
}catch(java.lang.ClassNotFoundExceptione1){
System.err.println(e1.getMessage());
}
}
RaquelCEDAZOLEN
rcedazo@fi.upm.es

42

J2EE

JDBC.EjemploMostrarusuariosdeunaBBDD(4/8)
publicstaticDatabaseManagergetInstance(){
if(instance==null){
instance=newDatabaseManager();
}
returninstance;
}
publicConnectiongetConnection()throwsSQLException{
returnDriverManager.getConnection(CONEXION,USER,PASSWORD);
}
}

DAW
06/07

RaquelCEDAZOLEN
rcedazo@fi.upm.es

43

J2EE

JDBC.EjemploMostrarusuariosdeunaBBDD(5/8)
UsuarioDAO.java
packagedao;
importjava.sql.*;
importjava.util.*;
importbeans.Usuario;
importdb.DatabaseManager;
publicclassUsuarioDAO{
publicUsuarioDAO(){
}

DAW
06/07

publicCollectiongetUsuarios(){
Statementst=null;
ResultSetrs=null;
Connectionconnection=null;
try{
connection=DatabaseManager.getInstance().getConnection();
st=connection.createStatement();
rs=st.executeQuery("SELECT*FROMusuarios");
Collectionresultado=newArrayList();
Usuariousuario;
RaquelCEDAZOLEN
rcedazo@fi.upm.es

44

J2EE

JDBC.EjemploMostrarusuariosdeunaBBDD(6/8)

DAW
06/07

while(rs.next()){
usuario=newUsuario();
usuario.setEmail(rs.getString("EMAIL"));
usuario.setNombre(rs.getString("NOMBRE"));
usuario.setApellidos(rs.getString("APELLIDOS"));
resultado.add(usuario);
}
returnresultado;
}catch(SQLExceptione){
System.err.println(e.getMessage());
returnnull;
}finally{
try{
if(rs!=null)
rs.close();
if(st!=null)
st.close();
if(connection!=null)
connection.close();
}catch(Exceptione){
}
}
}
}

RaquelCEDAZOLEN
rcedazo@fi.upm.es

45

J2EE

JDBC.EjemploMostrarusuariosdeunaBBDD(7/8)
MostrarUsuariosJDBC.java
publicclassMostrarUsuariosJDBCextendsHttpServlet{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponse
response)
throwsServletException,IOException{
Collectionusuarios=newUsuarioDAO().getUsuarios();
request.setAttribute("usuarios",usuarios);
request.getRequestDispatcher("listarUsuarios.jsp").forward(request,
response);
}
}

listarUsuarios.jsp
<%@pageimport="java.util.*"%>
<%@pageimport="beans.Usuario"%>

DAW
06/07

<html>
<head>
<title>Ejemplodeusodebeans</title>
</head>
<body>
<tableborder="1"cellpadding="5"cellspacing="0">
RaquelCEDAZOLEN
rcedazo@fi.upm.es

46

J2EE

JDBC.EjemploMostrarusuariosdeunaBBDD(8/8)

DAW
06/07

<thead>
<th>Email</td>
<th>Nombre</td>
<th>Apellidos</td>
</thead>
<tbody>
<%
Collectionusuarios=(Collection)request.getAttribute("usuarios");
Iteratorit=usuarios.iterator();
while(it.hasNext()){
Usuariousuario=(Usuario)it.next();
%>
<tr>
<td><%=usuario.getEmail()%></td>
<td><%=usuario.getNombre()%></td>
<td><%=usuario.getApellidos()%></td>
</tr>
<%
}
%>
</tbody>
</table>
</body>
</html>

RaquelCEDAZOLEN
rcedazo@fi.upm.es

47

J2EE

ANT.Introduccin(1/4)

ProyectodeApache:http://ant.apache.org
Herramientausadaparalarealizacindetareasautomticasy
repetitivas(compilacin,construccin)

DeltipoMake,perosindependenciasdelsistemaoperativo

EscritaenJAVA

Muyportable:utilizaficherosXML

DAW
06/07

Cadaficherocontieneunproyecto
Cadaproyectocontieneunoomstargets(tareasqueseejecutan
secuencialmente)
Sepuedenestablecerdependenciasentretargets
Sepuedendefinirpropiedades

RaquelCEDAZOLEN
rcedazo@fi.upm.es

48

J2EE

ANT.Ejemplo:build.xml(2/4)
EJEMPLO

Archivobuild.xmlparagenerarautomticamenteelWAR(Web
Archive)delaaplicacindeejemplosdeJ2EE
Tareas:

clean

compile
generateWar

DAW
06/07

RaquelCEDAZOLEN
rcedazo@fi.upm.es

49

J2EE

ANT.Ejemplo:build.xml(3/4)
build.xml
<?xmlversion="1.0"?>
<projectname="DAW0607"default="generateWar"basedir="..">
<description>
GeneracinautomticadelWAR
</description>

<propertyname="srcDir"value="${basedir}/src"/>
<propertyname="libDir"value="${basedir}/lib"/>
<propertyname="buildDir"value="${basedir}/build"/>
<propertyname="webDir"value="${basedir}/web"/>
<propertyname="warFile"value="${buildDir}/DAW0607.war"/>
<propertyname="binDir"value="${buildDir}/bin"/>

DAW
06/07

<pathid="compileLibs">
<filesetdir="${libDir}">
<includename="**/*.jar"/>
</fileset>
</path>

RaquelCEDAZOLEN
rcedazo@fi.upm.es

50

J2EE

ANT.Ejemplo:build.xml(4/4)
<targetname="clean">
<deletedir="${binDir}"includeemptydirs="true"/>
<deletefile="${warFile}"/>
</target>
<targetname="compile"depends="clean">
<mkdirdir="${binDir}"/>
<javacsrcdir="${srcDir}"destdir="${binDir}"
classpathref="compileLibs">
</javac>
</target>

DAW
06/07

<targetname="generateWar"depends="compile">
<wardestfile="${warFile}"webxml="${webDir}/WEBINF/web.xml"
basedir="${webDir}">
<excludename="WEBINF/web.xml"/>
<excludename="WEBINF/classes/"/>
<excludename="WEBINF/lib/"/>
<classesdir="${binDir}"></classes>
<libdir="${webDir}/WEBINF/lib"></lib>
</war>
</target>
</project>

RaquelCEDAZOLEN
rcedazo@fi.upm.es

51

J2EE

EasyEclipse

DAW
06/07

DistribucionesdeEclipseconlafuncionalidadnecesariaparatener
unentornodedesarrolloespecfico,sinnecesidaddedescargar
softwareadicional(plugins,libreras...)
EasyEclipseServerJava:aplicacionesJavadelladodelservidor,
talescomoJSPs,EJBsyWebServices.
EasyEclipseMobileJava:aplicacionesJavaparadispositivoscon
J2ME.
EasyEclipseforPHP:desarrollarPHPconunabasededatos.
EasyEclipseDesktopJava:paradesarrollarinterfacesgrficas
conSwingoSWT.
Ymsen:http://www.easyeclipse.org
RaquelCEDAZOLEN
rcedazo@fi.upm.es

52

J2EE

Referencias

TutorialesJavaEE:
http://java.sun.com/javaee/reference/tutorials

Eclipseplugins:
http://eclipseplugins.2y.net/

ANTApache:
http://ant.apache.org[Manual:http://ant.apache.org/manual/]

EasyEclipse:
http://www.easyeclipse.org

TheEssentialsofFilters:
http://java.sun.com/products/servlet/Filters.html

DAW
06/07

ManualdeJTSL:
http://www.1x4x9.info/files/jstl/html/onlinechunked/
RaquelCEDAZOLEN
rcedazo@fi.upm.es

53

J2EE

Java2EnterpriseEdition

Servlets
Java
JSPs
JSP
DAW
06/07

JDBC

Copyright 2006 Raquel CEDAZO LEN


RaquelCEDAZOLEN
rcedazo@fi.upm.es

54

También podría gustarte