Saltar navegación

20251106 EjemploAppWeb_Spring_1 - Contenido educativo

Ajuste de pantalla

El ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:

Subido el 6 de noviembre de 2025 por Raquel G.

17 visualizaciones

Descargar la transcripción

Y ojalá hubiera alguien que nos controlara los serlets y yo le dijera, oye, quiero que pase esto, que pase esto, que pase esto y que pase esto. Y ese tío ya decidiera crear los serlets, llamarlos, invocarlos, cargarlos, destruirlos. 00:00:00
ojalá hubiera alguien que hiciera todo el trabajo 00:00:19
por mí y yo le dijera, en esta ruta 00:00:21
haz esto, en esta ruta haz esto, en esta ruta haz esto 00:00:23
bueno, pues hay alguien 00:00:25
que es una persona 00:00:27
una persona que se llama 00:00:29
controlador 00:00:32
que es el que recibe 00:00:32
ese llamado 00:00:35
es una persona 00:00:37
de bits 00:00:41
¿vale? 00:00:44
que tampoco hay mucha diferencia 00:00:45
entre una persona humana, realmente 00:00:47
A ver, la diferencia con la persona humana 00:00:49
Es que no cobra, efectivamente 00:00:54
Que no es poco 00:00:55
Pues este ser 00:00:57
Maravilloso 00:00:59
Es una clase que está hecha 00:01:01
Integrada en esa capa de abstracción 00:01:06
Que me pone 00:01:08
A la que yo le digo 00:01:09
Oye, estas rutas son las que te va a invocar 00:01:11
Mi aplicación, te va a invocar todas estas 00:01:14
En cada una de estas quiero que me hagas esto 00:01:16
y me devuelvas esta vista 00:01:18
pues este controller gestiona 00:01:20
eso, ¿vale? 00:01:22
entonces, dime 00:01:24
¿podemos hacer el controller más creando? 00:01:25
sí, de alguna manera 00:01:30
¿podemos hacer eso con el controller más creando? 00:01:31
claro, ese es el tema 00:01:34
que desde el momento en que empezamos a poner capas de abstracción 00:01:37
perdemos el control 00:01:40
pero bueno, ¿es grave? 00:01:41
pues no es grave 00:01:43
se supone que nosotros 00:01:44
le mandamos 00:01:47
y él va a hacer lo que le mandemos 00:01:49
¿vale? lo que pasa 00:01:51
sí hombre, él va a hacer lo que le mandemos 00:01:52
lo que pasa es que le tenemos que ordenar bien 00:01:54
y configurar bien, claro, si le ordenamos 00:01:57
bien y le configuramos bien, él va a hacer 00:01:59
lo que nosotros queremos 00:02:01
lo que pasa es que bueno, que ya la cosa empieza como a 00:02:02
volverse más esotérica 00:02:05
¿vale? a mí me gusta 00:02:07
normalmente pues trabajar con las cosas 00:02:09
desde la base, pero es que llega un momento en que es imposible 00:02:11
porque todo se hace demasiado 00:02:13
complejo, entonces bueno 00:02:15
Dime, dime, vas a decir algo 00:02:17
Por ejemplo, sí 00:02:19
Hay un arsenal de cosas que te pueden pasar 00:02:29
Que ya no sabes exactamente por qué son 00:02:33
¿Vale? 00:02:38
Porque están relacionadas con su propio funcionamiento interno 00:02:39
Pero bueno, que es una cuestión de 00:02:42
Pues tú vas aprendiendo a usar esta herramienta 00:02:44
Y vas más o menos, pues al final 00:02:46
Uno la sabe usar y la usa 00:02:48
Y ya está. Entonces, este controlador entra dentro de un concepto que de nuevo es otro patrón de diseño más. Recordad lo que hablábamos de patrones de diseño. Patrón de diseño es una forma de diseñar aplicaciones. ¿Vale? ¿Qué patrones de diseño hemos mencionado? 00:02:50
el patrón de diseño singleton 00:03:12
que es, si tú vas a usar 00:03:14
un objeto en un montón de sitios 00:03:16
haz algo para no instanciarlo 00:03:18
por duplicado, triplicado, cuadriplicado 00:03:20
que solo hay una instancia, muy bien 00:03:23
el patrón DAO 00:03:24
que es, si tú tienes 00:03:26
en la base de datos 00:03:28
tus entidades que se corresponden 00:03:29
con tus clases 00:03:32
de la aplicación 00:03:34
pues hombre 00:03:36
haz algo de alguna manera 00:03:38
que te abstraiga y que tú puedas decir 00:03:40
guarda objeto, lee objeto 00:03:42
y olvídate de la tabla 00:03:43
y trabaja directamente 00:03:45
con una clase 00:03:48
que te ofrezca ya métodos para 00:03:49
guardar objeto, leer objeto y ya está 00:03:52
entonces esa clase DAO 00:03:53
te ofrece a ti 00:03:54
los métodos para guardar 00:03:58
leer objetos y tú te despreocupas 00:04:00
de la tabla, ¿vale? 00:04:02
Bueno, pues hay otro patrón relacionado 00:04:03
este ya con aplicaciones 00:04:06
web 00:04:08
que es el patrón 00:04:08
modelo vista 00:04:12
controlador 00:04:13
entonces 00:04:14
este objeto controller 00:04:18
entra dentro de este patrón 00:04:21
modelo vista 00:04:23
controlador ¿vale? ¿por qué me está 00:04:25
sonando tan mal? porque 00:04:27
a ver porque lo he puesto 00:04:29
en español pero 00:04:35
Pero su nombre habitual 00:04:36
Debe aparecer en inglés 00:04:39
Porque de repente lo he escrito y me suena muy raro 00:04:40
No, en inglés también es así, ¿verdad? 00:04:42
Sí, es así 00:04:48
Entonces es que de repente lo he visto 00:04:49
Y como que me han sonado las letras descolocadas 00:04:50
Pero bueno, da igual, será que ya he llevado muchas horas aquí 00:04:52
Claro, repite y después 00:04:55
Siempre la hemos escrito MVC 00:04:59
Vale 00:05:02
Pues el patrón modelo vista controlador 00:05:03
Dice, a ver 00:05:06
Vamos a darle toda la complejidad 00:05:08
De decidir qué haces 00:05:10
Al controlador 00:05:12
Entonces el modelo vista controlador se basa en 00:05:13
Tú tienes este controller aquí 00:05:16
Y luego tienes la vista 00:05:17
Que sería 00:05:21
Lo que ve el usuario en su navegador 00:05:22
Esa es la vista 00:05:25
Entonces, la vista 00:05:26
Lógicamente 00:05:28
Despierta al controlador 00:05:30
Y el controlador decide 00:05:33
a qué se le invoca, qué hace, cómo lo hace 00:05:34
y el controlador, pues lógicamente 00:05:38
tocará el modelo de datos que está ahí 00:05:40
hará cosas con la lógica de negocio 00:05:44
con los datos, lo retocarán 00:05:49
y generará a su vez una nueva vista 00:05:50
¿vale? 00:05:54
eso es muy en resumen el modelo vista controlador 00:05:55
un elemento controlador que centraliza 00:05:58
centraliza las peticiones 00:06:02
que llegan de la vista 00:06:04
y ahí ya llama 00:06:06
quien tenga que llamar, recoloca 00:06:08
los datos 00:06:10
y genera 00:06:12
las nuevas vistas 00:06:13
o despacha 00:06:15
o como lo queramos llamar, las nuevas vistas 00:06:17
vale, pues bueno 00:06:19
¿qué framework 00:06:22
se ha puesto de moda para integrar 00:06:27
este patrón de diseño en las aplicaciones 00:06:30
de Java? 00:06:33
Pues este, ¿vale? 00:06:36
Entonces, 00:06:40
Spring lo que pasa 00:06:41
es que es un ecosistema 00:06:42
gigantesco de millones 00:06:44
de millones o miles 00:06:47
de subframeworks 00:06:48
pequeñitos, para hacer 00:06:51
cosas muy distintas, muy 00:06:52
diferentes, ¿vale? 00:06:54
Entonces, como ya se ha hecho tan, tan, 00:06:56
tan enormemente grande 00:06:58
llegó un momento en que eso ya era imposible 00:07:00
de gestionar 00:07:03
entonces hubo que hacer un framework para gestionar 00:07:04
al framework, porque ya 00:07:07
era imposible 00:07:09
entonces, ¿qué framework 00:07:10
se ha hecho para tratar 00:07:12
de ocultar 00:07:15
la complejidad que tiene esto? 00:07:17
pues Spring Boot 00:07:20
entonces el famoso 00:07:20
Spring Boot es una capita 00:07:25
un poquito más simple 00:07:27
afortunadamente, que él se lo guisa, se lo come 00:07:29
es que no hay que hacer nada, así es que lo hace todo 00:07:31
y esa capita 00:07:33
pues ya nos 00:07:35
oculta las complejidades de Spring 00:07:38
y luego de Spring a su vez 00:07:39
uno puede decidir qué quiere usar 00:07:41
Spring Boot es, arráncame Spring 00:07:43
porque es que yo soy incapaz, porque si lo arranco por mí 00:07:45
tengo que configurar millones de cosas 00:07:48
entonces, arráncamelo 00:07:50
Spring Boot, arranca Spring que yo si no me cago 00:07:51
y ahora sí me cago, pero bueno 00:07:54
Spring Boot sea un framework 00:07:58
para controlar un framework 00:07:59
para arrancarlo y instanciar 00:08:01
todas las dependencias que necesite 00:08:03
un poco para eso 00:08:05
no, porque 00:08:07
como ellos entre sí se entienden y lo hacen todo 00:08:13
para el que 00:08:15
lo usa, se convierte en algo muy 00:08:17
sencillo, bueno, hasta que empiezan a llegar 00:08:19
nuevas errores 00:08:21
o cosas que tienes que incorporar 00:08:23
y no te casan, pero luego 00:08:24
realmente sin Spring Boot, Spring 00:08:27
era infumable 00:08:29
entonces menos mal que llegó Spring Boot 00:08:30
y empezamos a poder fumarlo 00:08:33
No, yo lo digo desde fuera 00:08:34
Porque yo conozco poquísimo de este framework 00:08:37
Porque no lo he necesitado 00:08:40
Ni he tenido que impartirlo ni nada 00:08:42
Pero bueno, son mis impresiones 00:08:44
¿Vale? 00:08:46
Entonces, Spring, repito, tiene a su vez millones de subframeworks 00:08:47
Para hacer millones de cosas 00:08:50
A nosotros nos va a interesar uno en particular 00:08:51
Nos va a interesar un subframework 00:08:54
Que es el Spring Data 00:08:57
¿Vale? 00:08:58
Este sí nos va a interesar 00:09:01
Porque eso sí que sí, nuestro módulo sí es 00:09:02
Acceso a datos, facilitar 00:09:04
El acceso a datos 00:09:06
00:09:08
Pero es que tenéis que saber de esto 00:09:10
Porque 00:09:12
Vale, entonces a nosotros nos va a interesar 00:09:13
Spring Data que también lo podremos 00:09:17
Arrancar desde Spring Boot y todo eso 00:09:19
Pero bueno 00:09:20
En Spring hay de todo, como tú 00:09:23
Sabrás seguramente 00:09:24
De todo, vale, para programar 00:09:26
Aplicaciones de todo tipo 00:09:29
Con todos los parámetros 00:09:31
reactivas, no reactivas, de todo 00:09:33
pero es verdad que antes era 00:09:34
un horror 00:09:40
y la intuición era, esto no va a llegar a ningún lado 00:09:41
porque es un horror, pero claro tuvieron 00:09:44
la feliz idea de esto 00:09:46
y esos horribles ficheros de configuración 00:09:47
de bins, de no sé qué 00:09:50
de inyección, toda la inyección de dependencia 00:09:52
de repente desapareció 00:09:54
a ver, desde luego ahora mismo 00:09:55
no hay 00:10:02
desarrolladores de Java, entiendo, 00:10:03
salvo para cosas muy específicas 00:10:06
que no lo hagan con Spring, creo. Es la sensación 00:10:08
que tengo yo. 00:10:10
Luego otra cosa es que cada empresa 00:10:12
tiene a su vez sus propios frameworks. 00:10:14
Sus propios frameworks, muchos de ellos 00:10:16
inspirados en Spring, a veces, para hacer sus 00:10:18
cosas. Pero bueno, 00:10:20
esto de alguna manera es muy universal. Bueno, conclusión 00:10:22
después de este rollo. Pues esta 00:10:24
mimita aplicación la vamos a hacer 00:10:26
con Spring ahora. A ver si nos resulta 00:10:28
más fácil o más difícil. 00:10:30
Vamos a ver. 00:10:32
A mí me gusta menos, pero porque 00:10:33
yo soy de la generación 00:10:36
la que me gustaba hacer las flores a mano. 00:10:37
Pero, sí, 00:10:40
puede ser el baño. 00:10:42
Entonces, 00:10:44
para hacerla con Spring, 00:10:45
en lugar de con el Eclipse normal que podríamos, 00:10:47
vamos a coger 00:10:51
el Eclipse tuneado para Spring, 00:10:52
porque nos facilita un montón 00:10:53
la creación de escrituras. 00:10:55
Sí, entonces tenemos 00:10:57
o cualquiera en el entorno 00:10:59
del Intel IE también tiene integrado 00:11:01
las herramientas porque te generan 00:11:03
las clases de Sprint 00:11:05
pero como nosotros somos adictos 00:11:07
a Eclipse 00:11:09
ya sí, pero ya no va a haber más 00:11:10
Eclipse 00:11:13
ya no va a haber más por lo menos en una semana 00:11:14
no, no, no, ya no va a haber más 00:11:17
los únicos que vamos a manejar durante el curso son estos tres 00:11:18
vale, pues el Eclipse 00:11:22
tuneado para facilitar 00:11:23
el desarrollo de aplicaciones Sprint 00:11:25
es el Sprint Tool Suite 00:11:27
entonces 00:11:30
Entonces, ¿descargarlo? 00:11:32
Vamos a ver, yo lo tengo descargado, pero si tuviera que descargarlo otra vez, pues me iría a aquí. 00:11:40
A ver, me iría 00:11:52
Sprint 00:11:57
Tools 00:12:00
Suite 00:12:01
Tools Sprint 00:12:02
Sprint Tools 00:12:04
Sprint Tools 00:12:07
Pues este 00:12:09
Ala, os descargáis 00:12:11
Ese de ahí 00:12:13
¿Vale? 00:12:14
¿Cómo que queda una hora? 00:12:22
Pues entonces no, os paso el zip 00:12:24
Y lo copiáis 00:12:26
A ver, el que tengo yo es de hace unos meses 00:12:28
Pero tampoco creo que haya cambiado mucho 00:12:30
Sí, no os pongáis a descargarlo todos 00:12:32
A ver 00:12:36
Bueno, alguien le dice por ahí que cinco minutos 00:12:37
Pero tú estás con la de tu móvil 00:12:39
Igual, la conexión de tu móvil 00:12:40
Y ese te ha descargado 00:12:42
Pues 00:12:46
Acabáramos 00:12:48
No debería tardar tanto 00:12:53
Entonces 00:12:54
será un zip 00:12:56
y ese zip lo descomprimís 00:12:58
y punto pelota 00:13:02
y cuando descomprimáis el zip 00:13:02
pues ya tenéis aquí 00:13:05
el punto de arranque 00:13:08
le hacéis un acceso directo 00:13:11
si os da la gana y ya está, ¿vale? 00:13:13
una vez descargado es un zip que descomprimís 00:13:15
descomprimís 00:13:17
arrancáis 00:13:21
y nos sale esta cosa 00:13:23
venga, a ver 00:13:27
bueno, pues vamos a hacer 00:13:44
una aplicación 00:13:47
web 00:13:49
con la arquitectura de Spring 00:13:52
bueno, a ver, podríamos 00:13:54
porque quiero que sea igual 00:13:58
es que no web 00:13:59
es la de toda la vida 00:14:01
es una 00:14:02
y ya está, y la podríamos también 00:14:02
pero bueno, quizá haya expresado por qué tanto 00:14:05
ahora en particular 00:14:08
porque quiero hacer de la misma 00:14:09
que hemos hecho antes de la misma pero con esta arquitectura 00:14:11
pero una normal 00:14:14
que no sea coordinada con el print 00:14:16
pues da igual 00:14:17
vamos a hacer lo mismo 00:14:18
pero con el print 00:14:21
claro, vamos a hacer lo mismo 00:14:22
pero con el print 00:14:25
poniendo esa caja por encima 00:14:27
¿eh? 00:14:28
hombre, y tal vez de cero 00:14:31
vamos a ver, tú te tienes que ir de aquí 00:14:33
siendo 00:14:47
el mejor 00:14:48
entonces, cuanto más cosas sepas 00:14:49
mejor 00:14:52
claro 00:14:53
bueno, pues afianzarlas 00:14:55
en casa 00:15:00
Venga, a ver 00:15:01
A ver, que nos vamos a ir en 5 minutos 00:15:09
Vamos por lo menos a dejar arrancado 00:15:11
El proyecto 00:15:13
Que nos vamos a ir en 5 minutos 00:15:14
Vale, a ver 00:15:16
Nuestro primer proyecto 00:15:17
New 00:15:21
¿Qué queremos arrancar? 00:15:22
Quiero arrancar con un proyecto 00:15:27
Sprint 00:15:29
Venga, me dais aquí 00:15:30
Ostras 00:15:33
Quiero arrancar con un proyecto Sprint 00:15:34
Sprint, vale 00:15:36
¿Esto qué hace en realidad? 00:15:37
Esto 00:15:41
Está invocando a la página 00:15:42
Java.io, que como Sprint 00:15:44
Sabe que complica tanto 00:15:46
La vida, te ofrece una web 00:15:48
En la que tú le dices 00:15:51
El tipo de aplicación 00:15:53
Que quieres hacer 00:15:54
Las dependencias que vas a necesitar 00:15:55
el gestor de tareas que quieres 00:15:59
en esta web 00:16:02
tú puedes ir, le metes eso 00:16:03
y él te genera el proyecto 00:16:05
en un zip y te permite descargarlo 00:16:07
porque como sabe que es tan lioso 00:16:09
dice, venga, yo te lo hago, te lo meto en un zip y te descargo 00:16:11
Eclipse 00:16:14
Splintools, lo que hace 00:16:15
es hacer por ti 00:16:17
la llamada a ese sitio web, nada más 00:16:19
hacerla por ti, es lo único que hace 00:16:21
vale, Pablo 00:16:23
pero vamos a darle nuestros datos 00:16:25
Venga, ¿cómo queremos que se haga nuestra aplicación? 00:16:27
Llamadle como os dé la gana 00:16:29
A ver, yo le voy a 00:16:31
Mxml to JSON 00:16:32
Clase, para distinguirla 00:16:36
De la otra que tengo 00:16:38
Vale, llamadla como queráis 00:16:38
Venga, ¿qué gestor 00:16:41
De tareas, de automatizar 00:16:43
Tareas quieres? 00:16:46
Pues quiero Maven, porque me gusta 00:16:47
Es el que conozco 00:16:50
¿En qué vas a empaquetar la aplicación? 00:16:50
En nuestro caso, como va a ser web, en un war 00:16:53
Si no, sería un jar 00:16:55
Todavía no hemos empaquetado war 00:16:56
Pero bueno, nos da igual 00:16:58
¿Qué versión queréis? Pues la que tengáis 00:16:59
Siempre y cuando sea mayor de 17 00:17:02
Porque si no es mayor de 17 00:17:04
No nos entendemos 00:17:07
Con Spring Boot y las versiones estas 00:17:08
¿Vale? 00:17:10
Yo 21 porque la 25 no la tengo 00:17:12
Dime 00:17:14
¿Cómo? 00:17:15
No, me lo da en bebido igual 00:17:23
El Spring Tool 00:17:24
Si no hace falta que 00:17:25
A ver 00:17:26
embebido es 00:17:28
a ver 00:17:31
embebido es una aplicación 00:17:33
una aplicación a veces 00:17:35
necesita recursos, como por ejemplo 00:17:37
una base de datos, un servidor 00:17:38
¿vale? entonces, cuando tú pruebas 00:17:40
una aplicación, si esa aplicación 00:17:43
necesita esos recursos, como una base de datos 00:17:45
un servidor, tienes una opción 00:17:47
que es tirar de una base de datos externa 00:17:49
para hacer tus pruebas, un servidor externo 00:17:51
pero en fase de desarrollo 00:17:53
puedes meterte 00:17:55
esos recursos embebidos que se llaman, 00:17:57
que es en mi propia aplicación, en mi propio 00:17:59
JAR, en mi propia aplicación, 00:18:01
me meto una base de datos embebida que solo vive 00:18:03
cuando vive la aplicación, luego desaparece. 00:18:05
Me meto un servidor de aplicaciones que solo vive 00:18:07
cuando vive la aplicación, luego desaparece. 00:18:09
Entonces, eso me viene muy bien 00:18:11
en tiempo de desarrollo, lógicamente. 00:18:13
Vale, pues, el Spring Tools 00:18:15
ya por defecto te mete un Tomcat 00:18:17
en la aplicación, aunque tú la 00:18:19
pongas aquí al igual. 00:18:21
Entonces, no necesitaríamos ni el Tomcat que hemos hecho en el equipo 00:18:23
ni nada. Podríamos usar el Tomcat 00:18:25
externo, pero él ya te embebe 00:18:27
uno para que cuando tú haces las pruebas, tira de él. 00:18:29
¿Vale? 00:18:32
Sí. 00:18:33
A ver, sí, bueno, yo es que estoy 00:18:35
poniendo la raíz que pongo siempre 00:18:39
con DANDOS 00:18:41
y aquí, pues, 00:18:43
la ruta raíz para tu aplicación. 00:18:47
Pues, que no sea directamente con DANDOS 00:18:49
que es feo, pues, venga, aplicación web, ya está. 00:18:51
le damos estos datos 00:18:53
tiene más cositas abajo 00:18:56
no, venga 00:18:58
bueno, ya tenemos esto 00:19:00
seleccionado, next 00:19:02
vale, a ver 00:19:04
a vosotros no os aparecerá esto 00:19:05
porque esta es la página 00:19:08
de dependencias, ¿qué es? 00:19:10
¿qué dependencias necesitas? 00:19:13
bueno, aquí hay 00:19:14
claro, es tiempo de dependencias 00:19:15
tú buscas las que quieres, ¿vale? 00:19:18
entonces 00:19:21
Yo en mi caso, como esto va a ser una aplicación web, si no ni siquiera, como va a ser una aplicación web, necesito la parte de sprint que tiene la parte web. 00:19:21
Entonces, vamos a buscarla aquí en todo este chorizo, vamos a buscarla. 00:19:35
Aquí, pues en web está. 00:19:42
En web. 00:19:44
¿Veis? Aquí está, la marcáis. 00:19:47
¿Vale? 00:19:51
Yo quiero esta parte, la parte de, estas son las dependencias, vale, y por ahora vamos a ponerle solo esto, esto nos va a permitir usar el controller, todo, es decir, todo lo relacionado con el modelo vista controlador, ala, por ahora solo esta dependencia, next. 00:19:51
Y ahora ya él 00:20:14
Pues venga, finish 00:20:16
Y nos crea 00:20:18
Todavía ha tardado un rato 00:20:23
Está abajo ahí creando cosas 00:20:25
Y nos lo va creando 00:20:28
Todavía, ya ha terminado 00:20:38
Claro, claro 00:20:39
Sí, no, internet 00:20:43
Es que hace para cuando usas Maven 00:20:45
Pues a 2x3 para que sincronice 00:20:47
Sí, dime 00:20:49
Vale 00:20:50
Un segundín. 00:20:53
Materias:
Programación
Niveles educativos:
▼ Mostrar / ocultar niveles
  • Formación Profesional
    • Ciclo formativo de grado superior
      • Segundo Curso
Subido por:
Raquel G.
Licencia:
Todos los derechos reservados
Visualizaciones:
17
Fecha:
6 de noviembre de 2025 - 20:04
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
20′ 59″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
83.82 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid