19 de diciembre de 2011

Struts 2 - Parte 4: Scopes de Objetos Web

Cuando estamos desarrollando una aplicación web debemos almacenar información que será procesada de distinta manera. Dependiendo de cuál sea el propósito de esta información querremos que tenga un tiempo de vida más corto o más largo, alguna información deberá permanecer disponible durante todo el momento que viva nuestra aplicación, mientras que otra solo nos interesará que viva durante una petición. Además habrá información que pertenecerá a cada usuario que acceda a la aplicación y que deberá estar disponible sólo para el usuario correspondiente.

Estos tiempos de vida son llamados scopes, y en las aplicaciones web tenemos un cierto número de ellos. Es importante conocer estos scopes y ver qué tipo de información es conveniente colocar en cada uno de ellos. A la información que colocamos en los distintos scopes les llamamos atributos.

También algunas veces es necesario tener un acceso directamente a los objetos del API de Servlets, como el "HttpServletRequest", o el "ServletContext", o a los parámetros de la petición,

Struts 2 nos proporciona una forma simple y elegante, además de diversa, para manejar todas estas cosas y en este tutorial aprenderemos estas maneras ^_^.

5 de noviembre de 2011

Sun Certified Java Programmer 6, CX-310-065 - Parte 2: Orientación a Objetos

En este segundo post para la certificación de Java 6 hablaremos sobre conceptos de la orientación a objetos, que abarca temas como la herencia, el polimorfismo, la cohesión, bajo acoplamiento (loose coupling), etc.

22 de octubre de 2011

Struts 2 - Parte 3: Trabajo con Formularios

En el desarrollo de aplicaciones web, una de las partes más importantes que existen (sino es que la más importante) es el manejo de datos que son recibidos del usuario a través de los formularios de nuestra aplicación.

Aunque es algo que usamos (y hacemos) todos los días, el manejo de los datos de los formularios puede ser un poco engañoso, por no decir complicado, cuando comenzamos a trabajar con la recepción de múltiples valores para un mismo parámetro, o cuando de antemano no conocemos los nombres de los parámetros que recibiéremos; esto sin mencionar las validaciones para los distintos tipos de datos, la carga y descarga de archivos, etc.

En este tutorial aprenderemos la forma en la que se trabaja con formularios en Struts 2, y cómo manejar todas las situaciones mencionadas anteriormente. Concretamente aprenderemos cómo hacer 7 cosas: recepción de parámetros simples, cómo hacer que el framework llene de forma automática los atributos de un objeto si es que todos los datos del formulario pertenecen a ese objeto, a recibir múltiples valores para un mismo parámetro, cómo recibir parámetros cuando no conocemos el nombre de los mismos, a realizar validaciones de datos de varias maneras, cómo subir archivos al servidor, y cómo enviar archivos desde el servidor hacia nuestros clientes.

21 de junio de 2011

Struts 2 - Parte 2: OGNL

OGNL es el acrónimo de Object Graph Navigation Language, un lenguaje de expresiones muy poderoso que nos permite leer valores de objetos Java. Este lenguaje nos permite leer valores y ejecutar métodos (que regresen algún valor) para mostrar los valores o resultados de los mismos en nuestras páginas JSP creadas usando las etiquetas de Struts. Además proporciona una conversión automática de tipos que permite convertir datos desde texto HTTP a objetos Java.

En este tutorial aprenderemos a usar este sencillo pero poderoso lenguaje dentro de nuestras aplicaciones, así como los objetos implícitos que tiene y cómo acceder a ellos. Además veremos cómo obtener valores de constantes, variables, y elementos enumerados, que se encuentran en nuestras clases.

19 de junio de 2011

Struts 2 - Parte 1: Configuración

Cuando desarrollamos aplicaciones web es importante que estas puedan ser creadas de forma rápida y eficiente. Hoy en día existen muchos frameworks, los cuales nos proporcionan un cascarón para las aplicaciones. Nosotros solo debemos implementar la lógica propia de la aplicación, configurar el framework mediante algún mecanismo como anotaciones o archivos XML, y estos se encargan de hacer la mayor parte del trabajo tedioso o repetitivo.

Struts 2 es un framework para el desarrollo de aplicaciones web, el cual hace que la implementación de las mismas sea más sencillo, más rápido, y con menos complicaciones. Además hace que estas sean más robustas y flexibles. El objetivo de Struts 2 es muy sencillo: hacer que el desarrollo de aplicaciones web sea simple para los desarrolladores.

En esta serie de tutoriales veremos cómo desarrollar aplicaciones usando este framework web, cómo configurar el controlador que implementa Struts 2, y las distintas opciones que nos ofrece.

23 de abril de 2011

Log4j para Creación de Eventos de Log

El uso de logging o de bitácoras dentro del contexto de desarrollo de aplicaciones constituye insertar sentencias dentro de la aplicación, que proporcionan un tipo de información de salida que es útil para el desarrollador. Un ejemplo de logging son las sentencias de rastreo o de seguimiento que colocamos en la aplicación para asegurarnos de que esta haya pasado por los flujos adecuados. Esto normalmente es realizado usando "System.out.println".

El problema con este tipo de sentencias, es que algunas veces olvidamos quitarlas después de que han servido a su propósito específico, y terminamos con una aplicación que genera cientos o miles de salidas innecesarias a la consola. Otro problema es que todas las llamadas tienen el mismo significado, es decir, no podemos saber exactamente cuál sentencia representa una salida de debug (que seguramente olvidamos quitar), cuál representa una salida de información últil, y cuál representa un error que se ha generado; las tres se ven exactamente igual para nosotros.

En este tutorial aprenderemos cómo usar log4j, un framework especializado para el logging o creación de bitácoras en las aplicaciones Java. También veremos dos formas distintas de configurarlo y las diferencias entre ambas formas.

22 de febrero de 2011

Instalación de un Servidor de Desarrollo - Parte 4: Conexión Apache + Tomcat

En el artículo anterior de la serie de la instalación de un servidor de desarrollo vimos cómo instalar y configurar el Servidor HTTP Apache versión 2.2 y el contenedor de Servlets y JSPs Apache Tomcat versión 7.0.

Ahora veremos cómo configurarlos para que el servidor Apache sirva como punto de entrada de las peticiones que se realicen al Tomcat. De esta forma podremos tener sitios estáticos y sitios dinámicos y no necesitaremos entrar por un puerto especial para unos y por otro para otros. Además posteriormente veremos cómo esto nos puede servir para que Apache sirva todos los recursos estáticos, como imágenes, archivos javascript, archivos css, etc., y que Tomcat sirva los recursos dinámicos.

21 de febrero de 2011

Instalación de un Servidor de Desarrollo - Parte 3 : Instalación de Java, MySQL, Apache, y Tomcat

En el tutorial anterior de la serie (personalización del prompt) explicamos de forma muy breve las ventajas que nos daba tener un servidor de desarrollo para la fase de implementación de nuestros proyectos, además vimos cómo agregar un poco de color a nuestro prompt.

Una parte importante de un servidor de desarrollo son las herramientas con las que este cuente (que dependerán un poco de los tipos de proyectos y políticas de nuestra empresa/trabajo/grupo de desarrollo) y que nos facilitarán este tan arduo pero gratificante trabajo ^_^.

Instalaremos varias aplicaciones para este fin, como un servidor para control de versiones de código fuente, un servidor de integración continua, una aplicación para reportes de incidencias, etc. Además veremos cómo integrar todas estas herramientas con nuestro IDE de cabecera, el NetBeans, para trabajar de una forma integral.

En este tutorial aprenderemos a instalar las versiones más recientes de las herramientas básicas con las que contará nuestro servidor (entre las cuales se encuentra el JDK de java). En este tutorial instalaremos los siguientes servicios:

Y veremos cómo configurarlos para que arranquen junto con nuestro servidor.

20 de febrero de 2011

Instalación de un Servidor de Desarrollo - Parte 2 : Personalizando el Prompt

Hace un par de años hice un tutorial sobre cómo podíamos virtualizar un sistema Linux usando Virtualbox. La idea de aquel tutorial era montar un servidor de desarrollo para llevar el control de las aplicaciones que nos encontrábamos desarrollando. Por asares del destino no pude continuar con aquella serie, pero creo que ya es momento para seguir con aquella serie :D.

Un servidor de desarrollo nos ayuda, como su nombre lo dice, mientras estamos en la fase de desarrollo de nuestra aplicación. Este nos proporciona algunas herramientas que nos facilitarán la vida como programadores. Además también nos proporciona un ambiente "seguro" para probar que nuestra aplicación (principalmente las web) no hagan alguna cosa indebida o no causen problemas en nuestro servidor de producción (¿nunca han matado el servidor al subir un cambio no probado, o borrado por error una base de datos? ^_^!).

El servidor que usaremos ahora será un poco distinto de que habíamos instalado. Seguimos usando un servidor con Debian, pero en vez de usar la versión 5, usamos la versión 6. De la misma forma que la vez anterior, solo instalamos el sistema base, sin ningún paquete adicional (todo lo iremos instalando de forma manual o casi manual).

6 de febrero de 2011

Spring 3 - Parte 4: Ciclo de Vida de los Beans

En los tutoriales anteriores hemos visto cómo trabajar configurar beans, tanto con anotaciones como con archivo de configuración en XML, y cómo cablearlos a las propiedades de otros beans.

Sin embargo Spring nos proporciona mecanismos para controlar la creación de beans y ejecutar ciertas acciones en las distintas etapas del ciclo de vida de nuestros beans.

En este tutorial aprenderemos cómo controlar cuándo deben ser creadas las instancias de los beans y a crearlos a través de un método estático de factoría, además de recibir notificaciones cuando un bean es creado y antes de que sea destruido.

2 de enero de 2011

Spring 3 - Parte 3: Inyección de Colecciones

En el tutorial anterior vimos cómo hacer la configuración de Spring para poder hacer el cableado o wiring de propiedades simples, ya fuera un valor constante o una referencia a un objeto.

Esto es muy útil cuando esperamos solo una referencia o un valor, ¿pero qué ocurre en el caso en el que necesitemos hacer la inyección de varios objetos? Java proporciona un conjunto de clases que nos permiten manejar conjuntos de objetos. Estas clases son conocidas como colecciones.

En este tutorial aprenderemos cómo realizar la inyección de dependencias en 3 tipos de colecciones ("List", "Set", y "Map") y, adicionalmente, aprenderemos a inyectar propiedades ("properties") y arreglos ("arrays"). Además veremos cómo insertar valores nulos en las propiedades de nuestros beans.