Inicialmente Java tenía una kit de herramientas para crear interfaces gráficas denominada “Abstract Window Toolkit” (AWT). Simplificando, el funcionamiento de la misma consiste en llamadas a subrutinas del sistema operativo. Por ejemplo, al crear un botón o un cuadro de comprobación se llama a la subrutina correspondiente del S.O. Pero esto puede ser una ventaja o desventaja según se mire, ya que un cuadro de comprobación es distinto en cada sistema operativo. En el fondo, cada elemento tienes sus peculiaridades en cada sistema operativo y, por tanto, AWT sólo contiene los aspectos comunes que pueden ser invocados en cualquier sistema. Otra desventaja no menos importante es que hay desarrolladores a los que les gusta que sus “creaciones” se “vean” igual en cualquier plataforma, esto con AWT no es posible
.
En estas apareció Swing para solucionar estos “problemas”. ¿La clave? Utiliza Java 2D para invocar subrutinas de bajo nivel en vez de utilizar el módulo de interfaz de usuario de alto nivel del S.O. Es decir, el elemento es el mismo en cualquier plataforma.
Entrar en todos los detalles de una interfaz gráfica nos daría para escribir un libro. Es por eso que sólo quiero hacer una pequeña introducción a los aspectos básicos de la misma.
Leer el resto de la entrada »
Con motivo de la asignatura Diseño y Desarrollo de Arquitecturas Web que este cuatrimestre voy a impartir en modalidad presencial y online he pensado que puede ser interesante hacer una serie de screencast explicando ciertos conceptos o tecnologías incluidos en el temario.
Aquí dejo la primera creación
, tiene dos partes por la limitación de espacio en YouTube. ¿Críticas? Todas, pero sobretodo la falta de calidad en la imagen. No me preocupa mucho en estos dos vídeos ya que están muy comentados y no es muy difícil seguirlos pero… no hay excusa. El próximo irá mejor.
Parte 1: http://www.youtube.com/watch?v=qMvALOI6G7Y
Parte 2: http://www.youtube.com/watch?v=Kwh_VpNZ2-E
También dejo el código fuente de la clase creada. De esta forma podéis verlo ya que en el vídeo queda borroso. HolaMundo
Una funcionalidad muy utilizada cuando se desarrollan aplicaciones de gestión es la de formulario maestro-detalle. Un formulario de este tipo realmente está compuesto por dos: maestro y detalle. De tal forma que al introducir los datos de búsqueda en el formulario principal aparecen en el formulario detalle los datos asociados a los primeros.
Por ejemplo, en el formulario principal podemos tener un campo de texto para introducir el DNI y mostrar en el formulario detalle el listado de productos comprados por esa persona.
¿Y como se hace esto en Java? Muy sencillo. Creamos una serie de elementos gráficos que harán las veces de formulario principal (JTextField, JComboBox, etc.) e incluimos debajo de este una tabla donde aparecerán los distintos registros asociados a la búsqueda.
Como no podía ser de otro modo la clase que implementa en Java la tabla es JTable. Mucho hay escrito sobre el manejo de la misma (por ejemplo, aquí, aquí o aquí) por lo que sólo me voy a centrar en cómo “rellenarla” con datos.
Leer el resto de la entrada »
Una pregunta muy común en los alumnos cuando se inician en la secta Java es cómo “rellenar” de elementos un JComboBox. Si visitamos el API de Java vemos que el método necesario para añadirlos es ‘addItem‘. Siendo la primera tentación pasarle como parámetro un String con el titulo a mostrar. Esto es correcto ya que String, como cualquier clase en Java, hereda de Object y, por tanto, es un parámetro válido.
Pero… si la declaración del método addItem nos indica que podemos pasar por parámetro un objeto de la clase Object (o una subclase de esta, como String), ¿por qué no pasar un objeto de una clase creada por nosotros y, de esta forma, utilizar un JComboBox de forma similar a un Vector, como una colección de objetos?
Por ejemplo, pensemos que tenemos una aplicación que gestiona productos de cualquier tipo y queremos que al seleccionar un producto obtengamos los datos de dicho producto para mostrarlos por pantalla. Lo interesante sería guardar los objetos de la clase Producto dentro de combo y seleccionar el deseado.
La forma de actuar es sencilla… añadir los objetos de Producto en el combo.
Leer el resto de la entrada »
Una de las funcionalidades más solicitadas en Java es la utilización de un fichero de propiedades. Este tipo de ficheros se suele utilizar para guardar parámetros de configuración del sistema. Por ejemplo, rutas, nombres de ficheros, mensajes, … Su estructura es:
clave1 = valor1
clave2 = valor2
….
Veámos como podemos acceder fácilmente a cada uno de esos valores.
Leer el resto de la entrada »
Existen varias opciones a la hora de conectarse desde una aplicación Tomcat a una base de datos .
Nosotros lo haremos contra una base de datos MySQL. Y para ello necesitaremos el driver que descargaremos de la web de MySQL. Sólo hay que copiar el fichero mysql-connector-java*.jar en el directorio WEB-INF/lib/.
Veamos dos formas diferentes de realizar una conexión. Aunque nos quedaremos con la segunda siempre es bueno conocer otras opciones menos válidas y saber los motivos.
Opción 1: En el servlet Control
- Creamos un atributo para la conexión
- private Connection Conexion = null;
- Creamos un método estático getConexion que devuelva una conexión con la base de datos, creándola si no existe.
- Sobreescribimos el método destroy para asegurarnos que se cierra la conexión con la base de datos una vez que se destruye el servlet.
Leer el resto de la entrada »
Muchas veces puede ser necesario filtrar todas las peticiones que se hacen a un servlet para realizar operaciones de control antes y después de la misma. Por ejemplo, controlar la conexión con la base de datos.
¿Y como se hace esto en Tomcat? Pues lo de siempre, una clase que implementa una interfaz y un cambio en la configuración del web.xml para que filtre las peticiones a un servlet. Vamos por partes…
Leer el resto de la entrada »
Ya llevamos con esta 8 entradas sobre Tomcat donde se han explicado diferentes funcionalidades. Pero tal vez nos falta una visión global de como implementar una aplicación web.
Existen muchas opciones pero tal vez la más recomendable sea aplicar el patrón Modelo-Vista-Control. ¿Y en que consiste? Pues muy fácil, que todas las peticiones pasen por un único punto, Control, que dependiendo de la acción a realizar ejecutará un modelo u otro. Este modelo redirige la petición hacia la vista (una JSP) correspondiente.
Leer el resto de la entrada »

NOTA: esta entrada es para la versión 2.1 de Apache Tiles.
En una entrada anterior estuvimos hablando de cómo crear una librería de etiquetas JSP. En la presente vamos a utilizar una que nos permita crear un sistema de plantillas.
¿Pantillas? Sí, plantillas. Para no repetir código y estructurar nuestra página de forma correcta. Hasta ahora creabamos una página JSP que contenía todo el código: cabecera, menú lateral, pie y centro. Pero, ¿que sucede si quiero crear una nueva página que tenga la misma cabecera, menú y pie, pero con distinta parte central? Pues que si no utilizamos plantillas y obviamos el uso de la librería de etiquetas que viene con JSP, tendríamos que copiar el mismo código.
Para evitar esta situación aparece Apache Tiles que, como se indica en su página, es un marco de plantillas diseñado para simplificar el desarrollo de interfaces de usuario de aplicaciones Web. Tiles permite definir a los autores de la página fragmentos (tiles) que pueden montarse en una página completa en tiempo de ejecución. Estos fragmentos se pueden utilizar simplemente con el fin de reducir la duplicación de los elementos de la página o para desarrollar una serie de plantillas reutilizables. Estas plantillas agilizan el desarrollo de una aplicación completa.
Tiles creció en popularidad como un componente de Struts. Posteriormente fue extraído de Struts y ahora está integrado con diversos frameworks.
Leer el resto de la entrada »
En esta entrada crearemos nuestra propia librería de etiquetas que defina nueva funcionalidad reutilizable en distintas JSPs.
¿Cómo lo vamos a hacer? Lo primero será definir la etiqueta (nombre, atributos, cuerpo, etc) en un fichero denominado Tag Lib Description (TLD). Después crearemos la clase (o clases) Java que implementa la funcionalidad y configuraremos el fichero web.xml para que la aplicación “conozca” la nueva librería. Finalmente la utilizaremos en una página de prueba.
El ejemplo que seguiremos es el de una etiqueta que muestra el resultado de la operación matemática que se le indique como atributo.
Leer el resto de la entrada »