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 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>
  • 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

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
  • Estructura de directorios de una aplicación con express:
  • El app.js es el primer fichero que se ejecuta