Sie sind auf Seite 1von 55

Curso de Programacin con Java

Descubre cmo desarrollar aplicaciones Web con Java. Estudiaremos desde


conceptos de la Programacin Orientada a Objetos con Java, conexiones a
Bases de Datos con JDBC, y finalmente creamos una aplicacin Web Dinmica
del MUNDO REAL utilizando Servlets y JSPs.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

Curso de Programacin con Java

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

Curso de Programacin con Java

La tecnologa Java adems de ser un lenguaje de programacin, es una


plataforma, con la cual podemos crear aplicaciones Empresariales, Mviles y de
Escritorio para distintas plataformas.
El lenguaje de programacin Java en sintaxis es muy similar a la manejada en
el lenguaje C++ y nos va a permitir crear todo tipo de aplicaciones que se utilicen
de manera convencional en los lenguajes de programacin. La tecnologa Java
nos provee de herramientas para compilar, interpretar, documentar y empaquetar
nuestras clases.
Al da de hoy la plataforma Java es una de las mejores posicionadas para
desarrollos empresariales y se ha convertido en el lenguaje predilecto para el
desarrollo de software a la medida en aplicaciones de misin crtica.
Existe una gran variedad de productos y empresas entorno al desarrollo de
herramientas y soporte para la tecnologa Java, esto permite que podamos
seleccionar entre herramientas con la orientacin de software libre o comercial.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

Curso de Programacin con Java

El lenguaje Java tiene las siguientes caractersticas generales:


Orientado a Objetos: Los objetos agrupan en estructuras encapsuladas tanto
sus datos como los mtodos (o funciones) que manipulan esos datos.
Distribuido: Java proporciona una coleccin de clases para su uso en
aplicaciones de red, que permiten abrir conexiones con servidores o clientes
remotos.
Simple: Por simplicidad nos referimos a que Java utiliz varias de las
caractersticas de lenguajes como C y C++, eliminando las cuestiones que
consider ms complejas. Algunas caractersticas son la herencia simple,
manejo de la memoria, entre otras.
Multi-hilos: Java permite ejecutar varias tareas a la vez, en el cual cada
subproceso es un proceso ms ligero que si se creara un nuevo proceso desde
cero.
Seguro: La Java Virtual Machine (JVM) no permite que nuestra aplicacin utilice
recursos fuera del espacio y recursos asignados.
Independiente de Plataforma: Java tiene independencia de plataforma al crear
un cdigo intermedio, que conocemos como Bytecode. Este cdigo puede ser
ejecutado en cualquier plataforma.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

Curso de Programacin con Java

Caractersticas de la mquina virtual:


La mquina virtual de Java (JVM-Java Virtual Machine) nos va a permitir ejecutar
el cdigo generado por el compilador, esto se conoce como Bytecodes (archivo
con extensin .class).
Este archivo .class es compactado y modificado para que sea ms eficiente para
la mquina virtual que ejecutar el programa.
Los archivos con extensin .class son independientes de plataforma, mientras
que la JVM a utilizar depende del sistema operativo sobre el cual se trabaje.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

Curso de Programacin con Java

En Java, a diferencia de otros lenguajes, la asignacin de memoria es de


manera dinmica. El espacio que se reserva para cada uno de los objetos
durante el proceso de asignacin de memoria (memory allocation) como la
desasignacin (DeAllocation) son administrados por la JVM.
El proceso del recolector de basura a diferencia de otros lenguajes se va a
ejecutar cada cierto tiempo, nosotros no podemos mandarlo llamar de manera
directa, solo podemos indicar la programacin de la tarea con la instruccin
System.gc(); que significa garbage collector.
El recolector de basura es un proceso que se va a ejecutar para revisar si
existen objetos que ya no estn siendo referenciados por ninguna de las
variables. Podemos lograr esto asignando el valor de null a las variables que
estn referenciando a los objetos Java.
El recolector de basura buscar dichos objetos que ya no estn siendo
referenciados por ninguna variable y eliminar el espacio que previamente le fue
asignado al objeto. Cabe mencionar que el proceso de recolector de basura es
una especificacin tambin de la mquina virtual, por lo que cada
implementacin del proceso de recoleccin de basura va a depender de la
plataforma en la cual se este ejecutando.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

Curso de Programacin con Java

En la figura podemos observar un ejemplo de clases ya compiladas, y el proceso


de ejecucin de las clases Java.
Partimos de 2 clases, llamada TestEmpleado y Empleado, las cuales tienen una
dependencia. Una vez que hemos compilado la clase TestEmpleado.java se
genera su archivo .class (bytecodes), y para la ejecucin de esta clase, si est
en la misma computadora se carga directamente del disco duro, pero si es un
applet se va a cargar de la red o podra cargarse de alguna otra fuente.
Java tiene el concepto de ClassLoader, el cual se encarga de colocar en
memoria las clases (.class) que se van a utilizar en la ejecucin de nuestro
programa.
Posteriormente, se verifica si los bytecodes a utilizar son correctos y finalmente
el Intrprete va a permitir ejecutar nuestro programa.
Para ejecutar el programa sobre la plataforma seleccionada, existen dos
maneras:
El intrprete puede convertir las instrucciones a nivel de la plataforma que
hemos seleccionado.
Lnea a lnea, se va a ejecutar cada una de las lneas de nuestro programa.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

