0% encontró este documento útil (0 votos)
73 vistas20 páginas

Introducción A JSF Con JDBC

JDBC es un API de Java que permite conectarse a bases de datos y realizar operaciones SQL. Con JDBC se puede conectar a diferentes tipos de bases de datos sin cambiar el código. El documento explica cómo crear un proyecto JSF con conexión a MySQL usando JDBC e incluye clases como Conexión, Managed Bean, Entidad y Modelo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
73 vistas20 páginas

Introducción A JSF Con JDBC

JDBC es un API de Java que permite conectarse a bases de datos y realizar operaciones SQL. Con JDBC se puede conectar a diferentes tipos de bases de datos sin cambiar el código. El documento explica cómo crear un proyecto JSF con conexión a MySQL usando JDBC e incluye clases como Conexión, Managed Bean, Entidad y Modelo.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 20

Programación IV

JDBC (Java Database Connectivity)

JDBC (Java Database Connectivity) es un API de Java que nos permite


conectarnos con bases de datos y realizar operaciones sobre ellas
utilizando instrucciones SQL desde una aplicación Java. Con JDBC
tenemos una interfaz para conectarnos con una base de datos sin tener
que preocuparnos de si es una base de datos MySQl, Oracle, SQLServer
o cualquier otro tipo de base de datos. El único cambio que habría que
hacer para cambiar el tipo de base de datos de una aplicación sería
cambiar el driver especifico de la base de datos en cuestión.
JSF es un framework que provee una complementación del patrón MVC
(Modelo Vista Controlador). Este es un patrón que permite separar
responsabilidades dentro de una aplicación Web organizando nuestro
código en tres secciones, de manera de facilitar el mantenimiento y
programación de las aplicaciones.

Expliquemos a grandes rasgos las responsabilidades de cada una


de estas secciones:

• Modelo: Representa la data del sistema, la información utilizada


por la aplicación para poder realizar su procesamiento.
• Vista: Representa la interfaz de usuario.
• Controlador: Es el encargado de detectar las acciones realizadas
por el usuario a nivel de interfaz, decidir que operaciones realizar y
que resultado mostrar.

Para el siguiente ejemplo utilizaremos el modelo mvc para


la conexión con base de datos

Ejemplo
paso 1. Crear un proyecto JSF con el nombre Calculo de Descuento
New Project -> Java Web -> Web Application
Project Name: base_proyecto

Server: GlassFish 4.1 (este servidor debe ser el que haya


instalado el cual puede ser tomcat)
Java EE version: Java EE 7 web ( o la version instalada)

Seleccionar en Frameworks "Java Server Faces"


Server Library: JSF 2.2 ( o la version instalada)
Configuration -> Prefered Page Language: Facelets

Paso 2. Agregar el archivo de Configuracion Faces-


config.xml colocarse en la carpeta WEB-INF y presionar clic boton
derecho.

New->other->JavaServer Faces->JSF Faces Configuration

Paso 3. Agregar tres paquetes con los nombres siguientes


clases,controladores,entidades y modelo , colocarse en la
carpeta Source Packages y presionar clic boton derecho.

New->Java Package

Nombre y Ubicacion
Nombre del Paquete : clases
Proyecto : base_proyecto
Ubicacion= Source Packages
Seguir el mismo procedimiento para los demás paquetes
controladores,entidades y modelo, la carpeta Source Packages
quedara de la siguiente manera.
Paso 4. Agregar la clase de Conexion , colocarse en el paquete
clases y presionar clic botón derecho

New->Java Class

Nombre y Ubicacion
Nombre de la clase : Conexion
proyecto : base_proyecto
ubicacion: Source Packages
paquete :clases

Anear el siguiente código de la clase.


cómo pueden observar esta clase se utilizara para la conexión a la base
datos de mysql, recuerde que debe de cambiar tanto el usuario,
contraseña y puerto de la conexión y colocar los que usted tiene
configurados en su computadora de trabajo, para el caso que esté
utilizando SQL server debe de cambiar la url para más detalles de
la conexión, consultar la documentación de JDBC que se vio al inicio del
ciclo con las JSP conectadas a la base de datos, que la programación de
la definición de clases Conecction, Statement y Resulset son de la
misma forma.

