Servlets, JSP, JavaBEANS,JDBC - PowerPoint PPT Presentation

About This Presentation
Title:

Servlets, JSP, JavaBEANS,JDBC

Description:

JavaServer (TM) Web Development Kit (JSWDK) 1.0.1. JDK Est ndar ... rd.forward(request,response); % /div /body /html Alberto Gimeno Arnal. JSP. 35 ... – PowerPoint PPT presentation

Number of Views:92
Avg rating:3.0/5.0
Slides: 69
Provided by: albe295
Category:
Tags: jdbc | jsp | javabeans | fwd | servlets

less

Transcript and Presenter's Notes

Title: Servlets, JSP, JavaBEANS,JDBC


1
Servlets, JSP, JavaBEANS,JDBC
  • Alberto Gimeno Arnal
  • alberto.gimeno_at_gmail.com

Área de Lenguajes y Sistemas Informáticos Dpto.
de Informática e Ingeniería de Sistemas Universida
d de Zaragoza
2
Configuración PC
  • JavaServer (TM) Web Development Kit (JSWDK) 1.0.1
  • JDK Estándar Enviroment (J2SE) netBeans
  • PATHD\Univ\JAVA\jswdk-1.0.1\
    D\Univ\JAVA\jdk1.6.0\
  • CLASSPATH. D\Univ\JAVA\jdk1.6.0\lib\tools.jar
    D\Univ\JAVA\jswdk-1.0.1\lib\servlet.jar

Alberto Gimeno Arnal
2
3
Configuración PC
  • Los servlets tienen que guardarse en la ruta
  • \WEB-INF\servlets y podemos acceder a ellos a
    través de http//localhost8080/examples/servlet/N
    ombreServlet
  • Las paginas JSP, jBeans en
  • \jswdk-1.0.1\webpages

Alberto Gimeno Arnal
3
4
SERVLET Qué se puede hacer?.
  1. LEER información enviada por el usuario
    formularios HTML o applets.
  2. BUSCAR información en el cliente navegador,
    cookies, sesiones.
  3. GENERAR resultados, a través de bbdd, JavaBeans.
  4. FORMATEAR los resultados de un documento pagina
    HTML.
  5. ASIGNAR parámetros a la respuesta al cliente
    navegador, cookies , sesiones,.
  6. ENVIAR información al cliente formato HTML, ZIP
    o GIF.

Alberto Gimeno Arnal
servlets
4
5
SERVLET Estructura básica
  • import java.io.
  • import javax.servlet.
  • import javax.servlet.http.
  • public class ServletHolaFigura extends
    HttpServlet
  • public void doGet (HttpServletRequest request,
    ServletResponse response) throws IOException,
    ServletException
  • public void doPost (HttpServletRequest request,
    ServletResponse response) throws IOException,
    ServletException

Alberto Gimeno Arnal
servlets
5
6
SERVLET javax.servlet
Interfaces Interfaces
RequestDispacher Define un objeto que recibe peticiones desde un cliente y se las envia a otro (servlet, pagina HTML, jsp)
Servlet Define una serie de métodos que todos los servlets deben implementar
ServletConfig Objeto de configuración usado por el motor de servlets
ServletContext Define una serie de métodos para la comunicación entre servlets.
ServletRequest Objeto que ofrece información de la petición del cliente al servlet.
ServletResponse Objeto que permite al servlet enviar información al cliente.
SingleThreadModel Nos asegura que los servlets tratan una sola petición al mismo tiempo.
Alberto Gimeno Arnal
servlets
6
7
SERVLET javax.servlet
Clases Clases Clases
GenericServlet Define servlet genérico independiente del protocolo Define servlet genérico independiente del protocolo
ServletInputStream Canal de lectura de datos procedentes de la petición del cliente. Canal de lectura de datos procedentes de la petición del cliente.
ServletOutputStream Canal de salida para enviar datos al cliente. Canal de salida para enviar datos al cliente.
Excepciones Excepciones Excepciones
ServletException ServletException Excepción general que podrá lanzar cualquier servlets.
UnavailableException UnavailableException Excepción de disponibilidad.
Alberto Gimeno Arnal
servlets
7
8
SERVLET javax.servlet.http
Interfaces Interfaces
HttpServletRequest Hereda del interfaz ServletRequest, especificar peticiones realizadas a selvlet y recupera el contenido de los formularios HTML.
HttpServletResponse Hereda del interfaz ServletReponse, establece funcionalidad al envio respuestas al cliente
HttpSession Identificación y almacenamiento de información de cada usuario concreto.
HttpSessionBinding Listener Notificación de creación y destrucción de la sesión.
Alberto Gimeno Arnal
servlets
8
9
SERVLET javax.servlet.http
Clases Clases
Cookie Información del cliente enviada por un servlet al navegador, almacenada por el navegador y que posteriormente el navegador enviara al servidor Web.
HttpServlet Clase abstracta de un servlet.
HttpSessionBinding Event Evento que se envia para notificar la creación o destrucción de una sesión.
HttpUtils Colección de métodos con utilidades para los servlets.
Alberto Gimeno Arnal
servlets
9
10
SERVLET Estructura básica
  • import java.io.
  • import javax.servlet.
  • import javax.servlet.http.
  • public class ServletHolaFigura extends
    HttpServlet
  • public void doGet (HttpServletRequest request,
    ServletResponse response) throws IOException,
    ServletException
  • public void doPost (HttpServletRequest request,
    ServletResponse response) throws IOException,
    ServletException