Curso de Programacin con Java

Java tiene varios productos para poder crear aplicaciones dependiendo de


nuestras necesidades.
Java Standar Edition (JSE): Como primer producto tenemos la versin
estndar, la cual nos va a permitir crear aplicaciones de escritorio como puede
ser procesadores de texto u hojas de clculo.
Java Enterprise Edition (JEE): La versin empresarial nos va a permitir crear
aplicaciones multicapas, Web, orientadas a comercio electrnico, servicios
Web, entre otro tipo de aplicaciones.
Java Micro Edition(JME): La tercera versin es la micro-edition, con esta
podemos crear aplicaciones para celulares, PDA y cualquier dispositivo mvil
que sea compatible con la plataforma Java.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

Curso de Programacin con Java

Una clase Java se compone de varios elementos que permitirn crear objetos e
interactuar entre los mismos.
Los elementos ms bsicos son:

Nombre de la Clase
Atributos
Constructores
Mtodos

A continuacin vamos a revisar la sintaxis de cada uno de estos elementos.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

Curso de Programacin con Java

Una clase ser nuestra plantilla a partir de la cual vamos a crear objetos. Para
crear nuestra plantilla vamos a utilizar la sintaxis mostrada en la figura.
Ejemplos de modificadores vlidos para declarar una clase son: public, abstract y
final.
El asterisco utilizado en la sintaxis significa que puede repetirse varias veces, por
ejemplo podemos declarar muchos atributos y/o muchos mtodos en nuestras
clases.
El nombre de la clase puede ser cualquier identificador vlido, normalmente este
nombre es un sustantivo y se recomienda respetar la nomenclatura de altas y
bajas, esto es, si tenemos el nombre de la clase MiClase, cada palabra, en este
caso tiene dos palabras Mi y Clase, por cada palabra su primer letra debe de
estar en mayscula.
Posteriormente, como parte de nuestra clase, podemos agregar los atributos,
constructores y mtodos. Lo que se encuentra dentro de estas llaves se conoce
como el cuerpo de la clase.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

10

Curso de Programacin con Java

Los atributos representan una caracterstica de nuestra clase.


Primero se especifica, de manera opcional, los modificadores, pudiendo utilizar
ms de uno a la vez. Ejemplos de modificadores son: public, private, static, final,
entre otros.
Posteriormente indicamos el tipo de dato. En Java, al crear una variable, es
necesario primero declararla antes de utilizarla. Adems el tipo de dato de igual
manera debe indicarse. El tipo puede ser primitivo o puede ser un tipo Object.
Despus indicamos el nombre de la variable que estamos declarando.
Opcionalmente podemos iniciar la variable con algn valor.
Al indicar el nombre de la variable se recomienda utilizar la notacin de altas y
bajas, pero a diferencia de una clase, la primera letra debe ser minscula, por
ejemplo: apellidoMaterno.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

11

Curso de Programacin con Java

El comportamiento de una clase lo vamos a definir a travs de los mtodos de


una clase.
Al igual que la declaracin de una clase y en la declaracin de un atributo, los
modificadores son lo primero que vamos a tener en la definicin de un mtodo.
Ejemplos de modificadores son: private, public , final, abstract y static.
Despus de los modificadores, tenemos el tipo de retorno, el cual puede ser
void, un tipo primitivo o un tipo Object. La palabra reservada void se usa en caso
de que el mtodo no regrese ninguna informacin.
Posterior al tipo de retorno encontramos el nombre del mtodo. Se recomienda
la misma nomenclatura utilizada en la declaracin de variables.
Por ejemplo: private void modificarNombre(String nombre){ }

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

12

Curso de Programacin con Java

Para crear una clase que herede las caractersticas de una clase padre (super
clase) basta con agregar la palabra extends e indicar el nombre de la clase
padre.
Una clase en Java nicamente puede heredar de una sola clase, a este
concepto se le conoce como herencia simple.
Para solventar de alguna manera la herencia simple, Java, introduce el concepto
de Interfaces, las cuales estudiaremos ms adelante.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

13

Curso de Programacin con Java

Observamos que en el diagrama UML la clase Empleado y la clase Gerente.


La clase Empleado tiene los atributos nombre, puesto y nivel, adems del
mtodo getNombre().
La clase Gerente tiene el atributo departamento, pero al heredar de la clase
Empleado hereda las caractersticas de la clase Empleado, en este caso hereda
el mtodo pblico getNombre(). Los atributos de la clase padre no los est
heredando en este caso debido a que son privados.
Ms adelante estudiaremos los modificadores de acceso y veremos cmo
afectan en el tema de herencia.
Con el concepto de Herencia en Java evitamos duplicar cdigo, ya que cierta
parte del cdigo se va a heredar a las clases hijas, segn los modificadores de
acceso que hayamos utilizado.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

14

Curso de Programacin con Java

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

15

Curso de Programacin con Java

Los modificadores de acceso controlan quienes pueden utilizar cada una


