martes, 22 de diciembre de 2015

Validar Formularios en Spring MVC

Uno de los temas más importantes en cuanto a la seguridad y la prevención de errores es la validación de los datos de entrada de los usuarios en el servidor. No podemos limitarnos a realizar validaciones únicamente en el cliente, ya que de forma muy fácil se pueden saltar estos mecanismos, y la
Spring Logo
validación por ejemplo mediante javascript en el navegador se utiliza para mejorar la experiencia del usuario, pero nunca debe ser un sustituto de la validación en el servidor.

No es necesario validar los datos en los métodos del controlador, desde la versión 3 de Spring Framework, tenemos compatibilidad con la API de validación de Java (JSR-303) y no es necesaria ninguna configuración adicional, basta con incluir una implementación de la API como Hibernate Validator en las librerías del proyecto:

sábado, 19 de diciembre de 2015

Formularios con Spring Tags

En el artículo anterior sobre Spring MVC vimos cómo procesar un formulario con etiquetas HTML, sin embargo Spring dispone de una librería de TAGS que podemos utilizar para crear vistas y enlazarlas con el modelo.

En este ejemplo vamos a ver cómo realizar un sencillo formulario mediante las etiquetas de Spring y recibirlas en el controlador.


El código completo del ejemplo esta disponible en mi repositorio de github.

En primer lugar es necesario definir la librería en la página JSP mediante:
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %>

jueves, 17 de diciembre de 2015

Threads o Hilos en Java con Ejemplos

En muchas ocasiones nos interesa  que nuestro programa en Java realice varias tareas a la vez y de esta forma enriquecer la experiencia del usuario. ¿ Te imaginas un navegador web que no permita navegar por Internet hasta que no termine de descargar un archivo?



Un programa en Java se ejecuta en un Thread o Hilo principal, que es invocado cuando se ejecuta el método main. Pero nosotros podemos crear múltiples hilos, en Java no tenemos un límite máximo para cuántos podemos crear, el límite lo impone el sistema operativo y la memoria disponible para nuestro programa.




Existen 3 formas de crear hilos en Java:

miércoles, 16 de diciembre de 2015

Aprender a programar en Java

Muchas veces he recibido correos electrónicos y o leído en foros de personas que quieren iniciarse en el mundo de la programación, o ya saben algún lenguaje y quieren aprender Java. 
En mi opinión la mejor forma de aprender a programar en Java es mediante un buen curso presencial, con una buena cantidad de horas donde el profesor no esté pillado de tiempo. Sin embargo, en algunos casos no tenemos esa posibilidad ya sea por trabajo, por dinero, o porque simplemente no los realizan en tu ciudad.

En el caso de no poder realizar un curso, la segunda mejor opción es hacer uso de los recursos de los que disponemos en Internet junto con algún libro. Discrepo bastante de esas respuestas de los foros en las que envían a la gente directamente a la documentación de Oracle sin más, es uno de los mejores recursos, sí, pero personalmente considero que es más un complemento a la formación.

Los libros en español muchas veces no están actualizados, pero eso no debe frenarte ya que de lo que se trata es de aprender los fundamentos del lenguaje y la sintaxis.


Libros que Recomiendo:

lunes, 14 de diciembre de 2015

Información del Sistema de Archivos en Java - FileSystem

La clase FileSystem representa el sistema de archivos.  Es dependiente de la plataforma por lo que no podemos crear un objeto directamente, sino que es necesario utilizar el método estático getDefault() de la clase FileSystems:

FileSystem fs = FileSystems.getDefault();

En el siguiente ejemplo se muestra:
  • Listado de las unidades de almacenamiento disponibles
  • Formato del sistema de archivos (NTFS, FAT...)
  • Espacio Total del disco
  • Espacio Libre del disco
  • Listado de los directorios raíz del sistema.

viernes, 11 de diciembre de 2015

Recibir parámetros de un formulario con Spring MVC

Uno de los elementos más utilizados en una aplicación web son los formularios, y Spring MVC nos provee una forma de utilizarlos bastante elegante en mi opinión. En este ejemplo veremos como
procesar los datos recibidos de un formulario HTML.



El código completo del ejemplo lo puedes encontrar en mi repositorio de GitHub






En primer lugar vamos a ver un formulario html  y como Spring MVC es capaz de recoger esos parámetros enviados y recibirlos en un controlador:

viernes, 4 de diciembre de 2015