Se ha creado método llamado conectar el cual va a retornar un objeto de


tipo Connection, el retorno de este objeto se encuentra en la línea
de código 28.
Paso 5. Agregar el Bean a la aplicación el
nombre man_articulos, colocarse en el paquete controladores y
presionar clic boton derecho .

New->other->JavaServer Faces->JSF Managed Bean

Nombre y Ubicacion
Nombre de la clase : man_articulos
selecccionar : Add data to Configuration file
name= man_articulos
Scope:session

Anexar el siguiente código a la clase.


Este controlador se está utilizando para ejecutar los procesos que el
usuario realizara en la vista, por ejemplo cuando quiera consultar todos
los productos, un artículo en particularidad, agregar nuevos artículos o
modificar un existente.

En la línea 3 se está importando la clase articulo(entidad en el modelo


MVC), en la línea 4 para el manejo de excepciones de SQL, en la línea 5
se utiliza para poder crear listas y la línea 6 para poder crear arreglos.

las líneas 7 y 8 las puedes omitir ya que no se utilizarán para este


ejemplo.

en la línea 9 se está importando la clase modelo_articulo(clase


encargada de realizar las operaciones SQL)

en la línea de código 12 se está definiendo un objeto con el nombre


actual (este contendrá una lista de tipo articulo) de tipo artículo.

en la línea 13 se está creando una lista la cual será de tipo articulo

en la línea 14 set está definiendo una una variable de tipo String

En la línea 15 se está creando un constructor de la clase man_articulos

en la línea 16 defiendo el objeto actual de tipo artículo.

En la línea 17 se está creado el objeto modelo de tipo modelo_articulo

en la línea 19 se le esta asignando a Lista el resultado del método


obtener artículos que está en el modelo modelo articulo.

en la línea 28 se está definiendo el metodo getActual el cual retorna el


contenido del objeto actual que es de tipo artículo.
en la línea 42 se esta defiendo el metodo getLista que retorna una lista
de tipo artículo. El cual esta almacenado en el objeto Lista.

en la línea 49 set esta definiendo el metodo setLista el cual recibe una


lista y el valor recibido se lo asigna al objeto Lista.
Paso 6. Adicionar la entidad con el nombre articulo (se debe de crear
una entidad por tabla de la base de datos en el caso las vaya a utilizar
todas)

colocarse en el paquete entidades y presionar clic botón derecho

New->Java Class

Nombre y Ubicacion
Nombre de la clase : articulo
proyecto : base_proyecto
ubicacion: Source Packages
paquete :entidades

Agregar las siguientes líneas de código.


cómo puede observar en esta clase se han creado los miembros y
propiedades tanto de lectura y escritura de cada miembro, recuerde
que puede utilizar el método de encapsulamiento de campo para
generar el Código de la entidad

Paso 7. Adicionar un modelo con el nombre modelo_articulo

colocarse en el paquete modelos y presionar clic botón derecho

New->Java Class

Nombre y Ubicacion
Nombre de la clase : modelo_articulo
proyecto : base_proyecto
ubicacion: Source Packages
paquete :modelos
Agregar las siguientes líneas de código.

Como puede observar en modelo se colocaran todas las instrucciones Select,


Insert, Update y Delete que serán utilizados por el controlador.
En la línea de código 3 se están importando las clase Conexion
En la línea de código 4 se está importando la entidad artículo, esto con el
objetivo de una lista con este tipo de entidad, las demás lineas import son de las
clases que se utilizan el el modelo y que fueron descritas en los
ejemplos anteriores.

En el modelo se ha creado un método con el nombre obtener_articulos() el


cual retornara una lista de tipo artículo, y si hay un error manda un mensaje de
error de tipo SQLException( La palabra clave throws se utiliza para identificar
la lista posible de excepciones que un método puede lanzar. Para la mayoría de
las subclases de la clase Exception, el compilador Java obliga a declarar qué
tipos podrá lanzar un método. Si el tipo de excepción
es Error oRuntimeException, o cualquiera de sus subclases, no se aplica
esta regla, dado que no se espera que se produzcan como resultado del
funcionamiento normal del programa. Si un método lanza explícitamente una
instancia de Exception o de sus subclases, a excepción de la excepción
deruntime, se debe declarar su tipo con la sentencia throws. La declaración
del método sigue ahora la sintaxis siguiente:
type NombreMetodo( argumentos ) throws excepciones { })

En las líneas 15 y 16 se esta creando la conexión a la base de datos utilizando


la clase Conexion
En la línea 17 a asignando a la variable SQL la intruccion Select

En la línea 18 se esta creado un objeto de tipo PreparedStatement y se está


definiendo la conexion a utilizar y la instrucción SQL a ejecutar la cual puede
ser una select, insert, update y delete, para este caso no lleva parámetros,
pero más adelante veremos un método que si lleva parámetros.
En la línea 19 se está asignando el resultado de la instrucción select al objeto
rs que es de tipo ResulSet.
En la línea 20 se está creando una lista de tipo articulo la cual será un
arreglolist de articulo, esta lista contendrá un vector que almacenara una
matriz de tipo articulo.
En la linea 20 se hace un recorrido del objeto rs que contiene el resultado de la
instruccion select.
En la línea 23 se está creando un objeto de tipo artículo en la cual se estará
asignando cada registro del objeto rs.
de la línea 24 a la línea 29 se están asignado los datos del objeto rs al objeto
entidad que es de tipo articulo.
En la línea 30 se está adicionando el objeto entidad a la lista que se definió en
la línea 20.

En la línea 32 se está cerrando el objeto rs.


En la línea 32 se está cerrando la conexión utilizando el método clase de la
clase conectar.
En la linea 34 se esta retornando la lista.

En el modelo se ha creado un método con el


nombre obtener_articulos_nombre(String nombre) el cual retornara una
lista de tipo articulo, este método recibirá un parámetro de tipo string en la
variable nombre y si hay un error manda un mensaje de error de tipo
SQLException.
En la línea 40 se asignando a la variable SQL la intruccion Select la cual se
está definiendo un parámetro el cual se hace con
el símbolo de interrogación(?).
En la línea 41 se está creado un objeto de tipo PreparedStatement y se
está definiendo la conexión a utilizar y la instrucción SQL a ejecutar la cual
puede ser una select, insert, update y delete, para este caso lleva parámetros
según la variable SQL.
En la línea 42 se le están asignando los valores a los parámetros de la
instrucción select, para este proceso se utiliza los métodos set de clase
PreparedStatemen la cual utiliza dos parámetros el primero indica la posición
del parámetros(estos son tomados de izquierda a derecha de las instrucciones
sql comenzando con índice 1), el segundo parámetro es el valor a asignar.
para este caso es '%'+nombre+'%', recuerde que los % son los comodines de
las instrucción llike.

De la línea 43 a la 58 ya fueron explicados anteriormente.


paso 8. Adicionar un Faceles con el nombre articulo y adiciona el
código Siguiente:

<?xml version='1.0' encoding='UTF-8' ?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Mantenimiento de Articulos</title>
</h:head>
<h:body>
<h:dataTable var="art" value="#{man_articulos.lista}"
border="1">
<h:column>
<f:facet name="header">
<h:outputText value="Codigo"></h:outputText>
</f:facet>
<h:outputText value="#{art.artCodigo}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nombre"></h:outputText>
</f:facet>
<h:outputText value="#{art.artNombre}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Precio"></h:outputText>
</f:facet>
<h:outputText value="#{art.artPrecio}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Stock"></h:outputText>
</f:facet>
<h:outputText value="#{art.artStock}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Categoria"></h:outputText>
</f:facet>
<h:outputText value="#{art.catCodigo}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Proveedor"></h:outputText>
</f:facet>
<h:outputText value="#{art.proCodigo}"></h:outputText>
</h:column>
</h:dataTable>