de las caractersticas de la clase que estamos definiendo.

Los modificadores de acceso se pueden aplicar a la definicin de una


clase, un atributo o un mtodo de una clase.

La tabla muestra las posibles combinaciones de cada uno de los


modificadores.

Existen cuatro tipos de modificadores de acceso y la flecha indica el orden


de menos a ms restrictivo.

* La palabra default no es una palabra reservada, a diferencia de public,


protected y private.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

16

Curso de Programacin con Java

El modificador private es el ms restrictivo. Por el momento vamos analizar


nicamente cmo aplican los modificadores a atributos y mtodos de la Clase1.
Podemos observar en la tabla, que para el caso del modificador private,
nicamente la misma clase es quien podr acceder al atributo y mtodo que se
haya definido como privado. Esto evita que por error sean modificados los
valores de algn atributo declarado como privado.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

17

Curso de Programacin con Java

El modificador de acceso default o package permite que el atributo o mtodo


declarado con este modificador de acceso, pueda ser accedido por la misma
clase o por clases definidas en el mismo paquete. Pero evita que puedan ser
accedidos por clases fuera del mismo paquete, sin importar que sean subclases.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

18

Curso de Programacin con Java

El modificador de acceso protected permite que un atributo o mtodo declarado


con este modificador, pueda ser accedido desde la misma Clase, una clase en el
mismo paquete, o una subclase aunque est en otro paquete.
Este tipo de modificador es muy utilizado cuando usamos herencia, debido a su
flexibilidad de acceso con las clases hijas sin importar si estn en el mismo o en
otro paquete.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

19

Curso de Programacin con Java

Y por ltimo el modificador de acceso public permite que atributos o mtodos


que utilicen dicho modificador puedan ser accedidos desde cualquier clase, ya
sea ella misma, otra clase en el mismo paquete, una subclase en otro o el
mismo paquete, y cualquier otra clase en cualquier otro paquete.
Para qu nos sirve en la prctica estos modificadores de acceso?. Los
modificadores de acceso son de inters al diseador de la clase, pudiendo
establecer "niveles de confianza", es decir, permiten indicar en qu clases confa
para acceder y/o utilizar sus clases, constructores, atributos o mtodos.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

20

Curso de Programacin con Java

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

21

Curso de Programacin con Java

La sobreescritura de mtodos tiene que ver directamente con el concepto de


Herencia.
El concepto de sobreescritura se refiere a la habilidad de una subclase para
modificar el comportamiento heredado de una clase padre. Por comportamiento
nos referimos a la funcionalidad de alguno de los mtodos heredados.
La firma del mtodo sobreescrito por una subclase debe ser igual que el padre
en: nombre, tipo de retorno y lista de argumentos.
En la firma del mtodo lo nico que puede variar es el modificador de acceso,
pero un mtodo sobreescrito no puede ser menos accesible que el mtodo que
sobreescribe (ej. Si el mtodo padre es public, no puede cambiarse a protected
en la clase hija).

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

22

Curso de Programacin con Java

Polimorfismo es la habilidad de tener distintas formas o comportamientos en


tiempo de ejecucin.
Como podemos observar en la figura, si un objeto de tipo Gerente es creado
(new Gerente()), se almacena en la memoria heap (memoria donde se
almacenan los objetos en Java), y este objeto siempre ser de ese tipo.
Posteriormente asignamos la referencia de ese objeto a la variable de tipo
Empleado. Podemos observar que la variable de tipo empleado no tiene acceso
al mtodo getDepartamento, debido a que no es un mtodo en comn entre la
clase Empleado y la clase Gerente.
Pero vemos que s se puede ejecutar el mtodo obtenerDetalles(), ya que es un
mtodo en comn entre la clase Empleado y Gerente.
Aqu la pregunta es: Qu mtodo se ejecuta, el de la clase padre o el de la
clase hija?, la respuesta es, toma prioridad el mtodo de la clase hija, debido
a que el objeto que se cre inicialmente fue un objeto de tipo Gerente.
Esta habilidad para ejecutar mtodos de una clase o de otra, dependiendo de los
tipos que estn en memoria, se conoce como polimorfismo.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

23

Curso de Programacin con Java

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

24

Curso de Programacin con Java

Las clases abstractas nos van a permitir generalizar todava ms nuestro


cdigo. La intencin de la clase padre abstracta, es definir las caractersticas que
las clases hijas debern seguir e implementar.
En el ejemplo mostrado, el mtodo dibujar de la clase padre
(FiguraGeometrica), no tiene sentido que se dibuje, debido a que se tiene que
especificar qu tipo de figura es la que se va a dibujar (alguna subclase).
La subclase Rectangulo es la clase responsable de implementar la
funcionalidad del mtodo dibujar heredado de la clase padre.
Si una clase contiene un mtodo abstracto, la clase se debe declarar tambin
como abstracta.
Una clase abstracta puede contener mtodos abstractos y no abstractos,
adems un mtodo abstracto no tiene cuerpo, y solo termina con punto y coma.
Una clase abstracta no se puede instanciar, esto es debido a que algo abstracto
no puede materializarse en un objeto. Lo que si podemos hacer es crear
variables de tipo de la clase abstracta que almacenen referencias a subclases y
as llamar los mtodos en comn entre la clase padre y la subclase (mtodo
dibujar).

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