Hola Mundo con JavaFX: Stage, Scene, Node y Scene Graph

En este artículo vamos a crear nuestro primer programa utilizando Java Fx 8, veremos su estructura y analizaremos las distintas partes de las que se compone.

Cuando creamos un nuevo proyecto tenemos disponibles varias alternativas para iniciarlo:
Nuevo Proyecto JavaFX
Nuevo Proyecto en JavaFX

Básicamente son plantillas para evitarnos escribir código o crear nuevos archivos. La opción de JavaFX Application es la opción base, pero resultan más interesantes las siguientes, como Preloader que se utiliza para mostrar una pantalla inicial con alguna información, por ejemplo si debe cargar datos o realizar acciones que pueden demorarse se mostraría una ventana de con una barra de progreso, lo que mejora mucho la experiencia de usuario, ya que ejecutar un programa y esperar unos segundos a que se inicie sin saber que está pasando suele disgustarnos a todos.

martes, 1 de diciembre de 2015

Ejemplos de RequestMapping en Spring MVC

En este artículo vamos a profundizar en el uso de los controladores en Spring MVC. En el ejemplo anterior donde configurábamos Spring mediante Java, vimos un controlador lo más sencillo posible, ahora vamos a ver una serie de ejemplos de uso de los controladores.


Como ya habrás adivinado, la anotación @Controller define un Controlador y no es necesario implementar ningún interface o extender de una clase como en otros frameworks. El DispatcherServlet se encarga de delegar las peticiones HTTP en nuestros controladores, y según la petición ejecutar una funcionalidad.



Lo más interesante es cómo mapear estas peticiones y generar una respuesta, para ello utilizamos la anotación @RequestMapping.

viernes, 27 de noviembre de 2015

Configuración Básica de Spring MVC mediante Java.

En este primer ejemplo de configuración de Spring MVC se realizará completamente con código Java, sin nada de XML. Consiste en un sencillo Hola Mundo con Spring. Para ello utilizaré como herramientas:


Maven
Netbeans 8.0.2
Tomcat 8.0.28
Spring 4.2.2

Podéis descargar el código fuente del proyecto en mi respositorio de GitHub: https://github.com/Jaime-Alonso/TutorialSpringMVC

Cuando un usuario hace una solicitud a nuestra aplicación web, como mínimo incluye la URL, pero también puede contener información adicional como por ejemplo la enviada a través de un formulario.

La primera parada de la solicitud es del Dispatcher Servlet de Spring, que cómo otros frameworks, procesa todas las solicitudes mediante un servlet frontal que delega la responsabilidad en otros componentes de la aplicación, normalmente llamados controladores. El Dispatcher Servlet tiene que decidir que controlador elegir en cada caso.

Es habitual en la lógica del controlador que se procese una respuesta con información hacia el usuario, y con un formato normalmente HTML. La tarea del controlador es empaquetar los datos del modelo, asignar una vista correspondiente (normalmente un JSP) y devolverlo al Dispatcher Servlet.

jueves, 26 de noviembre de 2015

Introducción a SQLite en Android

Una pequeña introducción teórica antes de poner las manos en el código.

SQLite es un sistema de gestión de bases de datos que ha triunfado, sobre todo en entornos embebidos y esta presente no sólo en Android, sino también en iOS y en Blackberry y en un montón de sistemas con "relativamente" poca potencia.

Las características que hacen SQLite como la base de datos más popular en dispositivos móviles, entre otras son:
  • Consume muy poca memoria.
  • Fácil de usar.
  • Es de Libre Disponibilidad

miércoles, 18 de noviembre de 2015

Layouts en Java FX

Uno de los desafíos en la construcción de interfaces gráficas es mantener el orden, la posición y el tamaño de los elementos de nuestra aplicación, a la vez que se puede cambiar el tamaño de ventana y mantener una experiencia agradable al usuario. La API de Java FX nos provee de una serie de Layouts para los casos más comunes.

Todos trabajan como contenedores de otros layout o de controles. 

martes, 17 de noviembre de 2015

RecyclerView - Ejemplo.

RecyclerView es un Widget o componente introducido en la librería de soporte v7, junto con otro componente llamado CardView. Aunque es considerado como un ListView avanzado, realmente es un componente muy flexible que permite mostrar colecciones de datos.

De forma predefinida tenemos 3 opciones:


  • LinearLayoutManager
  • GridLayoutManager
  • StaggeredGridLayoutManager
Obviamente se podría implementar un Layout Manager personalizado.