Alberto Gimeno Arnal
servlets
10
11
SERVLET Conceptos básicos
  • Importar los paquetes javax.servlet,
    javax.servlet.http, java.io
  • Heredar la clase abstracta HttpServlet.
  • Implementar los métodos doGet() y doPost()
  • La clase se debe situar en un directorio
    especifico del servidor Web Tomcat.
  • Invocarlo http//servidor/aplicacion/servlet/Clas
    eServlet.

Alberto Gimeno Arnal
servlets
11
12
SERVLET métodos HttpServlet
  • void doDelete (HttpServletResquest req,
    HttpServletResponse res)
  • void doGet (HttpServletResquest req,
    HttpServletResponse res)
  • void doOptions (HttpServletResquest req,
    HttpServletResponse res)
  • void doPost (HttpServletResquest req,
    HttpServletResponse res)
  • void doPut (HttpServletResquest req,
    HttpServletResponse res)
  • void doTrace (HttpServletResquest req,
    HttpServletResponse res)
  • void getLastModified (HttpServletResquest req)
  • void service (HttpServletResquest req,
    HttpServletResponse res)

Alberto Gimeno Arnal
servlets
12
13
SERVLET clase GenericServlet
  • void destroy()
  • String getInitParameter(String nombre)
  • Enumeration getInitParameterNames()
  • ServletConfig getServletConfig()
  • ServletContext getServletContext()
  • String getServletInfo()
  • String getServletName()
  • void init()
  • void long(String mensaje)
  • void service (HttpServletResquest req,
    HttpServletResponse res)