25

Curso de Programacin con Java

Una interface es una forma en comn de comunicarse en diferentes dispositivos


o sistemas. Es un contrato entre un proveedor y un cliente de cierto servicio.
Podemos entender una interface como la manera en que ciertos componentes
se van a comunicar definiendo un conjunto de mdulos o componentes para
establecer una comunicacin estndar entre distintos sistemas.
Tambin podemos entender una interface como la forma en que nos
comunicamos, es la forma en que nos enviamos informacin uno a otro.
El concepto de Interface en Java sustituye de alguna manera la necesidad del
uso de herencia mltiple.
Una interfaz en Java se utiliza para agregar comportamiento a las clases que
implementan a dicha interfaz, por ello es comn que el verbo en ingles (able)
se utilice en algunas interfaces del API de Java, como son Serializable, Clonable,
etc.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

26

Curso de Programacin con Java

En Java una interface es una declaracin formal de un contrato, en la cual los


mtodos no contienen ninguna implementacin, siendo las clases que
implementen a la interfaz las responsables de agregar dicho comportamiento.
Los atributos declarados en una interface son por default pblicos, estticos y
finales.
Los mtodos declarados en una interface por default son pblicos, abstractos y
no contienen ninguna implementacin (terminan con punto y coma).
Una interface puede heredar de otra interface, pero no de una clase concreta. Ej.
public interface Interface1 extends Interface2 { }
Una interface sigue la misma nomenclatura que el nombre de una clase.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

27

Curso de Programacin con Java

Una clase puede implementar muchas interfaces utilizando la palabra


implements. Como en una clase abstracta, no podemos crear objetos de una
interface, pero s podemos crear variables de tipo Interface que apunten a
objetos que implementaron dicha Interface.
Los mtodos que se declararon en la interfaz son abstractos y no tienen ninguna
implementacin, entonces la clase que implementa dicha interface esta obligada
a implementar los mtodos de la interface, muy similar a lo que ocurre con las
clases abstractas. Es aqu donde las clases se obligan a cumplir con el contrato
previamente establecido en la interfaz, agregando comportamiento segn se
requiera.
El concepto de interfaces es muy utilizado en patrones de diseo y buenas
prcticas de programacin, las cuales veremos ms adelante.
Algunos otros comentarios respecto a las interfaces:
Muchas clases pueden implementar la misma interface.
Una clase puede implementar a su vez muchas interfaces, con esto logramos
minimizar el impacto de no poder utilizar herencia mltiple en Java.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

28

Curso de Programacin con Java

Esta es una pequea gua, para saber las diferencias entre una clase abstracta y
una interface.
Una clase abstracta se utiliza para encapsular funcionalidades comunes entre
las clases, es decir caractersticas. Para hacer uso de una clase abstracta
debemos utilizar la palabra extends e indicar la clase abstracta de la cual
queremos heredar.
Por otro lado, una interface define comportamiento relacionado que puede tomar
como propio cualquier clase. Para hacer uso de una interface debemos utilizar
la palabra implements e indicar la interface que queremos implementar.
Como recomendacin, las clases abstractas deben utilizarse principalmente para
objetos estrechamente relacionados, mientras que las interfaces son ms
adecuadas para proporcionar funcionalidad comn a clases no relacionadas.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

29

Curso de Programacin con Java

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

30

Curso de Programacin con Java

JDBC es un conjunto de clases e interfaces que nos permiten conectarnos a una


o varias BD (Bases de Datos). Cada BD implementa las clases e interfaces del
API JDBC para crear lo que se conoce como un controlador de BD.
Con JDBC podemos escribir cdigo Java para conectarnos a una o ms BD,
ejecutar sentencias SQL, ejecutar Stored Procedures, Funciones de Base de
Datos, entre varias tareas ms.
Como podemos observar en la figura tenemos una representacin de una
aplicacin web. Por un lado tenemos a nuestro cliente y por el otro lado de una
intranet/internet tenemos el servidor web.
Normalmente las aplicaciones Web tiene la necesitad de guardar informacin en
una base de datos, es por ello que existe el API JDBC.
Esta API nos va a permitir establecer una comunicacin entre nuestra aplicacin
web y nuestro servidor de base de datos, con ello vamos a poder ejecutar
sentencias y extraer informacin, la cual finalmente se muestra nuevamente a
nuestro cliente.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

31

Curso de Programacin con Java

Vamos a revisar los pasos bsicos para utilizar JDBC.


En la figura se muestran los pasos necesarios para ejecutar una sentencia SQL
desde una clase Java hacia una base de Datos
1. Descargar el driver dependiendo de la base de datos que vamos a utilizar.
2. Agregamos el controlador al classpath de la aplicacin.
3. Creamos una clase de Java y realizamos los siguientes pasos:
- Agregar el cdigo para registrar el driver JDBC respectivo
- Agregar el cdigo para crear una conexin a la base de datos
- Crear un objeto Statement que nos va a permitir ejecutar el query que
deseamos
- Ejecutar la sentencia SQL que hayamos seleccionado
- Cerrar la conexin de base de datos que hayamos abierto
Estos son los pasos mas bsicos para poder utilizar JDBC en nuestras
aplicaciones Java.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

32

Curso de Programacin con Java

La interfaz Statement es la ms bsica de las interfaces para ejecutar una


sentencia SQL, al ejecutar un SQL en repetidas ocasiones, el objeto Statement
compila en cada ocasin al SQL que queremos ejecutar.
La interfaz PrepareStatement hereda de la interfaz Statement y puede
almacenar de manera precompilada una sentencia SQL, por lo que es una
opcin ms eficiente si es que necesitamos ejecutar cierto query en repetidas
ocasiones. A su vez tambin podemos especificar parmetros en el query a
ejecutar.
Y por ltimo la interfaz CallableStatement se utiliza para llamar a un Stored
Procedure (procedimiento almacenado) el cual puede regresar informacin en
forma de un cursor, un tipo de dato en especfico o algunas otras formas en caso
de requerir procesar el resultado.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

33

Curso de Programacin con Java

Vamos a revisar el uso de Statement en JDBC, la interface Statement tiene los


siguientes mtodos:
Mtodos para hacer un select.
Mtodos para ejecutar alguna instruccin de modificacin de datos.
Mtodos para cualquier otra sentencia de tipo SQL.
El mtodo excecuteQuery se utiliza para ejecutar sentencias SELECT y por ello
el mtodo regresa un objeto ResultSet, el cual almacena los registros en forma
de una matriz de dos dimensiones (renglones y columnas) con ello podemos
procesar como resultado del query.
El mtodo executeUpdate nos sirve para ejecutar sentencias DML(Data
Manipulation Language), como son los comandos: INSERT, UPDATE Y
DELETE, tambin nos va a permitir ejecutar sentencias DDL (Data Definition
Language), como son las sentencias Create Table, Trunc table, etc., esta funcin
regresa un entero, indicando el nmero de registros afectados debido a la
ejecucin del query.
Y por ultimo el mtodo execute nos sirve para ejecutar cualquier tipo de
sentencia de SQL, este mtodo regresa un valor booleano, regresa verdadero si
el resultado es un ResultSet (si es que se ejecuto un select), si es otro tipo de
query el que se ejecut, distinto a un select, regresa falso, pero tambin con ello
vamos a poder ejecutar, tanto select como sentencias insert, update entre otras.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

34

Curso de Programacin con Java

Una aplicacin empresarial en Java se compone de distintas capas, cada capa


tiene una funcin muy especfica. Dividir una aplicacin en capas tiene varias
ventajas, como son separacin de responsabilidades, mejores mantenimientos a
la aplicacin y especializacin de los programadores en cada una de las capas.
JDBC es un API que se utiliza en la capa de acceso a datos, por lo que su rol es
muy importante en una aplicacin Java Empresarial. Como podemos observar
en la figura la capa de cliente normalmente puede ser un navegador web, una
aplicacin de escritorio o una aplicacin mvil entre otro tipo de clientes.
Posteriormente tenemos la capa web que puede residir en un servidor web, las
tecnologas mas bsicas que podemos encontrar en este servidor web son los
JSPs y los Servlets.
Despus encontramos la capa de negocio, en esta capa podemos encontrar
tecnologa como son los Enterprise Java Beans (EJBs) o frameworks como
Spring.
Y por ltimo, encontramos una capa de acceso a datos, aqu vamos a encontrar
tecnologas como JDBC, Hibernate, entre otras. Este cdigo nos va a permitir
comunicarnos con nuestra base de datos para leer y almacenar informacin en
ella.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

35

Curso de Programacin con Java

La cohesin y el acoplamiento juegan un rol central en el diseo de software. Al


disear nuestros mdulos se requerirn cambios posteriores, por lo que su
diseo puede impactar de manera directa en el tiempo y costo asociado para
realizar dichos cambios.
La cohesin es la medida en la que un componente se dedica a realizar
solamente la tarea para la cual fue creado, delegando las tareas
complementarias a otros componentes.
El acoplamiento mide el grado de dependencia entre dos o ms elementos.
Estos elementos pueden ser mdulos, clases o cualquier componente de
software.
Hay que tomar en cuenta que una alta cohesin puede provocar un alto
acoplamiento, debido a que un componente que es pequeo (alta cohesin)
necesita de ms elementos para completar una tarea, por lo que se incrementa
el nmero de relaciones entre los componentes (alto acoplamiento), por ello es
necesario introducir el concepto de balance, el cual permite tener un equilibrio
entre los conceptos de cohesin y acoplamiento.
La divisin en capas de manera lgica en una arquitectura JEE, introduce un
bajo acoplamiento y una alta cohesin de manera automtica, ya que el nmero
de relaciones entre cada capa es el menor posible, y cada capa tiene
responsabilidades muy especficas.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

36

Curso de Programacin con Java

Una patrn de diseo es una gua, que puede involucrar varias clases y que a su
vez nos permite resolver un problema que se presenta de manera repetitiva.
Cuando hablamos de las capas de una arquitectura JEE, cada capa puede tener
varios patrones de diseo como podemos observar en la figura.
En la capa de presentacin podemos observar el patrn MVC (Modelo Vista
Controlador), y su objetivo es dividir las responsabilidades en estos 3 rubros. El
patrn DTO (Data Transfer Object) representa un objeto del dominio del
problema. Este patrn aparece en las 3 capas debido a que se utiliza para
transferir una entidad o una lista de entidades de cierto tipo entre las distintas
capas de la aplicacin.
En la capa de Servicio o Negocio, tenemos el patrn Business Delegate el cual
se encarga de los detalles en la llamada a algn mtodo de servicio. A su vez
tenemos el patrn Service Locator, el cual es utilizado por el patrn Business
Delegate para localizar los servicios cuando se utiliza el directorio Java JNDI.
En la capa de datos tenemos el patrn DAO, el cual se encarga de extraer y
almacenar informacin en la base de datos, utilizando los objetos DTO y/o de
entidad.
Existe un catlogo extenso de patrones de diseo para Java el cual se puede
consultar en: http://java.sun.com/blueprints/corej2eepatterns/Patterns/index.html

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

37

Curso de Programacin con Java

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

38

Curso de Programacin con Java

Un sitio Web contiene informacin esttica (HTML, Imgenes, etc.)


Una aplicacin Web maneja informacin dinmica, la cual se inicia con la
peticin de un cliente y el resultado puede provenir de distintos medios de
informacin.
Internet o WWW (World Wide Web) permiti crear sitios y aplicaciones Web,
que puede ser accedidos desde Internet o una Intranet.
Existe una gran variedad de aplicaciones Web que cubren distintos negocios o
giros, como son tiendas virtuales, noticias en internet, redes sociales, etc.
Estaremos trabajando con una arquitectura similar a la mostrada en la figura
para crear nuestras aplicaciones Web.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

39

Curso de Programacin con Java

Podemos observar en la figura el proceso de una peticin a una aplicacin Web.


Un cliente inicia la peticin solicitando un recurso Web y posteriormente el
Servidor Web, en nuestro caso Tomcat, procesar la peticin del cliente.
Finalmente, el Servidor Web regresar la respuesta al cliente con la informacin
solicitada. As es como se establece una comunicacin entre los navegadores
Web y los Servidores Web en Java.
Los siguientes mtodos permiten procesar los cabeceros con la clase
HttpServletRequest
getParameter()
getParameterValues()

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

40

Curso de Programacin con Java

Un

Servlet es una clase de Java que permite procesar peticiones Web.

Permite

leer informacin del cliente Web (parmetros de peticin).

Permite generar una respuesta para mostrar al cliente (HTML y archivos


binarios como PDF, Audio, Video, etc.).
Un

Servlet contiene cdigo Java, y puede agregar cdigo HTML como


respuesta, aunque esto no es la tarea ms comn de un servlet.
Un

Servlet se utiliza como una clase que controla el flujo de una aplicacin Web
(Controlador) en una arquitectura MVC (Model View - Controller).

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

41

Curso de Programacin con Java

Los JavaServer Pages (JSPs) son componentes del lado del servidor, especializados en
manejar cdigo HTML, e incrustar cdigo Java por medio de etiquetas (tags).
Los JSPs son utilizados como componentes de presentacin, es decir, para mostrar la
informacin obtenida o procesada por los Servlets.
Al compilarse un JSP se crea un Servlet de manera automtica. Por ello el ciclo de vida
de un JSP es muy similar al de un Servlet.
Un JSP se utiliza como un componente de presentacin (Vista) en una arquitectura
MVC (Model View - Controller).

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

42

Curso de Programacin con Java

En total son 8 los mtodos soportados por el protocolo HTTP. Los cuales son
Options, Get, Head, Post, Put, Delete, Trace y Connect.
Los mtodos ms utilizados son el GET y POST.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

43

Curso de Programacin con Java

Como podemos observar tenemos la estructura de una aplicacin web.


Dentro de la carpeta de Web Pages encontramos todos los elementos de
nuestra aplicacin web.
Todo lo que est fuera de la carpeta WEB-INF se conoce como informacin
pblica, esto es, es accesible a travs de un navegador Web. Y lo que est en la
carpeta WEB-INF se conoce como informacin privada, la cual no es accesible
desde un navegador Web.
En la carpeta WEB-INF encontraremos los archivos de configuracin (web.xml),
las clases a utilizar (dentro de la carpeta de classes) y las libreras que se
lleguen a utilizar en la aplicacin (carpeta de lib).

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

44

Curso de Programacin con Java

Un JSP se puede componer de expresiones, scriptlets y


declaraciones. Adems de manejar una sintaxis totalmente
compatible con un documento XML.
El conjunto de caracteres que se utilizan para abrir un elemento
JSP es <% %>
Cualquier elemento envuelto entre estas etiquetas ser
interpretado por el traductor JSP como elementos de este tipo.
Tenemos variantes del uso de estas etiquetas, resultando en 4
elementos bsicos:

Expresiones <%= %>


