Entradas

Validación backend de un movimiento de venta con Java Servlets

  Cuando desarrollamos un sistema de ventas, una de las partes más importantes no es solamente capturar los datos ingresados por el usuario, sino comprobar que la operación sea válida antes de procesarla. En una aplicación web podemos utilizar JavaScript para realizar cálculos y entregar validaciones inmediatas en la interfaz. Sin embargo, las reglas importantes deben comprobarse nuevamente en el backend. En este ejemplo veremos cómo estructurar la validación de un movimiento comercial utilizando Java Servlets , una capa de servicios y excepciones específicas. El controlador utilizado en el ejemplo recibe una operación que posteriormente puede utilizarse para procesar distintos tipos de documentos, como facturas, facturas exentas, boletas, guías de despacho, notas de crédito o notas de débito. 1. El problema Una operación de venta contiene bastante más información que un formulario tradicional. Por ejemplo, necesitamos recibir: Cliente o proveedor. Tipo de documento. Bodega. Tipo ...

Saber Spring Boot no es lo mismo que saber desarrollar sistemas

 En los últimos años se ha vuelto común encontrar rutas de aprendizaje que llevan rápidamente a una persona desde los fundamentos básicos de programación hacia tecnologías como Spring Boot, React, Docker o servicios en la nube. No considero que esto sea necesariamente negativo. El problema aparece cuando confundimos el conocimiento de estas herramientas con una formación completa en desarrollo de sistemas. Una persona que recién termina la enseñanza secundaria puede perfectamente aprender Java, construir una API REST con Spring Boot, conectarla a una base de datos y desarrollar una interfaz web. Incluso puede llegar a trabajar profesionalmente con estas tecnologías. Pero saber utilizar un framework no significa necesariamente comprender todos los conceptos que existen detrás de él. La formación no consiste solamente en aprender tecnologías Una tecnicatura o una ingeniería relacionada con informática normalmente no busca enseñar únicamente las herramientas que demanda el mercado en...

Usar fetch con Servlets para enviar parámetros POST y devolver HTML

  En el artículo anterior vimos que es posible construir aplicaciones web dinámicas con Java, Servlets, Thymeleaf y JavaScript sin necesidad de incorporar obligatoriamente un framework frontend como React o Angular. En esta entrada vamos a llevar esa idea a un ejemplo práctico. Si estamos trabajando con Servlets, Thymeleaf y JavaScript, podemos utilizar fetch() para enviar datos al servidor y hacer que el Servlet responda directamente con HTML. En este ejemplo vamos a implementar una búsqueda dinámica de productos. La idea es sencilla: Usuario escribe el nombre ↓ JavaScript ejecuta fetch() ↓ Servlet recibe parámetros POST ↓ ProductoService realiza la búsqueda ↓ Servlet genera HTML ↓ fetch recibe el HTML ↓ Se reemplaza una sección de la página La página inicial La página de administración de productos se genera inicialmente utilizando Thymeleaf. Tenemos un campo de búsqueda: <input oninput="cargarSeccion('BUSCAR_NOMBRE...

Cómo reemplazar Node.js y React por Java y AJAX

Actualmente es bastante común asociar el desarrollo de una aplicación web moderna con una arquitectura formada por React en el frontend y Node.js en el backend. Algo parecido a esto: Navegador | React | API REST | Node.js | Base de datos Esta arquitectura es válida y tiene muchos casos de uso. Sin embargo, no significa que sea necesaria para todas las aplicaciones web. Un sistema administrativo, un punto de venta, un sistema de inventario o una aplicación de facturación pueden necesitar una interfaz dinámica sin que eso implique necesariamente construir una SPA completa. Podemos hacerlo utilizando Java: HTML + CSS | JavaScript / AJAX | Java | Servlets o Spring Boot | Servicios | JDBC | Base de datos La idea no consiste en eliminar JavaScript. La idea es utilizar JavaScript solamente para interactuar con el navegador y realizar peticiones asíncronas, dejando la construcción de la aplicación y la lógica del servidor en Java. AJAX no necesi...

Construyendo XML en Java: desde DOM hasta JAXB

 Cuando comencé a trabajar con XML en Java, una de las primeras alternativas que utilicé fue la API DOM incluida en Java. En ese momento desconocía JAXB, por lo que construir un documento XML significaba crear explícitamente cada elemento y agregarlo al árbol del documento. Con el tiempo conocí JAXB y una forma bastante diferente de enfrentar el mismo problema: representar la estructura XML mediante objetos Java y dejar que una biblioteca realice la transformación. En esta entrada veremos ambas alternativas y las diferencias que existen entre ellas. El XML que queremos construir Utilizaremos un ejemplo sencillo: <?xml version="1.0" encoding="UTF-8"?> <Producto> <Codigo>1001</Codigo> <Nombre>Teclado USB</Nombre> <Precio>15990</Precio> </Producto> Nuestro objetivo será generar este documento desde una aplicación Java. 1. Construcción utilizando DOM Java dispone de una API estándar para manipular docume...

Plantilla Maven para Spring Boot

 Durante el desarrollo de aplicaciones Java es común utilizar Spring Initializr para generar un nuevo proyecto. Sin embargo, en algunos entornos esta alternativa puede no ser la más conveniente. Con el tiempo he preferido mantener una plantilla Maven propia para Spring Boot , preparada y probada en mi entorno de desarrollo. Las ventajas de este enfoque son: Configuración conocida y controlada. Dependencias previamente verificadas. Estructura consistente entre proyectos. Independencia de servicios externos para generar un proyecto. Posibilidad de adaptar la plantilla a necesidades específicas. En entornos corporativos también es habitual que las organizaciones mantengan sus propias plantillas o arquetipos Maven, permitiendo estandarizar la creación de nuevos proyectos y evitar diferencias entre desarrolladores. Esto no significa que Spring Initializr sea una mala herramienta. Al contrario, resulta muy útil para comenzar rápidamente un proyecto. Sin embargo, dispone...

La ruta para aprender Full Stack Java

  En los últimos años han aparecido innumerables cursos para aprender Full Stack Java . Muchos comienzan directamente con tecnologías como: Spring Boot React Docker Kubernetes Al finalizar el curso, el estudiante logra construir una aplicación. Sin embargo, muchas veces no comprende realmente qué ocurre detrás de cada componente. Personalmente, creo que el problema no está en los frameworks. El problema es el orden en que se enseñan. El primer paso no es Spring Boot Antes de construir una aplicación Full Stack existe algo mucho más importante. Aprender el lenguaje de programación. En mi caso, esa ruta debería comenzar así. 1. Comprender el lenguaje Antes de hablar de aplicaciones web es necesario dominar Java. Variables. Tipos de datos. Operadores. Métodos. Condicionales. Ciclos. En esta etapa todavía no existe ninguna aplicación. Solo se aprende a resolver problemas mediante código. 2. Aprender a pensar en objetos Después aparece la Programac...