Alberto Gimeno Arnal
servlets
13
14
SERVLET Ejemplo 1 (HolaFigura.class)
  • public class HolaFigura extends HttpServlet
  • public void doGet(HttpServletRequest rq,
    HttpServletResponse rp)
  • throws IOException, ServletException
  • rp.setContentType("text/html")
  • PrintWriter out rp.getWriter()
  • out.println("lthtmlgtltheadgtlttitlegtHola
    Figura!lt/titlegtlt/headgt")
  • out.println("ltbodygt")
  • out.println("ltmarqueegtlth1gtHola
    Figura!lt/h1gtlt/marqueegt")
  • out.println("lt/bodygtlt/htmlgt")
  • public void doPost(HttpServletRequest rq,
    HttpServletResponse rp)
  • throws IOException, ServletException
    doGet(rq,rp)

Alberto Gimeno Arnal
servlets
14
15
SERVLET Ejemplo 2 (FolderRoot.class)
  • public class FolderRoot extends HttpServlet
  • public void doGet(HttpServletRequest rq,
    HttpServletResponse rp)
  • throws IOException, ServletException
  • rp.setContentType("text/html")
  • PrintWriter out rp.getWriter()
  • File fichero new File("D/")
  • String contenido fichero.list()
  • out.println("lthtmlgtltheadgtlttitlegtListado
    de Ficheroslt/titlegtlt/headgt")
  • out.println("ltbodygtlttable border1
    aligncentergt")
  • for(int i0iltcontenido.lengthi)
    out.println("lttrgtlttdgt contenidoi
    "lt/tdgtlt/trgt")
  • out.println(lt/tablegtlt/bodygtlt/htmlgt")
  • public void doPost(HttpServletRequest rq,
    HttpServletResponse rp)
  • throws IOException, ServletException
    doGet(rq,rp)

Alberto Gimeno Arnal
servlets
15
16
SERVLET Ejemplo 3 (formulario.html)
  • ltbody align"center" width"700"gt
  • ltfieldsetgtltlegendgtltfont size3gtINFORMACION
    PERSONALlt/fontgtlt/legendgt
  • ltform action"http//localhost8080/examples/serv
    let/datos" method"POST" enctype"application/x-ww
    w-form-urlencoded" gt
  • ltfieldsetgtltlegendgtltBgtDATOS PERSONALESlt/Bgtlt/lege
    ndgt
  • ltlabelgtNOMBRE lt/labelgtltinput name"nombre"
    maxlength20 size20gt
  • ltlabelgtAPELLIDOS lt/labelgtltinput name"apell"
    maxlength32 size32gtltbrgt
  • ltlabelgtDIRECCIÓN lt/labelgtltinput
    name"direccion" maxlength70 size70gtltbrgt
  • ltlabelgtC.P. lt/labelgtltinput name"cp" size5
    maxlength5gt
  • ltlabelgt LOCALIDAD lt/labelgtltinput
    name"localidad" maxlength17 size17gt
  • ltlabelgt PROVINCIA lt/labelgtltinput
    name"provincia" maxlength17 size17gt
  • lt/fieldsetgt
  • ltinput typereset value"BORRAR"gtltinput
    typesubmit value"VALIDAR"gt
  • lt/formgt
  • lt/fieldsetgt
  • lt/bodygt

Alberto Gimeno Arnal
servlets
16
17
SERVLET Ejemplo 3 (datos.class)
  • public class datos extends HttpServlet
  • public void doGet(HttpServletRequest rq,
    HttpServletResponse rp)
  • throws IOException, ServletException
  • rp.setContentType("text/html")
  • PrintWriter out rp.getWriter()
  • out.println("lthtmlgtltheadgtlttitlegtDatos
    Personaleslt/titlegtlt/headgt")
  • out.println("ltbodygtlttable border1
    aligncenter")
  • out.println("lttrgtlttd rowspan2gtlth3gtDATOS
    PERSONALESlt/h3gtlt/tdgtlt/trgt")
  • out.println("lttrgtlttdgtNOMBRElt/tdgtlttdgt
    rq.getParameter("nombre"))
  • out.println("lt/tdgtlt/trgtlttrgtlttdgtAPELLIDOSlt/tdgtlttd
    gt rq.getParameter(apell"))
  • out.println("lt/tdgtlt/trgtlttrgtlttdgtDIRECCIONlt/tdgtlttd
    gt")
  • out.println(rq.getParameter("cp") " "
    rq.getParameter("localidad") " ("
    rq.getParameter("provincia") ")")
  • out.println(lt/tablegtlt/bodygtlt/htmlgt")
  • public void doPost(HttpServletRequest rq,
    HttpServletResponse rp)
  • throws IOException, ServletException
    doGet(rq,rp)

Alberto Gimeno Arnal
servlets
17
18
SERVLET Ejemplo 4 (chat)
chat.html
chatEnvia.html
chatVer.html
ChatInserta
ChatConv
ChatConversacion
Alberto Gimeno Arnal
servlets
18
19
SERVLET Ejemplo 4 (chat.html)
  • lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
    Frameset//EN"gt
  • lthtmlgt
  • ltheadgt
  • lttitlegtCHATlt/titlegt
  • lt/headgt
  • ltframeset rows",100"gt
  • ltframe src"chatVer.html NORESIZEgt
  • ltframe src"chatEnvia.htmlNORESIZE gt
  • lt/framesetgt
  • lt/htmlgt

Alberto Gimeno Arnal
servlets
19
20
SERVLET Ejemplo 4 (chatEnvia.html)
  • lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
    Transitional//EN"gt
  • lthtmlgt
  • ltheadgt
  • lttitlegtlt/titlegt
  • lt/headgt
  • ltbodygt
  • ltform action"http//localhost8080/examples
    /servlet/ChatInserta" method"post"gt
  • ltinput type"text" name"nick"
    size"10"gt
  • ltinput type"text" name"mensaje"
    size"70"gt
  • ltinput type"submit" value"ENVIAR"gt
  • lt/formgt
  • lt/bodygt
  • lt/htmlgt

Alberto Gimeno Arnal
servlets
20
21
SERVLET Ejemplo 4 (chatVer.html)
  • lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
    Transitional//EN"gt
  • lthtmlgt
  • ltheadgtlttitlegtlt/titlegt
  • ltmeta http-equiv"refresh" content"5urlhttp
    //localhost8080/examples/servlet/ChatConv"gt
  • lt/headgt
  • ltbodygt
  • lt/bodygt
  • lt/htmlgt

Alberto Gimeno Arnal
servlets
21
22
SERVLET Ejemplo 4 (ChatInserta.class)
  • public class ChatInserta extends HttpServlet
  • public synchronized void doGet(HttpServletRequ
    est rq HttpServletResponse rp)
  • throws ServletException, IOException
  • ChatConversacion.InsertaMensaje(rq.getParam
    eter("nick") " " rq.getParameter("mensaje"))
  • rp.setContentType("text/html")
  • PrintWriter out rp.getWriter()
  • out.println("lthtmlgtltbodygtltform
    action'http//localhost8080/examples/servlet/Cha
    tInserta' method'post'gtlt/headgtltbodygt")
  • out.println("ltlabelgtNICK lt/labelgtltinput
    type'text' name'nick' size10gt")
  • out.println("ltlabelgtMENSAJE
    lt/labelgtltinput type'text' name'mensaje'
    size70gt")
  • out.println("ltinput type'submit'
    value'ENVIAR'gtlt/formgtlt/bodygtlt/htmlgt")
  • public synchronized void doPost(HttpServletReq
    uest rq HttpServletResponse rp)
  • throws ServletException, IOException
    doGet(rq,rp)

Alberto Gimeno Arnal
servlets
22
23
SERVLET Ejemplo 4 (ChatConversacion.class)
  • public class ChatConversacion
  • private static final int NUM_LINEAS10
  • private static String Conv new
    StringNUM_LINEAS
  • public synchronized static void
    InsertaMensaje(String mensaje)
  • for(int iNUM_LINEAS-2igt0i--)
    Convi1 Convi
  • Conv0mensaje
  • public synchronized static String
    DameConv()
  • return Conv

Alberto Gimeno Arnal
servlets
23
24
SERVLET Ejemplo 5 (CreaCookie.class)
  • public class CreaCookie extends HttpServlet
  • public void doGet(HttpServletRequest rq,
    HttpServletResponse rp)
  • throws ServletException, IOException
  • Cookie galleta new Cookie("nick","alb")
  • galleta.setMaxAge(600)
  • galleta.setComment("Galleta de prueba")
  • galleta.setSecure(false)
  • rp.addCookie(galleta)
  • rp.setContentType("text/html")
  • PrintWriter out rp.getWriter()
  • out.println("lthtmlgtltheadgtlttitlegtGalleta
    calientelt/titlegtlt/headgtltbodygtlth2gtGALLETA
    CREADAlt/H2gtlt/bodygtlt/htmlgt")

Alberto Gimeno Arnal
servlets
24
25
SERVLET Ejemplo 5 (VerCookie.class)
  • public class VerCookie extends HttpServlet
  • public void doGet(HttpServletRequest rq,
    HttpServletResponse rp)
  • throws ServletException, IOException
  • rp.setContentType("text/html")
  • PrintWriter out rp.getWriter()
  • // Mostramos galletas
  • Cookie galleta rq.getCookies()
  • for (int i 0 i lt galleta.length i)
  • Cookie c galletai
  • String name c.getName()
  • String value c.getValue()
  • out.println(name " " value)

Alberto Gimeno Arnal
servlets
25
26
SERVLET Ejemplo 6 (eSesion.class)
  • public class eSesion extends HttpServlet
  • public void doGet(HttpServletRequest rq,
    HttpServletResponse rp)
  • throws ServletException, IOException
  • HttpSession sess rq.getSession(true)
  • sess.setAttribute("nick",new
    String("alumno"))
  • sess.setAttribute("code",new
    String("123456"))
  • sess.setAttribute("fecha",new Date())
  • rp.setContentType("text/html")
  • PrintWriter out rp.getWriter()
  • out.println("lthtmlgtltheadgtlttitlegtSesionlt/titlegtlt/h
    eadgtltbodygt lth2gtServlet que crea una
    sesiónlt/H2gtlt/bodygtlt/htmlgt")

Alberto Gimeno Arnal
servlets
26
27
SERVLET Ejemplo 6 (eSesion1.class)
  • public class eSesion1 extends HttpServlet
  • public void doGet(HttpServletRequest rq,
    HttpServletResponse rp)
  • throws ServletException, IOException
  • HttpSession sess rq.getSession(true)
  • if(sess.isNew()) rp.sendRedirect("/example
    s/servlet/eSesion")
  • rp.setContentType("text/html")
  • PrintWriter out rp.getWriter()
  • out.println("lthtmlgtltheadgtlttitlegtSesionlt/ti
    tlegtlt/headgt ltbodygtlth2gtVisor de la Sesión lt/H2gt")
  • out.println("lttable border1
    align'center'gtlttrgt ltthgtAtributolt/thgtltthgtValorlt/th
    gtlt/trgt")
  • Enumeration att sess.getAttributeNames()
  • while (att.hasMoreElements())
  • String nAtt (String)
    att.nextElement()
  • out.println("lttrgtlttdgt" nAtt
    "lt/tdgtlttdgt" sess.getAttribute(nAtt)
    "lt/tdgtlt/trgt")
  • out.println("lt/bodygtlt/htmlgt")

Alberto Gimeno Arnal
servlets
27
28
SERVLET Ejemplo 7 (eApp.class)
  • public class eApp extends HttpServlet
  • public void doGet(HttpServletRequest rq,
    HttpServletResponse rp) throws ServletException,
    IOException
  • rp.setContentType("text/html")
  • PrintWriter out rp.getWriter()
  • ServletContext app getServletContext()
  • out.println("lthtmlgtltheadgtlttitlegtAplicacion
    lt/titlegtlt/headgtltbodygt")
  • synchronized(app)
  • String nApp (String)app.getAttribute
    ("nombreAplicacion")
  • Integer visitas (Integer)app.getAttr
    ibute("accesos")
  • if(nApp!null)
  • out.println("El objeto aplicación
    ya existe y su valor es ltbgt" nApp
    "lt/bgtltbr/gt")
  • app.setAttribute("accesos",new
    Integer(visitas.intValue()1))
  • else
  • app.setAttribute("nombreAplicacion
    ",new String("AppServlet"))
  • app.setAttribute("accesos",new
    Integer(1))
  • out.println("Se ha creado el
    objeto aplicación")
  • out.println("Nº de visitas ltbgt"
    app.getAttribute("accesos") "lt/bgt")
  • out.println("lt/bodygtlt/htmlgt")

Alberto Gimeno Arnal
servlets
28
29
JSP Elementos
  • Directivas
  • lt_at_nombreDirectiva atributo1valor1 ..........
    atributonvalorn gt
  • Page ? info, language, import, extends,
    contentType, session, buffer, autoFlush,
    errorPage, isErrorPage
  • Include ? file
  • Elementos scripting declaraciones lt! gt,
    scriptlets lt gt, expresiones lt gt,
    comentarios lt-- --gt,
  • Acciones ltjspacciongt
  • Objetos implícitos o integrados (similares a los
    servlets)

Alberto Gimeno Arnal
JSP
29
30
JSP Estructura
  • lt_at_page contentType"text/html"gt
  • lt_at_page pageEncoding"UTF-8"gt
  • lt_at_page language"Java"gt
  • lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
    Transitional//EN"
  • "http//www.w3.org/TR/html4/loose.dtd"gt
  • lthtmlgt
  • ltheadgt
  • ltmeta http-equiv"Content-Type"
    content"text/html charsetUTF-8"gt
  • lttitlegtJSP Pagelt/titlegt
  • lt/headgt
  • ltbody gt
  • lt--Esto es un comentario --gt
  • ltdiv aligncentergt
  • ltbgtlt out.println("HOLA FIGURA!")gt
  • lt/divgt
  • lt/bodygt
  • lt/htmlgt

Alberto Gimeno Arnal
JSP
30
31
JSP javax.servlet.jsp
Interfaces Interfaces
HttpJspPage Interfaz de una clase generada por el procesador de páginas JSP, usando el protocolo http. Método ? _jspService() (auto)
JspPage Interfaz padre de HttpJspPage. Métodos ? jspInit(), jspDestroy()
Clases Clases
JspEngineInfo Clase abstracta que ofrece información relativa al contenedor de páginas JSP.
JspFactory Define, en tiempo de ejecución, una serie de métodos para crear instancias de varios interfaces.
JspWriter Nos permite enviar contenido a la respuesta del cliente
PageContext Ofrece acceso a todos los contenidos asociados con una página JSP..
Alberto Gimeno Arnal
JSP
31
32
JSP javax.servlet.jsp
Excepciones Excepciones
JspException Excepción genérica que será lanzada por el contenedor de páginas JSP.
JspTagException Excepción lanzada por el gestor de etiquetas personalizadas.
Alberto Gimeno Arnal
JSP
32
33
JSP Objetos integrados
Objeto Clase o interfaz
page java.lang.Object
config javax.servlet.ServletConfig
request javax.servlet.http.HttpServletRequest
response javax.servlet.http.HttpResponse
out javax.servlet.jsp.JspWriter
application javax.servlet.ServletContext
pageContext javax.servlet.jsp.PageContext
exception java.lang.Throwable
session javax.servlet.http.HttpSession
Alberto Gimeno Arnal
JSP
33
34
JSP request
  • lt_at_page import"java.util."gt
  • lt_at_page language"Java"gt
  • lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
    Transitional//EN"
  • "http//www.w3.org/TR/html4/loose.dtd"gt
  • lthtmlgt
  • ltheadgt
  • ltmeta http-equiv"Content-Type"
    content"text/html charsetUTF-8"gt
  • lttitlegtORIGENlt/titlegt
  • lt/headgt
  • ltbody gt
  • ltdiv aligncentergt
  • ltbgtlt
  • request.setAttribute("fecha",new
    Date())
  • ResquestDispatcher rd
    application.getRequestDispatcher
    ("http//localhost8084/jspTomcat/RequestDestin
    o.jsp")
  • rd.forward(request,response) gt
  • lt/divgt
  • lt/bodygtlt/htmlgt

Alberto Gimeno Arnal
JSP
34
35
JSP request
  • lt_at_page import"java.util."gt
  • lt_at_page language"Java"gt
  • lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
    Transitional//EN"
  • "http//www.w3.org/TR/html4/loose.dtd"gt
  • lthtmlgt
  • ltheadgt
  • ltmeta http-equiv"Content-Type"
    content"text/html charsetUTF-8"gt
  • lttitlegtDESTINOlt/titlegt
  • lt/headgt
  • ltbody gt
  • ltbgtltDate fecha (Date)request.getAttribu
    te("fecha")
  • out.println("lth3 style'font-familyComic Sans
    MS text-aligncenter'gtAtributo de la peticion"
    fecha "lt/h3gt")gt
  • lt/bodygt
  • lt/htmlgt

Alberto Gimeno Arnal
JSP
35
36
JSP response
  • lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
    Transitional//EN" "http//www.w3.org/TR/html4/loos
    e.dtd"gt
  • lthtmlgt
  • ltheadgt
  • ltmeta http-equiv"Content-Type"
    content"text/html charsetUTF-8"gt
  • lttitlegtRedirección con RESPONSElt/titlegt
  • lt/headgt
  • ltbodygt
  • ltresponse.sendRedirect("/jspTomcat/errorResp.
    jsp")gt
  • lt/bodygt
  • lt/htmlgt

Alberto Gimeno Arnal
JSP
36
37
JSP response
  • lt!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
    Transitional//EN" "http//www.w3.org/TR/html4/loos
    e.dtd"gt
  • lthtmlgt
  • ltheadgt
  • ltmeta http-equiv"Content-Type"
    content"text/html charsetUTF-8"gt
  • lttitlegtRedirección con RESPONSElt/titlegt
  • lt/headgt
  • ltbodygt
  • ltresponse.sendError(354, "Hemos redirigido
    la salida a través del objeto RESPONSE")gt
  • lt/bodygt
  • lt/htmlgt

Alberto Gimeno Arnal
JSP
37
38
JSP out ? buffer
  • lt_at_ page buffer"10kb"gt
  • .
  • ltbody style"font-familyComic Sans MS
    aligncentergt
  • ltout.println("lth3gt Pagina que muestra
    información sobre el buferlt/h3gt")
  • out.newLine()
  • int totalout.getBufferSize()
  • int dispout.getRemaining()
  • int usadototal-disp
  • out.println(Estado del bufer ltbrgt")gt
  • ltusadogtbytes/lttotalgtbyteslt(100.0u
    sado)/totalgtltbrgt
  • AutoFlushltout.isAutoFlush()gt
  • lt/bodygt
  • lt/htmlgt

Alberto Gimeno Arnal
JSP
38
39
JSP exception
  • lt_at_ page isErrorPage"true" import"java.io."gt
  • ltbody style"font-familyComic Sans MS"
    align"justify"gt
  • lth1gtSe ha producido una excepciónlt/h1gt
  • ltb gtERRORlt/bgtltexception.toString()gtltbr
    gt
  • ltb gtMENSAJElt/bgtltexception.getMessage()
    gtltbrgt
  • ltb gtVOLCADO DE PILAlt/bgt
  • ltStringWriter sSalida new
    StringWriter()
  • PrintWriter salida new
    PrintWriter(sSalida)
  • exception.printStackTrace(salida)gtltsal
    idagtlt/pgtltbrgt
  • lt/bodygt
  • lt/htmlgt

Alberto Gimeno Arnal
JSP
39
40
JSP exception
  • lt_at_ page errorPage"paginaError.jsp"gt
  • ..
  • ltbodygt
  • lt--Creamos un error --gt
  • ltint i1/0gt
  • lt/bodygt
  • lt/htmlgt

Alberto Gimeno Arnal
JSP
40
41
JSP pageContext ? Redirección
  • .
  • ltpageContext.forward("HolaFigura.jsp")gt
  • ..

JSP pageContext ? Inclusión
. ltpageContext.include("HolaFigura.jsp")gt ..
Alberto Gimeno Arnal
JSP
41
42
JSP Acciones
  • ltjspforward page/gt
  • ltjspinclude page flush /gt
  • ltjspplugin type code codebase att1gt
  • ltjspparamsgtlt/jspparamsgt
  • ltjspparam name value/gt
  • ltjspfallbackgt
  • ltjspuseBean id class /gt
  • ltjspsetProperty name property /gt
  • ltjspgetProperty name property /gt

Alberto Gimeno Arnal
JSP
42
43
JSP ltjspforwardgt
  • ltbody style"font-familyComic Sans MS"gt
  • ltjspforward page"destino.jsp"gt
  • ltjspparam name"ciudad" value"CALATAYUD"
    /gt
  • ltjspparam name"provincia"
    value"ZARAGOZA" /gt
  • lt/jspforwardgt
  • lt/bodygt

Alberto Gimeno Arnal
JSP
43
44
JavaBean Fundamentos
  • Contenedor aplicación, entorno o lenguaje.
    Existen características (atributos o propiedades)
    y comportamientos (métodos) ? ltjspuseBeangt,
    ltjspsetPropertygt, ltjspgetPropertygt
  • Propiedad, atributo de un componente JavaBean que
    tiene como función mantener su estado y controlar
    el comportamiento del Bean.
  • Clase constructores, propiedades, propiedades
    indexadas

Alberto Gimeno Arnal
JavaBean
44
45
JavaBean ltjspuseBeangt
  • ltbody style"font-familyComic Sans MS"gt
  • ltjspuseBean id"fecha" scope"page"
    class"java.util.Date" /gt
  • ltfechagt
  • lt/bodygt

Alberto Gimeno Arnal
JavaBean
45
46
JavaBean Ejemplo (mBean.jar)
  • Definimos la clase que vamos a usar

public class alumnoBean / Declaracion variables / String nombre String apellidos String direccion String correo int movil public alumnoBean() / Inicializamos las variables/ this.nombre"" this.apellidos"" this.direccion"" this.correo"" this.movil0 / Declaramos los constructores/ public String getnombre() return nombre public void setnombre(String nombre) this.nombrenombre public String getapellidos() return apellidos public void setapellidos(String apell) this.apellidosapell ..
Alberto Gimeno Arnal
JavaBean
46
47
JavaBean Ejemplo (Bean.jsp)
  • lt_at_ page import"java.mBean.alumnoBean" gt
  • ..
  • ltbody style"font-familyComic Sans MS
    text-alignjustify" gt
  • ltjspuseBean id"miBean" scope"page"
    class"java.mBean.alumnoBean"gt
  • ltjspsetProperty name"miBean"
    property"" /gt
  • ltjspsetProperty name"miBean"
    property"nombre" value"ALBERTO" /gt
  • ltjspsetProperty name"miBean"
    property"apellidos" value"GIMENO ARNAL" /gt
  • ltjspsetProperty name"miBean"
    property"correo" value"alberto.gimeno_at_gmail.com"
    /gt
  • ltmiBean.setaficion("Cine",0)
    miBean.setaficion("Musica",1)
    miBean.setaficion("Viajar",2)gt
  • lt/jspuseBeangt
  • Soy ltjspgetProperty name"miBean"
    property"nombre"/gt
  • ltjspgetProperty name"miBean"
    property"apellidos"/gt, para cualquier consulta,
    duda o ruego mandame un correo a
    ltjspgetProperty name"miBean" property"correo"/gt
  • Mis aficiones son
  • ltulgt ltString aficionmiBean.getaficion(
    )
  • for(int i0ilt3i)gtltligtlt
    aficionigtlt/ligt
  • ltgt lt/ulgt
  • lt/bodygt
  • lt/htmlgt

Alberto Gimeno Arnal
JavaBean
47
48
JDBC Bases de datos (java.sql)
  • Interfaces CallableStatement, Blob, Ref
    Connection, DatabaseMetaData, Driver,
    PreparedStatement, ResultSet, Clob,
    ResultSetMetaData, Statement, Array, SQLData,
    SQLInput, SQLOutput, Struct.
  • Clases Date, DriverManager, Time,
    DriverPropertyInfo, Timestamp, Types,
    SQLPermisson.
  • Excepciones DataTruncation, SQLWarning,
    SQLException, BacthUpdateException.

Alberto Gimeno Arnal
JDBC
48
49
JDBC Conexión a bbdd
  • Connection con DriverManager.getConnection(url)
  • Para cargar un driver de forma inmediata
    bastará incluirlo a través de la clase
    Class.forName()
  • Estructura que se usa cuando se trabaja con
    bbdd es
  • Try.
  • catch (SQLException ex)..
  • catch (Exception ex)

Alberto Gimeno Arnal
JDBC
49
50
JDBC conex.jsp (Connection)
  • lt_at_ page import"java.sql."gt
  • lttry
  • //Registramos el Driver de MySQL
  • Class.forName("com.mysql.jdbc.Driver")
  • //Realizamos la conexión al servidor
    MySQL
  • Connection connDriverManager.getConne
    ction("jdbcmysql//localhost3306/criogenia","roo
    t","mysql")
  • //Mensaje de exito
  • out.println("Conexion realizada con
    exito a " conn.getCatalog())
  • conn.close()
  • catch(SQLException ex)gt
  • lt"Se produjo un error durante la
    conexión "exgt
  • lt catch(Exception ex)gt
  • lt"Se produjo una excepción "exgt
  • ltgt

Alberto Gimeno Arnal
JDBC
50
51
JDBC Interfaz de consultas
Statement
PreparedStatement
CallableStatement
Alberto Gimeno Arnal
JDBC
51
52
JDBC Consultas de datos
  • //Creamos el interfaz st en el servidor de datos,
    y lo asociamos al objeto conexión conn
  • Statement st conn.createStatement()
  • //Cadena de consulta
  • String sql "SELECT FROM "
    request.getParameter("tabla").toString()
  • //Contenedor de datos ResultSet
  • ResultSet rs st.executeQuery(sql)

Alberto Gimeno Arnal
JDBC
52
53
JDBC conexión.jsp (consulta)
  • lt_at_ page import"java.sql."gt
  • lttry
  • ..
  • Statement st conn.createStatement()
  • String sql "SELECT FROM "
    request.getParameter("tabla").toString()
  • ResultSet rs st.executeQuery(sql)
  • rs.beforeFirst()gt //afterLast()
  • lttable border"1" align"center"gt
  • ltwhile(rs.next())gt //previous()
  • lttrgtlttdgtltrs.getString(1)gtlt/tdgtlttdgtlt
    rs.getString(2)gtlt/tdgt lttdgtltrs.getString(3)gtlt/t
    dgtlt/trgt
  • ltgt
  • lt/tablegt

Alberto Gimeno Arnal
JDBC
53
54
JDBC Tipos de ResultSet (createStatement)
  • TYPE_FORWARD_ONLY por defecto.
  • TYPE_SCROLL_INSENSITIVE todo tipo de movimiento,
    pero mientras esta abierto no se entera de los
    cambios.
  • TYPE_SCROLL_SENSITIVE todo tipo de movimiento y
    control sobre los cambios.
  • CONCUR_READ_ONLY solo lectura.
  • CONCUR_UPDATABLE permite modificaciones.

Alberto Gimeno Arnal
JDBC
54
55
JDBC Métodos de ResultSet
  • executeQuery() ? select ? ResultSet
  • executeUpdate() ? insert, delete, update, create
    table ? int
  • execute() ? otros ? true/false
  • absolute(), afterLast(), beforeFirst(), first(),
    last(), moveToCurrentRow(), previous(),
    relative(), isAfterLast(), isBeforeFirst(),
    isFirst(), isLast(), getRow()
  • close()

Alberto Gimeno Arnal
JDBC
55
56
JDBC conex2.jsp (modificar)
  • lttry
  • ..
  • Statement st conn.createStatement(ResultSe
    t.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATA
    BLE)
  • String sqlselect from "request.getParamet
    er("tabla").toString()
  • ResultSet rs st.executeQuery(sql)
  • // buscamos el registro a modificar, el actual
    getRow()
  • rs.getRow()
  • //Modificamos todos los campos
  • rs.updateString (2,request.getParameter(nom
    b).toString())
  • rs.updateInt (3,request.getParameter(edad)
    .toInt())
  • .
  • rs.updateRow() //Deshacer la
    actualización ? cancelRowUpdates()

Alberto Gimeno Arnal
JDBC
56
57
JDBC conex3.jsp (insertar)
  • lttry
  • ..
  • Statement st conn.createStatement(ResultSe
    t.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATA
    BLE)
  • String sqlselect from
    "request.getParameter("tabla").toString()
  • ResultSet rs st.executeQuery(sql)
  • // nos movemos al registro a insertar,
    moveToInsertRow()
  • rs.moveToInsertRow()
  • //Insertamos los datos nuevos
  • rs.updateString (2,request.getParameter(nom
    b).toString())
  • rs.updateInt (3,request.getParameter(edad)
    .toInt())
  • .
  • rs.insertRow()

Alberto Gimeno Arnal
JDBC
57
58
JDBC conex4.jsp (borrar)
  • lttry
  • ..
  • Statement st conn.createStatement(ResultSe
    t.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATA
    BLE)
  • String sqlselect from"request.getParame
    ter("tabla").toString()
  • ResultSet rs st.executeQuery(sql)
  • // nos movemos al registro a borrar, absolute()
  • rs.absolute(request.getParameter(fila).toI
    nteger())
  • //borramos
  • rs.deleteRow()

Alberto Gimeno Arnal
JDBC
58
59
JDBC conex5.jsp (PreparedStatement)
  • ltif(request.getParameter(insertar)!null)
  • try
  • ..
  • String sql INSERT INTO paciente (nombre, edad,
    sala) VALUES (?,?,?)
  • //Enviamos a BD la consulta para que la compile
  • PreparedStatement pst conn.preparedStatement(sql
    )
  • //Pasamos los parámetros de entrada
  • pst.setString(1,request.getParameter(nomb))
  • pst.setInt(2,Integer.parseInt(request.getParameter
    (edad)))
  • pst.setInt(3,Integer.parseInt(request.getParameter
    (sala)))
  • //actualizamos
  • pst.executeUpdate()
  • //cerramos todo

Alberto Gimeno Arnal
JDBC
59
60
JDBC conex6.jsp (CallableStatement)
  • ltif(request.getParameter(buscar)!null)
  • try
  • ..
  • String palmcall dameSala(?,?)
  • //Enviamos a BD la consulta para que la compile
  • CallableStatement cst conn.prepareCall(palm)
  • //Pasamos los parámetros de entrada al
    procedimiento almacenado
  • cst.setString(1,request.getParameter(nomb))
  • //registramos el parámetro de salida
  • cst.registerOutParameter(2,Types.INT)
  • //ejecutamos la sentencia
  • cst.execute()
  • //comprobemos que nos a devuelto
  • If (cst.getUpdateCount()1)
  • out.println(cst.getString(2))
  • Else
  • out.println(El paciente no existe)
  • //cerramos todo

Alberto Gimeno Arnal
JDBC
60
61
JDBC DatabaseMetaData
  • Proporciona información de la bd a la que nos
    hemos conectado.
  • //conexión
  • Connection conn DriverManager.getConnection(bd,u
    ser,clave)
  • //creamos la instancia a la bd
  • DatabaseMetaData bdmd conn.getMetaData()

Alberto Gimeno Arnal
JDBC
61
62
JDBC ResultSetMetaData
  • Proporciona información sobre las columnas que
    contiene el ResultSet.
  • //ejecutamos la consulta
  • ResultSet rs st.executeQuery(sql)
  • ResultSetMetaData rsmdrs.getMetaData()
  • rs.beforeFirst()gt
  • lttable border"1" align"center"gt
    lttrgtltthgtltrsmd.getColumnName(1)gtlt/thgt.
  • ltwhile(rs.next())gt
  • lttrgtlttdgtltrs.getString(1)gtlt/tdgt..
  • ltgt

Alberto Gimeno Arnal
JDBC
62
63
Componentes JavaBeans y JDBC
  • Vamos a usar un Bean de sesión,
    HttpSessionBindingListener, la desconexión se
    producira cuando se destruya el componente
    valueUnbound. Para ello creamos una clase (con
    sus constructores) que nos devuelva el nombre y
    edad de un determinado paciente dandole un
    identificador ? userBean.class
  • public class userBean implements
    HttpSessionBindingListener
  • ..
  • public void valueBound(HttpSessionBindingEvent
    event)
  • public void valueUnbound(HttpSessionBindingEvent
    event)
  • try
  • conn.close()
  • catch(Exception ex)
  • System.out.println("Error al cerrar la
    conexión " ex)

Alberto Gimeno Arnal
JDBC
63
64
Componentes JavaBeans y JDBC
  • public class userBean implements
    HttpSessionBindingListener
  • private int codigo, edad
  • private Statement st
  • private ResultSet rs
  • private String nombre
  • private Connection conn
  • private String sql"Select nombre,edad from
    paciente where id_paciente"
  • / Creacion instancia userBean /
  • public userBean()
  • setCodigo(0)

Alberto Gimeno Arnal
JDBC
64
65
Componentes JavaBeans y JDBC
  • public void setCodigo(int codigo)
  • try
  • sql sql codigo
  • Class.forName("com.mysql.jdbc.Driver").newIns
    tance()
  • connDriverManager.getConnection("jdbcmysql
    //localhost3306/criogenia", "root","mysql")
  • st conn.createStatement()
  • rs st.executeQuery(sql)
  • if(rs!null)
  • nombre rs.getString("nombre")
  • edad rs.getInt("edad")
  • codigocodigo
  • rs.close()
  • catch(Exception ex)
  • System.out.println("Error al establecer la
    propiedad codigo " ex)

Alberto Gimeno Arnal
JDBC
65
66
Componentes JavaBeans y JDBC
  • public String getNombre()
  • return nombre
  • public int getEdad()
  • return edad

Alberto Gimeno Arnal
JDBC
66
67
Componentes JavaBeans y JDBC
  • lt_at_ page import"com.bean." gt
  • ltjspuseBean id"paciente" class"com.bean.userBea
    n" scope"session"gt
  • lt/jspuseBeangt
  • ..
  • ltform action"index.jsp"gt
  • Código del Paciente ltinput type"text"
    name"codigo" value"" size"3" /gt
  • ltinput type"submit" value"CONSULTA"
    name"enviar"/gt
  • lt/formgt
  • ltif(request.getParameter("enviar")!null)gt
  • Los datos del código de paciente
    ltrequest.getParameter("codigo")gt son
    ltjspsetProperty name"paciente" property"" /gt
  • ltulgt
  • ltligtNombre ltbgtltjspgetProperty
    name"paciente" property"nombre" /gtlt/bgtlt/ligt
  • ltligtEdad ltbgtltjspgetProperty name"paciente"
    property"edad" /gtlt/bgtlt/ligt
  • lt/ulgt
  • ltgt

Alberto Gimeno Arnal
JDBC
67
68
BIBLIOGRAFIA
  • Curso de JAVA Ed. ANAYA Multimedia OREILLY
  • Bases de datos con JAVA Ed. Ra-Ma
  • MySQL 5.0 Reference Manual (http//dev.mysql.com/d
    oc/refman/5.0/es/index.html)
  • Manual oficial de JAVA (http//www.java.com/es/dow
    nload/manual.jsp)
  • http//java.sun.com

Alberto Gimeno Arnal
68
Write a Comment
User Comments (0)
About PowerShow.com