20251106 EjemploAppWeb_Spring_1 - Contenido educativo
Ajuste de pantallaEl ajuste de pantalla se aprecia al ver el vídeo en pantalla completa. Elige la presentación que más te guste:
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
no
00:01:33
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
Sí
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
Eh
00:12:31
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
Ah
00:12:45
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
00:13:07
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