26 Enero 2023 🍿
Servlets
- Pueden ser scripts de python, una página php…, es decir, cualquier tecnología que pueda ser ejecutada en el servidor
- Para poder ejecutar algo hay que desplegar ese algo dentro del servidor
Arquitectura web básica
- Utilizaremos Java 17
Especificación JEE (Java Enterprise Edition)
Arquitectura J2EE
¿Qué es un Servlet?
- Es una clase Java wue acepta peticiones HTTPS y devuelve respuestas usando también HTTP.
- Se ejecuta dentro de un contenedor de Servlets que a su vez está dentro de un servidor de aplicaciones JEE
Ciclo de vida de un Servlet
Tipos de peticiones HTTP
- Pregunta de examen → ¿Cuál es el método genérico desde el cual se invoca a los métodos do() genérico?:
service()
Registro de un Servlet
Recogida de información de un usuario
- Usar
Object HttpServletRequest.getParameter(nombre)
Mantenimiento del estado de la sesión
- Sesión: variables que se almacenan (permanecen) en el servidor a instancias de una petición del cliente. Las sesiones suelen estar basadas en cookies.
Seguimiento de la sesión
JSP
Pregunta examen: los servlets resuelven los problemas de presentación
Elementos de JSP
- Scripting
- Directivas
- Acciones
Objetos predefinidos JSP
Directivas
Acciones
30 Enero 2023 🪀
Spring vs SpringBoot
- Spring: framework basado en JEE que usa el patrón MVC (modelo vista controlador) para desarrollo de aplicaciones web cuya principal caracteróstica es el uso de un modelo POJO
- SpringBoot: no es un framework, es una forma fácil de desarrollar aplicaciones Spring pero facilitando los aspectos duros de Spring
SpringBoot
- Aumenta la agilidad del desarrollo de aplicaciones en Spring
- Provee de configuraciones por defecto
- Uso opcional de POMs
- Evita la generación de código y configuraciones XML
- Permite crear aplicaciones stand-alone
Spring
- Aplicaciones basadas en el patrón MVC
- Soporte completo al desarrollo de aplicaciones POJO
- Sistema de inyección de dependencias basado en el IoC (Inversion of control: el responsable de instanciar es el framework)
- Gran cantidad de módulos con funcionalidad reutilizable
- Traducción de excepciones específicas a genéricas
Standalone
Entorno de desarrollo
- IntelliJ
Main: condiciones
@SpringBootApplication
- Tiene 3 anotaciones:
- @Configuration
- @EnableAutoConfiguration
- @ComponentScan: se debe escanear la aplicación en busca de componentes implementados
Elementos principales
- Todos son componentes
- Algunos añaden funcionalidad al componente
- Todos los componentes se procesan internamente como Beans (clase Java POJO con constructor por defecto y con getters y setters)
- Los beans registrados contienen una instancia de un objeto
- Los componentes son instanciados y registrados como beans
Elementos escaneables
Controladores
- Componentes que procesan peticiones realizadas por los clientes
- El retorno es el nombre de una vista
- Suelen invocar la lógica de negocio definida en los servicios
- Las vistas pueden recibir un Modelo de datos con atributos
Procesamiento en Spring
@RequestParam
- Si no lo pasas uno de los parámetros casca
Petición y parámetros
Thymeleaf
- Es la plantilla de acceso a los atributos del modelo
- El modelo contiene atributos
Servicios
- Componentes que contienen lógica de negocio
- Suelen ser utilizados desde los controladores o desde otros servicios
Repositorios
- Son los componentes que acceden a la base de datos
- Suelen ser utilizados desde la capa de servicios
- El repositorio puede usar multitud de APIs para acceder a la base de datos
6 Febrero 2023 🪬
- Un interceptor en un Servlet personalizado.
- LocaleChangeInterceptor: interceptor que permite definir un parámetro para realizar cambios de localización:
- ISO 639 → especificación del código de idiomas (es, en, it…)
- Se suelen usar varios ficheros de propiedades, uno por cada localización:
- antmatcher: especificación url en los cuales pueden aparecer comodines (un sólo asterisco es un único nivel, dos son todos los niveles que queramos)
13 Febrero 2022 🍎
- Una sesión se destruye automáticamente tras un tiempo de inactividad
- El Bean HttpSession permite acceder a la sesión (funciona como un hashmap)
- Formas de tratar la sesión en Spring:
- Las plantillas Thymeleaft pueden acceder a la sesión:
- Indirectamente: atributos del modelo eviados desde el controlador a la plantilla
- Directamente: usando el objeto {session}
- Anotación @SessionScope
- Conseguir que todos los Beans se gestionen como singleton (que todos los accesos se traten como una instancia)
- Las plantillas Thymeleaft pueden acceder a la sesión:
- Las URLs con datos/acciones sensibles dolo pueden ser usadas por ciertos usuarios (ej: no todos los alumnos pueden ver todas las asignaturas, sólo aquellas a las que estén matriculados)
- Usar AccessDecisionVoter
- No se deben manejar coleciones con muchos recursos/entidades. Se debe usar paginación:
- Clase
Page<E>
- Clase
- La siguiente a la actual (page=getNumber+1) si es que existe (⇐getTotalPages)
- La ultima (page=getTotalPages - 1) siempre
- Todas las excepciones producen rollback
20 Febrero 2023 🍓
- Están prohibidas las esperas incondicionales →
Thread.sleep()
6 Marzo 2023 🌏
Node.js
- Es una plataforma de software que nos permite ejeutar JavaScript del lado del servidor
- No es un framework
- Características:
- Basado en un diseño modular:
- Cada funcionalidad es dividida en módulos o paquetes separados
- Por defecto cuando se instala Node, se incluye un conjunto de módulos
- La gestión de dependencias o paquetes se realiza con NPM
- Modelo de operaciones I/O asíncrona o sin bloqueo:
- Se usa para leer o escribir en el sistema de archivos, lmacenar información en bases de datos y establecer comunicación de red o comunicarse con otros componentes
- Las operaciones son bloqueantes
- Las operaciones se ejecutan de forma secuencial
- El programa permanece bloqueado hasta que termine la operación
- El cliente espera la respuesta del servidor para continuar con el flujo del programa
- Basado en un diseño modular:
13 Marzo 2023 🐚
- express-generator: herramienta que permite crear rápidamente un esqueleto de aplicación Node.js
- Instalar con
npm install express-generator
- Crear el esqueleto:
express --view=pug myapp
cd myapp
npm install
npm start
- Instalar con
- Estructura de directorios de una aplicación con express:
- El app.js es el primer fichero que se ejecuta