Scriptlets <% %>
Declaraciones <%! %>
Comentarios <%-- --%>

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

45

Curso de Programacin con Java

El alcance de una variable en una aplicacin Web tiene que ver con la duracin
de informacin en el servidor Web. Como podemos observar en la figura el
alcance de page es el de menor duracin, hasta llegar al alcance de nivel
aplicacin.
El servidor web tiene objetos que permiten administrar cada uno de los alcances
mencionados. Por ejemplo, si queremos agregar una variable llamada nombre al
alcance de request, tenemos que escribir: request.setAttribute( nombre ), y si
queremos
recuperar
el
valor
de
dicha
variable
escribimos:
request.getAttribute("nombre");
Vamos a explicar cada uno de los alcances disponibles en nuestro servidor Web:
page: Este alcance nicamente existe en los JSPs, no en los Servlets. Si se
agregan variables en este alcance, estarn disponibles nicamente durante la
traduccin del JSP (translation unit).
request: Este alcance, y los que vienen a continuacin estn disponibles tanto
para los JSPs como para los Servlets. El alcance de request mantendr la
informacin almacenada durante una peticin, es decir, desde que se recibe la
solicitud de un recurso hasta que se enva la respuesta al cliente.
session: Este alcance permite almacenar informacin durante un tiempo
determinado o el tiempo que la sesin del usuario est activa.
application: Este alcance permite almacenar informacin durante todo el tiempo
que est arriba la aplicacin Web.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

46

Curso de Programacin con Java

Un JavaBean, es simplemente una clase Java con un constructor vaco,


atributos privados, y por cada atributo su mtodo get y set relacionado (mtodos
de acceso a las propiedades).
El lenguaje de Expresin (EL) nos permite simplificar el despliegue de la
informacin al utilizar JSPs.
Un ejemplo de esta sintaxis es: ${nombreBean.nombrePropiedad}
La expresin anterior, indirectamente busca el objeto nombreBean en algn
alcance con el siguiente orden: page, request, session o application. Una vez
que se encuentra el objeto, manda a llamar el mtodo get asociado con la
propiedad indicada. En este ejemplo el cdigo Java equivalente sera:
nombreBean.getNombrePropiedad();
Opcionalmente podemos utilizar la notacin de arreglos para acceder a la
propiedad. Esta notacin tambin nos permitir acceder a elementos de tipo List,
Array, Map, entre otras estructuras de datos.
${nombreBean[nombrePropiedad]}
Tambin podemos acceder a propiedades de un JavaBean de manera anidada.
Ej. ${alumno.direccion.cp}

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

47

Curso de Programacin con Java

JSTL significa Java Server Pages Standard Tag Library. Esta librera extiende la
funcionalidad bsica de los tags de los JSPs.
JSTL maneja las siguientes libreras y cada librera contiene un conjunto de
etiquetas o tags:
core: Nos va a permitir leer y manipular datos as como iterar y agregar
condiciones y otras funcionalidades bsicas.
xml: Permite la manipulacin y transformacin de documentos XML.
sql: Tiene tags que nos van a permitir tanto ejecutar consultas a una base de
datos, as como crear conexiones a las mismas.
fmt: Permite dar formato a las cadenas que estemos manipulando, para
convertirlas por ejemplo de cadena a nmero o fecha, incluso esta librera nos
permite apoyarnos de los conceptos como es internacionalizacin o conocido en
ingls como (Locale).

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

48

Curso de Programacin con Java

Para poder utilizar las libreras de JSTL en nuestra aplicacin web, debemos
agregar el .jar de standar y el .jar de jstl a nuestro classpath.
Se deben de agregar dos jars debido a que uno es la especificacin en este caso
el .jar de standar, y otro es la implementacin en este caso el jar de jstl.
Para utilizar la librera seleccionada, debemos utilizar la notacin de taglib de
los JSPs. El atributo uri http://java.sun.com/jstl/core no significa que descargue
algo de internet, si no que simplemente nos va a resolver dentro de los jars que
ya tenemos en nuestra aplicacin web, posteriormente indicamos un prefijo, que
ser el que nos permita utilizar los tags como se muestra a continuacin:
<c:out value=${persona.nombre}>
<c:forEach var=persona items=${personas}>
//Elementos a iterar
</c:forEach>

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

49

Curso de Programacin con Java

Una sesin en una aplicacin Web permite administrar varias peticiones de un


mismo usuario.
La necesidad surge debido a que el protocolo HTTP es un protocolo sin estado,
esto significa que entre peticin y peticin no guarda ninguna informacin del
usuario que realiz dicha peticin.
Si analizamos un ejemplo de un carrito de compras, un usuario puede ir
seleccionando una serie de artculos conforme van navegando en una
aplicacin web. Para poder recordar necesita que artculos ya se agregaron al
carrito de compras, la aplicacin web "recordar" qu elementos ya ha
seleccionado el usuario.
Las sesiones en los Servlets se pueden manejar por medio de dos mecanismos:
Cookies
URL Rewritting
El API de los Servlets abstrae estos conceptos en una clase llamada
HTTPSession. El objeto HttpSession se obtiene a partir del objeto
HttpServletRequest (request). Por lo que una sesin se utiliza para administrar
las distintas peticiones(request) del usuario.
Una sesin se destruye al terminar el tiempo asignado a la sesin o si se
destruya manualmente. Este valor se puede modificar en el archivo web.xml

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

