Bienvenido a re-orientation! Esperamos que encuentres lo que buscas

Etiquetas

Soluciones eficientes combinando ArrayList HashSet y HashMap

Imaginaros que tenemos dos colecciones de objetos, la colección A y la colección B, donde B es un conjunto de objetos reducido de A. Si necesitáramos obtener, a partir de los datos anteriores, un contenedor C donde por cada elemento de A sepa si existe en el conjunto B o no, ¿como podríamos realizar esto de manera sencilla y sin necesidad de anidar bucles?

Hay varias formas de resolver el caso de uso anterior usando Java, en nuestro caso el objetivo es ilustrar el uso combinando de ArrayList, HashSet y HashMap, así que veremos una manera eficiente de implementar la solución.

Nos apoyaremos principalmente en la clase java.util.HashSet, que está pensada específicamente para trabajar con conjuntos y nos permite buscar de manera rápida elementos dentro de uno. Para modelar el ejemplo: A, será un HashList; B un HashSet; y el resultado del cruce, C, un HashMap...

Manual para desarrollar paso a paso una aplicación web con Spring Framework + Spring Security contra una base de datos MySQL

Implementando el controlador con Spring MVC. La clase GeneralController


Parte del manual paso a paso para desarrollar una aplicación web con Spring Framework + Spring Security contra una base de datos MySQL.

Ya tenemos nuestra clase de acceso a datos con la consulta personalizada y la clase de usuario personalizado con los nuevos atributos, nos queda implementar las redirecciones en función de los roles de usuarios autenticados y los recursos (las páginas) a los que accederán en cada caso.

Implementando nuestro proveedor de autenticación personalizado. La clase CustomJdbcDaoImpl

Una vez que ya tenemos nuestro SecurityUser, toca el turno a la clase a medida CustomJdbcDaoImpl que hemos declaramos en el security-context.xml. Vamos a centrarnos en las modificaciones a realizar en el proceso de recuperación de la información del usuario, y una vez más nos apoyaremos en las clases de Spring y las extendemos para incorporar información extra.

La nueva clase de acceso a datos CustomJdbcDaoImpl extenderá las funcionalidades de la clase de Spring JdbcDaoImpl incluyendo nuestra consulta personalizada (DEF_USERS_BY_USERNAME_QUERY) para recuperar la información del usuario buscando por el campo “username” del modelo de datos...

El mvc-core-config.xml. Configurando la navegación Spring MVC

Una vez configurados el security-context.xml, business-config.xml y datasource-config.xml; sólo nos queda por configurar el fichero donde declararemos la navegación a través de nuestra aplicación con Spring MVC Framework (mvc-core-config.xml).

En Spring MVC, las clases anotadas como Controladores (controllers), suplen a los servlets tradicionales. Su función es básicamente la misma (llevar el flujo de navegación) solo que la complejidad se reduce gracias a las facilidades que nos brinda el framework, como veremos posteriormente...

El datasource-config.xml. Configurando Spring JDBC

Para gestionar los accesos a la Base de Datos nos apoyaremos en Spring JDBC. Este framework se encargará de gestionar por nosotros las aperturas y cierres de conexiones, preparación y ejecución de los statements, la captura de exceptions asociadas, el manejo de transacciones, así como los cierres de statement/resultset...


Parte del manual paso a paso para desarrollar una aplicación web con Spring Framework + Spring Security contra una base de datos MySQL.

El business-config.xml. Configuración de la capa de servicios


Parte del manual paso a paso para desarrollar una aplicación web con Spring Framework + Spring Security contra una base de datos MySQL.

Vamos a trabajar ahora en la configuración de la capa de negocios (o capa de servicios) de nuestro proyecto, que centralizaremos en el fichero business-config.xml.

El security-context.xml. Configuración de Spring Security

Llegados a este punto, ya hemos introducido las dependencias a los módulos de Spring Security y especificado a nuestra aplicación donde encontrar la configuración de seguridad; sólo nos queda pendiente configurar el framework a través de nuestro fichero security-context.xml

Configurando las restricciones de acceso y un proveedor de autenticación personalizado

En nuestro caso, para securizar las URLs usaremos expresiones, lo que indicaremos declarando el atributo use-expressions en del elemento <http> a true...


Parte del manual paso a paso para desarrollar una aplicación web con Spring Framework + Spring Security contra una base de datos MySQL.

Creación del proyecto web con Maven y configuraciones básicas

Una vez creadas las tablas MySQL e insertados los datos contra los que se realizará la autenticación de los usuarios, vamos a crear el proyecto web Eclipse, definir el proyecto y declarar las dependencias en el pom.xml.

Para implementar nuestra funcionalidad partiremos de un entorno de desarrollo j2ee operativo. No entraremos en detalles de instalación y configuración de entorno de trabajo, ya que en la red hay manuales de calidad sobre el tema.

El entorno de pruebas usado para la elaboración de este tutorial es el siguiente...

Creación de las tablas de Base de Datos MySQL. Inserción de los datos de pruebas

Veremos ahora como preparar el entorno de Base de Datos (en lo adelante BDD) para implementar nuestro caso de uso ejemplo:

Nos conectamos a la instancia de BDD del servidor, donde vamos crear las tabla en las que insertaremos la información de los usuarios (USERS), los roles disponibles en nuestra aplicación (AUTHORITY_LIST) , así como los roles asignados a los usuarios concretos (AUTHORITIES).