</h:body>
</html>
Paso 9. En el código anterior buscar el segmento de código siguiente:
En este código se utiliza para mostrar el resultado de la instrucción
select en un tabla.

en la línea 10 se esta definiendo una tabla con un alias art definido en la


propiedad var de <h:datatable> y se le están asignando los valores a
mostrar en la propiedad value la cual se la ha asignado el valor que
esta retornando el método lista del bean man_articulos que está en el
paquete controladores.( el método a invocar es getLista el cual
esta retornando una lista de tipo articulo),

En la línea 11 se está definiendo una columna y en la línea 12 se está


definiendo el encabezado de la columna y en la linea 15 se esta
indicando el valor a mostrar en esa columna para la cual se le indica en
un objeto de tipo outputText en la propiedad value (art.artcodigo
indica el objeto actual y que mostrar el código de articulo ver la
definición de man_articulos)

en la línea 16 se cierra la definición de la columna y las demás líneas de


código se utilizan para definir cada una de las columnas de la tabla.

ejemplo: Cuando ejecute el proyecto usted visualizara el contenido de la


tabla de articulo de la forma siguiente.
cómo puede observar está mostrando en una tabla el resultado del
método man_articulos.lista que retorna una lista de tipo articulo

Paso 11. En este paso adicionar el


Siguiente código al contralador mant_ariculos

Como puede observar en este código se está definiendo un método con


el nombre buscar() el cual no está retornando ningún valor
En la línea 25 se está creando un objeto de tipo modelo_articulo el cual
contiene las instrucciones sql(insert, update, delete y select) que se
utilizaran en el proyecto.
En la línea 27 se está asignado a la variable lista el resultado del método
obtener_articulos_nombre y se le está pasando el parámetro del valor
que retorna el método getArtNombre este método lo encuentra en la
clase articulo.

Paso 12. En este paso adicionar el siguiente código al faceles


articulo.xhtml

En este caso puede observar que se está agregando un formulario en el


cual se está preguntando el nombre del articulo y que el valor ingresado
por el usuario se está colocando el objeto actual y se está llamando
el método set artNombre, la action del commandbutton se está
llamando el metodo buscar del bean man_articulos ( ver
el código del bean man_articulos específicamente el método buscar).

el código del faceles quedaría de la siguiente manera.

<?xml version='1.0' encoding='UTF-8' ?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<h:head>
<title>Mantenimiento de Articulos</title>
</h:head>
<h:body>
<h:form id='form'>
<h:outputLabel>Nombre del Articulo :</h:outputLabel>
<h:inputText id="identification"
value="#{man_articulos.actual.artNombre}"/>
<h:commandButton value="Buscar"
action="#{man_articulos.buscar()}"/>
</h:form>
<br></br>
<h:dataTable var="art" value="#{man_articulos.lista}" border="1">
<h:column>
<f:facet name="header">
<h:outputText value="Codigo"></h:outputText>
</f:facet>
<h:outputText value="#{art.artCodigo}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Nombre"></h:outputText>
</f:facet>
<h:outputText value="#{art.artNombre}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Precio"></h:outputText>
</f:facet>
<h:outputText value="#{art.artPrecio}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Stock"></h:outputText>
</f:facet>
<h:outputText value="#{art.artStock}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Categoria"></h:outputText>
</f:facet>
<h:outputText value="#{art.catCodigo}"></h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="Proveedor"></h:outputText>
</f:facet>
<h:outputText value="#{art.proCodigo}"></h:outputText>
</h:column>
</h:dataTable>
</h:body>
Paso 13. Cuando ejecute el proyecto vera la siguiente, todos
los artículos pero tiene una caja de texto para escribir el nombre del
producto a buscar, escriba en la caja de texto cer y presione clic en
el botón buscar y le mostrara la información filtrada en base al texto que
usted dígito.
Como puede observar ahora le está mostrando la información filtrada en
base al texto digitado en la caja de texto.

También podría gustarte