Ejemplo Crud Jsp

download Ejemplo Crud Jsp

of 48

Transcript of Ejemplo Crud Jsp

  • 7/23/2019 Ejemplo Crud Jsp

    1/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    EJEMPLO DE REGISTRO E INICIO DE SESIN CON JSP, SERVLET Y MYSQL

    1) crear la base de datos.

    Ver tutorial que hice sobre MySQL WorkBench

    Tabla usuarios (id, password, nombre, apellido, email, tipo)

    1). Descargar e instalar el MySQL Server (puede ser por ejemplo mediante XAMPP o WAMP o

    AppServer)

    2). Iniciar el servidor MySQL.

    3). Descargar, instalar e iniciar el Netbeans

    4). ir al panel de servicios (Prestaciones) de Nebeans, seleccionar el servidor MySQL, hacer

    clic derecho y escoger la opcin Conectar.

    5). clic derecho sobre el serividor y seleccionar la opcion crear base de datos

    6). darle nombre a la base de datos y escoger el usuario que tendr permisos sobre la misma

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    2/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    7). observar que la bd es agregada al conjunto de bd.

    8). clic derecho sobre la nueva base de datos y seleccionar la opcin conectar

    9). Observar que se ha generado una conexin lista para trabajar con la nueva base de datos.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    3/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    10). Clic derecho sobre la opcin tablas de la base de datos creada y seleccionar la opcinCrear Tabla

    11). Agregar en la tabla las columnas necesarias

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    4/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    12). observar como la tabla fue creada y agregada a la base de datos

    13). Crear un nuevo proyecto Java Web

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    5/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    6/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Esta es la estructura del proyecto, la cual es generada automticamente por el IDE Netbeans.

    Web Pages: se colocaran los archivos HTML, JSP, JavaScript, CSS, Imgenes, iconos y

    Multimedia

    META-INF: contiene informacin XML sobre la estructura del proyecto (no debemos tocarla)

    WEB-INF: contiene un archivo XML en el cual se registran y describen los Servlet y otros

    detalles importantes del sitio web, como es el caso de la pgina de inicio, o el HOME o Welcom

    Source Package: Contendr los archivos de cdigo fuente .java, para el caso de los Servlet y

    otras clases, como por ejemplo los Java Bean, la clase conexin a bd y las clases utilitarias.

    libreras: contiene las libreras o bibliotecas de clases.jar que necesite el proyecto para

    funcionar, como es el caso de la biblioteca de clases que actan como Driver o Manejador de

    conexiones a MySQL.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    7/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    14). Agregar la biblioteca o librera Diver- MySQL-JDBC.

    Dar clic en el botn Importar y seleccionar la librera Driver MySQL JDBC.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    8/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Observemos como fue agregada la librera al conjunto de libreras del proyecto

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    9/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    15). crear los paquetes para organizar las clases.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    10/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    16). En la carpeta Web Pages creemos las carpeta para organizar los archivo html, jsp, css, js y

    dems,

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    11/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Se recomienda crear una carpeta con el mismo nombre de cada cada Clase de Negocio o

    Clase Entidad o Tabla de BD del sistema.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    12/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    17). En cada carpeta con nombre igual a las tablas de la BD es recomendable crear al menos

    5 archivos JSP para cada una de las acciones que comnmente se realizan sobre dichas

    tablas, por ejemplo agregar.jsp, eliminar.jsp, modificar.jsp, buscar.jsp, listar.jsp en la carpeta

    web/usuario.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    13/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Adems, como en este caso estamos tenemos una tabla llamada usuario, es normal que

    deseemos tener una pagina.jsp que nos permita iniciar sesin en el sistema y otra que nos

    muestre los mensajes de error, en caso tal de que ocurran, es por eso que tambin podemos

    agregar los archivos login.jsp y mensaje.jsp

    18). Igual haremos con los dems archivos necesarios, entre ellos se encuentran:

    Clases CRUDUsuario.java y ConexionBaseDatos.java en el paquete modelo, CRUD Es la sigla

    de Create = Crear o Insertar, Read = Leer o Consultar, Update = Actualizar o Modificar y Delete= Eliminar o Borrar.

    Crear la clase entidad para trabajar con informacin referente a usuario (generalmente las

    clases entidades, son una representacin en lenguaje de programacin a una tabla de la base

    de datos)

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    14/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Tambin debemos crear una clase muy importante de tipo Servlet, esta clase se puede llamar

    por ejemplo SetvletUsuario.java en el paquete controlador.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    15/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    En la siguiente ventana se debe seleccionar o activar la Add Information to Deprloyment

    Descriptor (web.xml), con el fin de generar automticamente el archivo de despligue denuestra aplicacin Web, en dicho archivo se agrega automticamente el alias que deseamosdar al Servlet, en este caso ser/usuario, tambin se incluyen datos como cual ser la paginainicial o la Index

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    16/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Observemos que se ha agregado nuevos archivo clase .java en los paquetes que hemos

    deseado.

    19). Construir los elementos (Propiedades o Atributos y Mtodos u Operaciones) de cada clase

    java, en este caso veremos los elementos de la clase Usuario.java

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    17/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    21). Mtodos SET y GET para las propiedades de la clase Usuario

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    18/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    22). Propiedades de la clase ConexionBaseDatos.java

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    19/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    23). mtodos de la clase ConexionBaseDatos

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    20/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    El mtodo conectar de la clase ConexionBaseDatos: la ser invocado sus lneas 58-63

    contienen un trycatch en el cual se intenta registrar el driver de la base de datos, en este

    caso las clase Driver que se encuentra en el paquete com.mysql.jdbc incluidos en la

    biblioteca de clases Driver-MySQL-JDBC agregada al proyecto en el paso No. 14. Lneas 64-70

    intentan establecer conexin al servidor MySQL usando la url

    jdbc:mysql://localhost:3306/mibasededatos, usuarioy passwordde la BD.

    Mtodo actualizar de la clase ConexionBaseDatos: al ser invocado recibe como

    argumentos un objeto de la clase PreparedStatement, el cual es utilizado para invocar al

    mtodo executeUptade de dicha clase, este mtodo enva al Servidor MySQL sentencias

    SQL de tipo INSERT, UPDATE o DELETE contenidas en el objeto sentencia de tipo

    PreparedStatement, el servidor ejecuta esta sentencia y devuelve el resultado, todo se hace

    dentro de un try catch para poder manejar el error en caso de que este ocurra. Este error es

    relanzado fuera de este mtodo

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    21/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Mtodo consultar de la clase ConexionBaseDatos: Al ser invocado funciona igual al

    mtodo actualizar pero la diferencia es que el objeto sentencia de tipo

    PreparedStatement contiene sentencias o comando SQL de tipo SELECT, los cuales se

    ejecutan sobre el servidor MySQL al ser invocado el mtodo exeeuteQuery de la clase

    PreparedStatement, devolviendo como resultado un objeto de la clase ResultSet, el cual

    contiene informacin sobre los registros o filas encontradas por el comando SELECTen la BD.

    El mtodo desconectarde la clase ConexionBaseDatos: al ser invocado lnea 98 invoca al

    mtodo close de la clase Connection, mtodo que cierra toda posible conexin con el

    servidor de BD.

    El mtodo crearSentenciade la clase ConexionBaseDatos: al ser invocado recibe como

    argumento un objeto de la clase String, es decir una cadena de texto, este objeto

    referenciado usando la variable sqlcontiene la sentencia o comando SQLque ser preparada

    para ser enviada y ejecutada sobre el servidor de BD. La sentencia sql se pasa como

    argumento a la llamada o invocacin del mtodo prepareStatement de la clase

    Connection, este mtodo trata de preparar dicha sentencia sqlpara que pueda ser enviada

    sin errores al servidor de BD, si esto es posible, el mtodo prepareStatement retorna un

    objeto de tipo PrepatedStatement, el cual es utilizado para invocar los mtodos

    executeUpdatey executeQueryde dicha clase

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    22/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Mtodos getXX y setXX de la clase ConexionBaseDatos: al invocar los mtodos getXX

    estos retornan o devuelven el valor de la propiedad XX que lleva su nombre, por ejemplo

    getNombreBD(); devolver el valor de la propiedad nombreBD, mientras que al invocar los

    mtodos setXXestos reciben como argumento una variable con el mismo tipo de la propiedad

    XX a la que hace referencia su nombre, con el fin de darle o asignarle un valor a la misma, por

    ejemplo setNombreBD(mibasededatos); asigna el valor mibasededatos a lapropiedadsetNombreBD de la claseConexionBaseDatos

    24). Propiedades de la clase CRUDUsuario

    La clase CRUDUsuarioes

    24). Mtodos de la clase CRUDUsuario est diseada con el fin de realizar las operaciones

    CRUDde usuarios (Createo Insertar, Reado Consultar, Updateo Actualizar y Deleteo

    Eliminar por sus siglas en ingles sobre) sobre las base de datos. Para utiliza un objeto de la

    ConexionBaseDatos y otro de la clase Usuario con el fin de invocar sus mtodos

    explicados anteriormente.

    Esta clase bsicamente se encarga de proporcionar mtodos para que el Servlet pueda

    Insertar, Modificar, Eliminar y Consultar datos de los usuarios a partir de la

    informacin enviada por formularios jsp.

    Los mtodos de esta clase mediante los cuales se puede realizar CRUD sobre la base de

    datos son:

    agregarUsuario, modificarUsuario, eliminarUsuario, consultarUsuario,

    listarTodosLosUsuarios, e iniciarSesion.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    23/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    EL mtodo agregarUsuariode la clase CRUDUsuarioal ser invocado lanza una excepcin

    si no puede agregar los datos de un usuario en la BD, en las lneas 25 a la 27 se verifica si

    lanza una excepcin si el id del usuario que se desea agregar en la BD este vaco.

    Lneas 29 a 31: se crea la sentencia SQL de tipo INSERTpara insertar los datos del usuario en

    la tabla usuarios de la BD.

    Lnea 34: Se invoca al mtodo crearSentenciay se le pasa como argumento la sentencia

    INSERT, el objeto PreparedStatement devuelto es asignado a una variable referencia del

    mismo tipo.

    Lneas 35 a 41: se utiliza el objeto de tipo PreparedStratement para invocar el mtodo

    setString( int, String), el cual permite reemplazar los smbolos ? de la sentencia SQLpor los valores que sern insertados en la tabla de la base de datos. El primero argumento de

    tipo intdel mtodo setStringes la posicin del ? en la sentencia, mientras que el segundo

    argumento de tipo Stringcorresponde al valor por el cual ser reemplazado el ? en la BD. Eneste caso se reemplazan el primer ? por el Id del usuario a agregar en la BD, luego sereemplaza el segundo ? por el Password, el tercer ? por el Nombre, el cuarto ? por el

    Apellido, el quinto ? por el Email y el sexto ? por el Tipo.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    24/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Lnea 44: se utiliza la variable baseDatos como referencia a un objeto de la clase

    ConexionBaseDatos para poder invocar a su mtodo actualizar, el cual recibe como

    argumento la variable sentenciaSQL referencia a un objeto de tipo PreparedStatement,

    este mtodo se ejecuta insertando los datos del usuario como un nuevo registro o fila de la

    tabla usuarios en la BD. Si por algn motivo no se puede agregar el nuevo usuario en la BD,

    entonces se lanzara una excepcin indicando el mensaje de error ocurrido, esta excepcin esdetectada por el bloque tryy capturada por el bloque catch, el cual relanza nuevamente otra

    excepcion explicando que el error ocurri al tratar de agregarUsuario. Por ltimo, se

    agregue o no el nuevo usuario a la bd, se ejecuta el bloque finallycerrando la conexin a la

    bd.

    El mtodo modificarUsuario al ser invocado realizar una operacin similar a la realizada

    por el mtodo agregarUsuario, pero la diferencia es que este mtodo enva una sentencia

    SQLde tipo UPDATEen vez de una de tipo INSERT.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    25/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    En la lnea 58 se genera la sentencia SQLUPDATE, en la lnea 63 se obtiene el objeto para

    trabajar con la sentencia SQL, mientras que en las lneas 66 a 71 se indican los datos a

    modificar, y en la lnea 73 se realizar la actualizacin de la BD con dichos datos.

    El mtodo eliminarUsuario funciona similar a los mtodos agregarUsuario y

    modificarUsuario, la diferencia es que este enva a la BD una sentencia SQLDELETEenvez de INSERTy UPDATE.

    En la lnea 87 se genera la sentencia SQLDELETE, en la lnea 91 se obtiene el objeto para

    trabajar con la sentencia SQL, mientras que en las lneas 93 reemplaza el ? por el Id delusuario a eliminar, y en la lnea 95 se realizar la actualizacin de la BD con dichos datos.

    El mtodo iniciarSesionde la clase CRUDUsuarioal ser invocado recibe como argumento

    el id y el pasword del usuario que desea iniciar una sesin en el sistema y retorna como

    resultado un objeto de tipo Usuario, el cual contiene los datos del usuario que se ha logeado,

    en caso de que no pueda loguearse, por ejemplo porque los datos suministrados (id y

    password) son errados, el mtodo lanza una excepcin informado sobre el error ocurrido.

    Lnea 185: se disea la sentencia o comando SQL de tipo SELECT, el cual permite consultar

    informacin en la base de datos y retorna como resultado un conjunto de filas o registros que

    coinciden con los criterios de bsqueda especificados en dicha sentencia.

    Linea 189: se in se obtiene el objeto PreparedStatement a partir de la sentencia SQL

    SELECTcreada anteriormente. Linea 191: Se reemplaza el primer ?ysegundo? por elId y

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    26/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    el password del usuario a consultar respectivamente. Linea 193: Se invoca el mtodo

    consultarde la clase ConexionBaseDatospasndole sentenciaSQLpreparada con el fin

    de obtener un objeto de tipo ResultSet, el cual contiene el resultado de la consulta.

    Lnea 194 a 205: Se verifica si el resultadotiene disponible un registro como respuesta a la

    consulta, si esto es verdadero, entonces se crea un nuevo objeto de tipo Usuarioy se asigna

    a una variable llamada alguien, luego se le asignan valores a sus propiedades invocando sus

    mtodos setXX, los cuales reciben como argumento el valor devuelto al invocar el mtodo

    getStringde la clase ResulSet, el cual recibe como argumento el nombre de la columna

    correspondiente a la tabla de la bd indicada en la sentencia SELECT. Cuando ya se han

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    27/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    cargado todos los datos del usuario logueado, entonces este es retornado por el mtodo

    culminando as su ejecucin, si por el contrario, el resultado no contiene ninguna registro

    disponible, entonces se lanza una excepcinnotificando datos sobre el error.

    El mtodo consultarUsuario de la clase CRUDUsuario al ser invocado recibe como

    argumento el iddel usuarioque se desea consultar en la BD, y devuelve un objeto de tipo

    Usuariocon los datos del usuario cuyo iden la BD es igual al id pasado como argumento. Elmtodo retorna una excepcin en caso hipottico que no pueda retornar un resultado positivo,

    es decir que no exista en la BD un usuario con id igual al id que se indic como argumento al

    llamar este mtodo.

    Su funcionamiento es bsicamente similar al del mtodo iniciarSesion, ambos mtodos

    estn marcados como staticlo que significa que no es necesario crear un objeto o instancia

    de la clase CRUDUsuariopara poder invocar estos mtodos.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    28/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    El mtodo listarTodosLosUsuariosde la clase CRUDUsuario al ser invocado no recibe

    argumentos y retorna un arreglo de Usuarios, este arreglo contiene una lista de todos losobjetos de tipo Usuario que con informacin sobre los usuarios encontrados en la BD. El

    mtodo puede o no retornar una excepcinen cado de que no pueda realizar la consulta o la

    base no contenga ni un solo usuario registrado.

    Lnea 143: se disea la sentencia o comando SQLSELECT que ser enviado al servidor de

    base de datos, esta sentencia es una consulta sin criterios o condiciones de bsqueda, es decir

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    29/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    hace un barrido por toda la tabla Usuarios de la BD y retorna todos los registros o filas

    contenidas en ella. Las lneas 146, 147 y 149 ya han sido explicadas anteriormete.

    Lnea 150: se invoca el mtodo last de la clase Resultset con el fin de ubicarnos en la

    ltima fila contenida en el resultado devuelto al invocar el mtodo consultar de la clase

    ConexionBaseDatos, esto con el fin de obtener el nmero de la ltima fila de resultado yhace poder crear un arreglo con tamao igual al tamao del resultado, operacin que se realiza

    en la lnea 151, al invocar el mtodo getRowde la clase ResultSetel cual retorna el nmero

    de la fila actual (recordemos que en la lnea anterior nos ubicamos en la ltima fila del

    resultado)

    Lnea 152: nos volvemos a ubicar en la primera antes de la primera fila del resultado sea en la

    fila nmero 0.

    Lneas 153 a 162: realizamos un ciclo de tipo MIENTRAS QUE con el fin de iterar o recorrer el

    conjunto de filas contenidas en el objeto resultado de tipo ResultSet. Cada vez que se

    invoque el mentodo next de la clase ResultSet y este devuelva verdadero, iniciara unaiteracin nueva, en la cual se crea un nuevo objeto Usuario y se asigna a una variable

    llamada alguien, luego le damos valores a sus propiedades invocando sus mtodos setXXy

    pasndole como argumento el valor devuelto al invocar el mtodo getString de la clase

    ResultSet, quien recibe como argumento el nombre de la columna de la tabla en la bd

    especificada en la sentencia SELECT

    Lnea 161: se invoca nuevamente al mtodo getRow de la clase ResultSet con el fin de

    obtener el numero o posicin de la fila en la que nos encontramos actualmente al recorrer el

    resultado, este nmero se pasa como ndice al arreglo de Usuariosllamado listadocon el

    fin de asignar en esa misma posicin al objeto usuario recuperado a partir de resultado

    obtenido por la consulta hecha a la BD.

    Lnea 162: verificamos si el arreglo tiene una tamao menor o igual a 0, de ser cierto, esto

    quiere decir que la consulta no tuvo xito, sea que la BD no tiene usuario registrados,

    entonces se lanza una excepcin notificando datos sobre el error.

    Si todo anda bien y la ejecucin logra llegar a la lnea 166, quiere decir que si hubo resultados

    positivos en la consulta, por ende se debe retornar el arreglo que contiene una lista con los

    objetos de tipo Usuario que contienen en sus propiedades la informacin requerida.

    Clase ServletUsuario:

    Este clase acta como controlador de la aplicacin, es decir:

    1. Posee mtodos para capturar los datos enviados por el usuario a travs de los

    formularios HTML ya sea mediante paginas dinmicas JSP o paginas estticas HTML.

    Dichos mtodos se llaman doGet y doPost.

    2. Procesa los datos o campos enviados por cada formulario determinando si estos

    cumplen o no con el formato adecuado, si los datos cumplen con el formato, entonces el

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    30/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Servlet determina cual mtodo de la clase CRUDUsuario debe ser invocados con el fin

    de agregar, eliminar, actualizar o consultar dichas datos en la BD.

    3. Una vez culminada la operacin CRUD que se determin realizar, el Servlet enva al

    usuario el resultado de dicha operacin mediante paginas JSP.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    31/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    32/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Lnea 8: indica que la el archivo de cdigo fuente .javay el archivo compilado .classsern

    almacenados en la carpeta controladores que a su vez est dentro de la carpeta johnarrieta.

    Lnea 23: definimos el nombre del servlet y el nombre de url por el cual debemos acceder al

    mismo.

    Lnea 24: definimos el nombre de nuestra clase Servlet y al mismo tiempo que lo heredamos de

    la clase HttpServlet

    Lneas 10 a 16: se importan las clases necesarias para poder trabajar con Servlet, estas se

    encuentran en diferentes paquetes, por ejemplo el paquete java.io contiene dos clases

    llamadas IOExceptiony PrintWriter, la primera nos permite trabajar con Excepciones o

    posible errores ocurridos en tiempo de ejecucin, la segunda nos permite enviar contenido

    (HTML, CSS, JavaScript, JSon, XML, etc) al cliente web quien generalmente es unnavegador web. El paquete javax.servlet contiene otros paquetes como por ejemplo

    javax.servlet.http, en el primero se encuentra la clase ServletException, la cual

    utilizamos para manipular los errores en tiempo de ejecucin. En el segundo paquete se

    encuentran las clases HttpServlet, HttpServletRequesty HttpServletResponse. La

    clase HttpServlet es la clase de la cual debemos heredar todos los servlet de nuestras

    aplicaciones web, esta clase es la que define los mtodos doPost y doGet, necesarios para

    recuperar la informacin (campos de formulario GET o POST) enviada en las peticiones o

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    33/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    conexiones realizadas desde el cliente Web o Navegador Web. Por otro lado las clases

    HttpServetResponse pose mtodos para responder a dichas peticiones, operacin que

    realiza invocando mtodos de un objeto llamado outde tipo PrintWriter, mientras que la

    clase HttpServletRequest posee mtodos para recuperar informacin enviada por el

    Cliente Web, esta informacin generalmente viene en formato POST o GET y se encuentra

    organizada en forma de campo=valor.

    Todo servlet por defecto utiliza una conjunto de variables llamadas request, response, out,

    sesin, entre otras, estas variables son objetos de tipo HttpServletRequest,

    HttpServletResponse, PrintWritery HttpSessionrespectivamente.

    Lnea 36 a 93: inicio o cabecera del mtodoprocessRequest, cuerpo del mtodo y fin de

    mismo. El mtodoprocessRequest al ser invocado por el mtodo doPosto doGet recibe

    como argumento el objeto requesty el objeto responsey puede lanzar una Excepcionen

    caso de que ocurra un problema al procesar la peticin.

    El mtodoprocessRequest es un mtodo propio o de nuestra clase ServletUsuario, porconsiguiente podemos cambiarle el nombre si as lo deseamos. Dentro del cuerpo de este

    mtodo debemos escribir el cdigo java que defina la lgica que deseamos ejecutar cuando se

    realiza una peticin hacia el servlet desde un cliente web.

    En este caso, la lgica consiste en:

    Recuperar los campos del los formularios HTTP enviados en la peticin hecha desde el

    cliente web.

    Uno de estos campos debe llamarse accin, cuyo valor indica justamente la accin que

    debe realizar el servlet al momento de recibir los datos enviados en la peticin, en este

    ejemplo existen 6 formularios diferentes ubicados en la carpetaweb/usuariollamados:o agregar.jsp: enva campos con los valores de un nuevo usuario a ser

    registrado o agregado al sistema, entre dichos campos tambin enva un campo

    especial y oculto (hiddene) llamado accin cuyo valor es agregar.

    o eliminar.jsp: enva solo dos campos, uno con el iddel usuario a eliminar y

    otro campo oculto llamado accincuyo valor es eliminar.

    o modificar.jsp: enva campos con los valores nuevos valores del usuario a ser

    modificado o actualizado en el sistema, tambin enva otro campo oculto

    llamado accincuyo valor esmodificar.

    o buscar.jsp: enva solo dos campos, uno con el iddel usuario a buscar y otro

    campo oculto llamado accincuyo valor esbuscar.o listar.jsp: enva solo el campo accincuyo valor es listartodo

    o login.jsp: enva los campos id ypassword del usuario que desea iniciar

    sesin en el sistema, pero tambin enva el campo accincuyo valor es login

    Una vez el servlet recupera los campos con sus respectivos valores, utiliza el valor del

    campo accin para determinar qu operacin o mtodo de la clase CRUDUsuario

    deber invocar para sea ejecutada sobre la base de datos.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    34/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Si la operacin se ejecuta sin excepciones o errores, el servlet redireccin el flujo del

    programa hacia la misma pgina .jps que realizo la peticin, notificando con un

    mensaje explicativo de satisfaccin. En caso contrario, es decir si ocurre un error, el

    servlet redirecciona el flujo del programa hacia una pgina llamadamensaje.jsp

    envindole un parmetro con un texto explicativo el error.

    Lneas 38 y 39: se le enva como respuesta al cliente web un comando httpque le indica que

    todo el contenido siguiente que le ser enviado esta en formato de texto html codificado con

    caracteres UTF-8. Luego a partir del objeto response obtenemos un nuevo objeto de tipo

    PrintWriter llamado out, el cual se especializa en enviar caracteres de texto hacia el cliente

    web

    Lneas 41: utilizamos el objeto requestde tipo HttpServletRequestcon el fin de invocar al

    mtodo getParameter(nombre_parametro);con el cual obtenemos el valor del parmetro

    que se le pasa como argumento, parmetro que se espera haya sido enviado en la peticin

    realizada al servlet, vemos que el parmetro recuperado es el parmetro accin, cuyo valor es

    asignado a una variable justamente llamada accin;

    Linea 42: verificamos que si el valor del parmetro accin es igual a la palabra agregar, si

    esto es verdadero, entonces, Linea 43 se crea un objeto de tipo CRUDUsuarioy Linea 44 a 49

    lo utilizamos para invocar el mtodo getAlguienel cual retorna un objeto de tipo Usuario, al

    que su vez le pasamos valores a sus variables invocando sus mtodos setXX y pasndole

    como argumento el valor de los respectivos parmetros XXenviado con en la peticin.

    Lnea 50: invocamos el mtodo agregarUsuariode la clase CRUDUsuario, mtodo que agrega

    mediante SQL INSERTlos datos del usuario en la BD.

    Linea 51: utilizamos el objeto response para invocar al mtodo sendRedirectpasandolecomo argumento la ruta de la pagina jspque mostrar el mensaje de respuesta al resultado de

    la operacin realizada.

    Lineas 53 a 63: verificamos si la accin enviada es igual abuscar, si esto es verdadero,

    entonces lnea 54 utilizamos el nombre de la clase CRUDUsuario para invocar a su mtodo

    staticoconsultarUsuario, el cual recibe como argumento el id del usuario que se desea

    consultar, id que es recuperado como parmetro de los datos enviados en la peticin, si la

    llamada este mtodo arroja un resultado positivo, este retornara o devolver un objeto de tipo

    Usuario con los datos del usuario que fue encontrado en la bd, de lo contrario lanzara una

    excepcinnotificando informacin sobre el error.

    Linea 55: utilizamos el objeto requestpara invocar su mtodo gerSession, el cual retorna un

    objeto de tipo HttpSession, objeto que posee mtodos que nos permiten almacenar datos

    (objetos o valores primitivos) en forma de atributosde la peticin, de tal forma que puedan

    ser recuperados por otras servlets o paginas JSP, es decir, un objeto de tipo HttpSession

    posee mtodos que nos permiten compartir informacin entre diferentes Servleto Diferentes

    paginas JSP. Es por eso que en esta misma lnea invocamos a su mtodo setAttribute el

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    35/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    cual recibe como argumentos el nombrecon el que ser guardado el atributo y el valorque le

    ser asignado a dicho atributo, en este caso el nombre ser usuario.buscary el valor ser

    el objeto usuarioque fue encontrado en la bd.

    Linea 56: se obtiene el valor del parmetro redir, el cual indica al servlet cual a cual

    operacin ser redireccionado el flujo del programa si se desea por ejemplo modificar oeliminar los datos del usuario consultado.

    Lineas 79 a 83: verificamos si la accinenviada es igual a listartodo, si esto es verdadero,

    entonces lnea 80, utilizamos el nombre de la clase CRUDUsuario para invocar a su mtodo

    estaticolistarTodosLosUsuarios, el cual no recibe argumentos y retorna un arreglo de

    objetos de tipo Usuariocomo producto de la consulta positiva sobre la BD, de lo contrario, si

    ocurre un error o la BD esta vaca en cuanto a usuarios se refiere, el mtodo lanza una

    excepcinnotificando informacin sobre el problema. Posteriormente lnea 81, guardamos en

    un atributode Sessionel arreglocon los usuariosconsultados en la BD, el nombre con el

    cual podremos recuperar dicho arreglo es usuario.listar. Por ultimo lnea 82,

    redireccionamos el flujo del programa hacia la pagina JSP listar.jsp,, la cual deber recuperar elarreglo de objetos de tipo usuario guardados como atributo de la sesin y proceder a

    mostrarlos uno a uno dentro de una tabla html.

    Pagina login.jsp

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    36/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Pagina index.jsp.

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    37/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Pgina mensaje.jsp

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    38/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Pgina index.jsp

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    39/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Pgina agregar.jsp

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    40/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    41/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Pgina buscar.jsp

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    42/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Pgina eliminar.jps

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    43/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    44/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    45/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    Pgina modificar.jsp

    Pgina

    listar.jsp

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    46/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    47/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)

    AUTOR: ING. JOHN CARLOS ARRIETA [email protected]

    mailto:[email protected]:[email protected]:[email protected]:[email protected]
  • 7/23/2019 Ejemplo Crud Jsp

    48/48

    Gua didctica: aprender a desarrollar una aplicacin bsica para internet mediante el uso de los

    lenguajes HTML, SQL, Java y tecnologa Servet JSP(AUTOR: ING. JOHN CARLOS ARRIETA ARRIETA)