La estructura de las tablas AUTHORITIES y AUTHORITY_LIST son las que Spring Security recomienda. Sin embargo en el caso de la tabla de USERS, se han añadido los campos de: NOMBRE, APELLIDOS, FECHA_NACIMIENTO, SEXO, FECHA_ALTA, FECHA_MODIFICACION, HUSO_HORARIO y CORREO_ELECTRONICO_PPAL...


Parte del manual paso a paso para desarrollar una aplicación web con Spring Framework + Spring Security contra una base de datos MySQL.

El mal uso de las FAQ. Las preguntas frecuentes que no lo son tanto

Si tienes una sección de “Preguntas Frecuentes”(conocida como FAQ, acrónimo de Frecuently asked questions) en tu web-site, ¡asegúrate de que realmente contenga un listado de Preguntas Frecuentes!

La afirmación anterior es una obviedad, pero… ¿Alguna vez te ha pasado que estás navegando por un web-site que tiene una sección de “Preguntas Frecuentes” (FAQ) y que despierta tu interés, pero cuando quieres profundizar un poco y accedes a la sección de FAQ, lo que encuentras es básicamente lo que desde el web-site quieren que les preguntes (cosas del tipo: “¿Cómo es que siendo nuestro servicio tan bueno, están barato?”) en lugar de consultas reales? A mí me ha pasado. Por desgracia es bastante común encontrarse listados FAQ que son más bien FAKEs (falsos).

Las organizaciones que utilizan las FAQ como herramientas publicitarias o para reforzar mensajes corporativos debería saber que con esta práctica se restan bastante credibilidad a sí mismas y muestran de manera clara su poca sensibilidad por los intereses de los usuarios que navegan por su web, usuarios que muchas veces son sus clientes, o potenciales clientes que probablemente no los volverán a visitar.

En cambio, si las FAQ están redactadas teniendo en cuenta realmente la experiencia de los usuarios...

Descarga del proyecto con los recursos utilizados en el ejemplo MVC

Este es el capítulo final del Manual paso a paso para la creación de una aplicación web MVC (sin frameworks).

Nuestro proyecto de ejemplo ya está concluido y totalmente operativo. Aquí encontrarás los recursos que se han desarrollado disponibles para su descarga. Gracias por no perder el interés y llegar hasta aquí. A partir de esta bases, seguir adelante depende de ti :)

Estructura de las acciones, la lógica de negocios

Explica la estructura de las clases que implementan la lógica de negocios de los casos de uso de nuestro Modelo Vista Controlador.

Es parte del Manual paso a paso para la creación de una aplicación web MVC (sin frameworks) totalmente operativa he desarrollando con el objetivo de facilitar a los interesados la comprensión de la arquitectura Java MVC a través de un ejemplo práctico desarrollado paso a paso.

Controlando el flujo de navegación con AccionProxy

Veremos ahora como se controla el flujo de navegación dentro de la lógica de la clase AccionProxy, una vez que se ha ejecutado una acción concreta en nuestro modelo MVC...

Es parte del Manual paso a paso para la creación de una aplicación web MVC (sin frameworks) totalmente operativa he desarrollando con el objetivo de facilitar a los interesados la comprensión de la arquitectura Java MVC a través de un ejemplo práctico desarrollado paso a paso.

Estructura del controlador de acciones AccionProxy

Descripción de la clase AccionProxyde nuestro ejemplo encargada de gestionar la ejecución de acciones y el flujo de la aplicación.

Es parte del Manual paso a paso para la creación de una aplicación web MVC (sin frameworks) totalmente operativa he desarrollando con el objetivo de facilitar a los interesados la comprensión de la arquitectura Java MVC a través de un ejemplo práctico desarrollado paso a paso.

Definiendo el comportamiento de la aplicación

Descripción de estructura del fichero de propiedades de la aplicación y como a través de este añadir funcionalidad y cambiar el flujo de ejecución.

Es parte del Manual paso a paso para la creación de una aplicación web MVC (sin frameworks) totalmente operativa he desarrollando con el objetivo de facilitar a los interesados la comprensión de la arquitectura Java MVC a través de un ejemplo práctico desarrollado paso a paso.

¿Como se gestiona la request? El servlet principal

Descripción de estructura del servlet que trata las solicitudes efectuadas directamente desde la capa web y como invoca al proxy que gestiona las acciones en nuestro modelo MVC.

Es parte del Manual paso a paso para la creación de una aplicación web MVC (sin frameworks) totalmente operativa he desarrollando con el objetivo de facilitar a los interesados la comprensión de la arquitectura Java MVC a través de un ejemplo práctico desarrollado paso a paso.

Las solicitudes realizadas desde la web

Comenzaremos la descripción de los componentes de nuestra aplicación por la capa de presentación, la vista de nuestro modelo MVC, compuesta por la página web a través de la cual un usuario realiza la petición de la acción (y la la página que resultará de la ejecución de la funcionalidad solicitada)...

Es parte del Manual paso a paso para la creación de una aplicación web MVC (sin frameworks) totalmente operativa he desarrollando con el objetivo de facilitar a los interesados la comprensión de la arquitectura Java MVC a través de un ejemplo práctico desarrollado paso a paso.

Descripción general de la arquitectura MVC

Descripción general de los componentes del modelo MVC que desarrollaremos a lo largo de este tutorial. El papel que juega cada uno en la arquitectura.

Es parte del Manual paso a paso para la creación de una aplicación web MVC (sin frameworks) totalmente operativa he desarrollando con el objetivo de facilitar a los interesados la comprensión de la arquitectura Java MVC a través de un ejemplo práctico desarrollado paso a paso.