Para implementar un RecyclerView son imprescindibles las siguientes Clases:

lunes, 16 de noviembre de 2015

Introducción a JavaFX - Herramientas Necesarias


¿Que es JavaFX?
Podríamos decir que es una biblioteca de clases para la creación de Interfaces Gráficas de Usuario, y permite el desarrollo de aplicaciones de escritorio mediante Java o aplicaciones embebidas en el navegador web.
Pero no se queda en un simple conjunto de controles, algunas de sus características destacables son:

  • Es posible dar un estilo moderno a nuestra aplicación mediante CSS. 
  • Aprovecha la GPU o hardware gráfico para mejorar el rendimiento.
  • Utiliza el patrón MVC, separando el diseño de la lógica de la aplicación.
  • Soporta Multitouch.
  • Es posible reproducir contenido web multimedia.
  • Incluye una API Canvas.
  • Es posible embeber páginas web mediante un WebView que utiliza la tecnología Webkit. Mediante JavaScript se puede llamar a la API de Java y viceversa.
En cuanto a los modos de ejecutar una aplicación utilizando JavaFx tenemos 4 vías diferentes:
  1. Como un programa independiente, es decir, el típico archivo jar.
  2. Lanzar la aplicación utilizando un servidor remoto mediante Web Start, es decir, mediante un enlace en una web o un acceso directo en el escritorio cargaría la aplicación de forma remota.
  3. Se puede embeber la aplicación en el navegador web.
  4. Como aplicación independiente autónoma, incluyendo su propia copia del JRE por lo que el usuario no necesita tener instalado Java.


Una pregunta que se suele plantear a menudo es ¿JavaFX está diseñado para sustituir a Swing? La respuesta es Sí, pero hay que matizar que hay una enorme cantidad de código escrito en Swing en especial aplicaciones empresariales, por lo que aún le queda recorrido, sin embargo, Java FX se ha posicionado claramente para sustituir a Swing.

Ejemplos con JAVAFX
Si quieres ver algunos ejemplos de lo que se puede hacer con JavaFx los tienes disponibles en la web de Oracle
Para descargar: 
Para ver en el navegador mediante plugin: 

Las herramientas necesarias que debes instalar son:

JDK 8 y JavaFx Scene Builder (en el apartado de Adicional Resources) Las dos descargas en el siguiente enlace: http://www.oracle.com/technetwork/java/javase/downloads/index.html

Un IDE, preferiblemente Netbeans 8 o superior en https://netbeans.org/downloads/ que, aunque se pueden utilizar otros, Netbeans es el mejor soportado hasta la fecha.

En próximas entradas del blog sobre JavaFx veremos ejemplos y código en detalle para crear una aplicación de escritorio.



domingo, 15 de noviembre de 2015

El patrón de diseño Singleton en Java

El patrón de diseño Singleton restringe la creación de instancias a una clase y se asegura de que sólo existe una instancia de la clase en la máquina virtual de Java, es decir, sólo podemos tener un objeto de la clase por aplicación.



En este artículo analizaré ciertas formas de llevarlo a cabo y los problemas que derivan de cada implementación.






sábado, 14 de noviembre de 2015

Mi primera App "Hola Mundo" con Android Studio

En este tutorial de programación Android vamos a ver como crear nuestro primer proyecto, ver la estructura de directorios que se genera por defecto y lanzar nuestra aplicación en el emulador.





Vamos a comenzar pulsando Start a new Android Studio project






El nombre de la aplicación la llamaré "Hola Mundo"
Company Domain es importante por que genera el nombre del paquete (Package name), el nombre del paquete debe ser único, no pueden haber dos aplicaciones con el mismo nombre de paquete en un dispositivo. Si observas se puede editar el que genera automáticamente.
Y por último donde vamos a guardar nuestro proyecto en Project location.

viernes, 13 de noviembre de 2015

Recursos de aprendizaje sobre Programación Android


Estos son algunos de los enlaces que tengo como favoritos en mis marcadores, relacionados principalmente con el mundo de programación Android. Seguramente existan muchos más, los iré actualizando.
Se Agradecen sugerencias!





Guía de Material Design:




Librerías:

Herramientas Extra:

BLOGS EN INGLÉS:
BLOGS EN ESPAÑOL:
RECURSOS OFICIALES:

Canal Oficial de Android Developers en YOUTUBE.

Blog Oficial de Android Developeres:

Web Oficial de Android Developers: