Ejemplo Crud Jsp
-
Upload
arrietajohn -
Category
Documents
-
view
262 -
download
2
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)