50

Curso de Programacin con Java

Existe un API de los Servlets utiliza varios mtodos para administrar el concepto
de sesiones.
De primera instancia es necesario utilizar el objeto HttpServletRequest para
obtener el objeto que administra la sesin, a travs del mtodo
requet.getSession().
Una vez que tenemos el objeto de sesin, podemos agregar y recuperar
informacin de la misma, utilizando los mtodos sesion.setAttribute() y
session.getAttribute().
Para eliminar un atributo de la sesin utilizamos el mtodo
sesion.removeAttribute() y para terminar la sesin utilizamos el mtodo
sesion.invalidate(). Este ltimo mtodo tambin eliminar cualquier atributo que
hayamos agregado previamente por medio del mtodo setAttribute.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

51

Curso de Programacin con Java

Otros mtodos importantes para el manejo de sesiones son:


isNew(): Este mtodo nos permite conocer si la sesin ha sido recientemente
creada, esto es, si es la primera peticin del cliente al servidor Web. Si el cliente
hace una segunda peticin al recurso web esta sesin ya ha sido creada
previamente y por lo tanto este mtodo isNew() regresar false.
getCreationTime(): Este mtodo permite conocer el momento en que se cre
la sesin Http.
getLastAccesedTime(): Este mtodo permite conocer la ltima vez en que la
sesin fue accedida por parte del cliente.
getMaxInactiveInterval(): Este mtodo permite conocer el tiempo de
inactividad con que se ha definido esta sesin y esto se mide en segundos.
Tambin cabe resaltar que este valor lo podemos modificar por medio del
mtodo setMaxInactiveInterval() y nos va a permitir especificar el tiempo de
inactividad que vamos a permitir que transcurra si es que el usuario no realiza
una peticin Http.
Este valor de inactividad tambin lo podemos configurar desde el archivo de
web.xml.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

52

Curso de Programacin con Java

El patrn de diseo MVC nos permite integrar a los Servlets, JSPs y a los
JavaBeans en un solo modelo para poder interactuar y as crear aplicaciones
web robustas, flexibles y fciles de mantener.
Los Servlets estn enfocados en controlar el flujo de la peticin HTTP.
Los JSPs estn enfocados en desplegar la informacin de la aplicacin Web.
La informacin que se comparte entre los componentes (Servlets y JSPs) suele
manejarse con JavaBeans.
Los servlets procesan las peticiones Http (Ej. Un Formulario Http) as como
tambin instancian los JavaBeans (Modelo) para almacenar la informacin y
finalmente redirecciona al JSP respectivo.
Los JSPs estn enfocados nicamente en desplegar la informacin de la
aplicacin WEB. La informacin es proveda por medio de los Servlets, utilizando
alguno de los alcances (request, session o application) para compartir
informacin con los JSPs. La informacin de la aplicacin se comparte a travs
de JavaBeans.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

53

Curso de Programacin con Java

Como se puede observar en el grfico, nuestro flujo inicia con un formulario


HTML. Una vez que nuestro cliente enva la peticin del formulario hacia nuestro
servidor WEB (ej. Tomcat) es un Servlet quien procesa la peticin HTTP (Paso
1).
Una vez que el Servlet controlador ha recibido la peticin ste la procesa.
Una vez procesados stos parmetros se apoya de un JavaBean para
almacenar o procesar la informacin lgica del negocio (Paso 2) Una vez creada
y almacenada la informacin en nuestros JavaBeans regresamos el control al
Servlet (Paso 3). Es comn que el controlador comparta la informacin
almacenada en los JavaBeans en algn alcance como puede ser request,
session o application.
Posteriormente el controlador hace un redireccionamiento (Paso 4) por medio
del objeto RequestDispacher al JSP que desplegar la informacin de los
JavaBeans. El controlador seleccionar el JSP segn la solicitud del usuario.
Finalmente el JSP seleccionado utilizar los JavaBeans, posiblemente
combinando JSTL (JSP Standar Tag Library) y EL (Expression Language) para
facilitar el despliegue de la informacin (Paso 5).

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

54

Curso de Programacin con Java

Podemos observar los pasos necesarios para completar el patrn de diseo MVC.
a) El servlet controlador procesa la peticin HTTP del cliente.
b) El servlet controlador ejecuta la lgica de negocio de la aplicacin.
c) El Servlet controlador, comparte los JavaBean con la informacin de la aplicacin en
algn alcance como request, session o application.
d) El Servlet controlador redirecciona la peticin al JSP que va a desplegar la
informacin (JavaBeans) compartida en cierto alcance.
e) El JSP despliega la informacin compartida por el Servlet Controlador y al terminarse
de procesar la peticin se enva HTML al cliente.

Todos los Derechos Reservados Global Mentoring 2011

Experiencia y Conocimiento para tu Vida

55

Das könnte Ihnen auch gefallen