Saltar navegación

20251106 EjemploAppWeb_Spring_2 - 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.

20 visualizaciones

Descargar la transcripción

Vale. 00:00:00
Bueno, pues, entonces, este es un main para arrancar sprint, 00:00:01
no para arrancar la aplicación web. 00:00:07
Y ahora ya, sprint cuando arranque, 00:00:09
arranca la aplicación web, la monta. 00:00:11
En nuestro caso, además, arrancará el Tomcat embebido. 00:00:14
Bueno, todo el pifostio. 00:00:16
Vale. 00:00:19
Y ya está el fichero de configuración, 00:00:21
que no tiene nada porque no hay nada de configurar. 00:00:23
Y aquí podemos poner las vistas, ¿vale? 00:00:26
en vistas. Entonces vamos a hacer 00:00:29
por ejemplo 00:00:31
una primera vista 00:00:32
como estamos haciendo 00:00:34
la misma aplicación que hemos hecho antes 00:00:36
pues entonces 00:00:39
¿cuál era nuestra 00:00:41
primera vista? 00:00:43
El index, ¿verdad? 00:00:45
El index era la página raíz de nuestra aplicación 00:00:47
la que nos daba el formulario 00:00:49
para arrancar el JSON 00:00:51
Bueno, pues copiad 00:00:52
el index 00:00:54
copiáis el index 00:00:56
y lo ponemos 00:01:00
aquí 00:01:02
del otro proyecto 00:01:03
aquí está nuestra página raíz 00:01:10
sube tu archivo xml 00:01:15
bla bla bla, seleccionas archivo 00:01:17
etcétera 00:01:19
bueno, entonces 00:01:20
el controlador 00:01:21
ahora ya necesitamos el controlador 00:01:25
porque el controlador es el que 00:01:26
cuando le demos la ruta 00:01:28
por defecto, que es la barrita asignada 00:01:30
la ruta por defecto, el controlador 00:01:33
tiene que irse a este 00:01:35
índex, ¿vale? Ahora ya no hay 00:01:37
servlets que respondan a urls 00:01:39
ahora hay un controlador 00:01:41
que para cada url posible 00:01:43
te renderiza o te lleva 00:01:45
a una página, dime 00:01:47
Estamos haciendo 00:01:48
la misma aplicación que hemos hecho antes 00:01:53
la queremos replicar aquí 00:01:55
de la aplicación anterior, ¿cuál era la 00:01:56
página raíz? La que arrancaba 00:01:59
al principio de la aplicación, el index 00:02:01
el formulario este index 00:02:03
que me decía que subía el archivo 00:02:05
bueno, pues esta página, que es 00:02:06
la página raíz de mi aplicación 00:02:08
la quiero en mi nueva aplicación, lógicamente 00:02:10
la he movido 00:02:13
la he copiado aquí, ¿vale? 00:02:14
porque estamos construyendo, esa misma aplicación 00:02:17
la estamos construyendo, pero ahora con esta 00:02:19
estructura, vale, pues esta es 00:02:20
mi página raíz, ahora ya 00:02:23
sí que sí necesito el controlador 00:02:25
porque aquí lo que hay 00:02:26
es una clase controladora 00:02:29
que a cada posible 00:02:31
URL que yo invoco 00:02:33
decide que me devuelve. 00:02:35
Bueno, pues este index 00:02:38
es lo que me va a devolver 00:02:39
a la ruta base, a la base. 00:02:41
Cuando yo le dé la base 00:02:43
me devolverá este index. 00:02:45
¿Verdad? 00:02:47
Es lo que nos pasa 00:02:49
aquí cuando nosotros 00:02:50
ejecutábamos esto, cuando yo le dé 00:02:53
la base, que esta es la ruta base, 00:02:54
cuando yo le dé la ruta base 00:02:57
me lleva el index 00:02:59
pues esto 00:03:01
lo va a hacer el controlador 00:03:03
el controlador es cuando vea que yo le doy 00:03:05
la ruta base, me da esta 00:03:07
página index 00:03:09
vale 00:03:10
pues a ver 00:03:12
vamos a hacer el controlador 00:03:14
bueno pues nos vamos a hacer 00:03:16
un paquete para el controlador 00:03:19
partimos del raíz 00:03:21
este es mi paquete 00:03:26
para los controladores 00:03:35
ojo 00:03:36
Spring 00:03:38
tiene que, perdón 00:03:40
este que me arranca Spring 00:03:42
esta clase main que me arranca 00:03:44
Spring, la main, tiene que estar 00:03:47
en la cima de la jerarquía de Spring 00:03:49
para encontrar el resto 00:03:50
si no está en la cima va a tener ahí un problema 00:03:51
para encontrar los bins 00:03:55
bastante gordo 00:03:56
este está en la cima de mi jerarquía 00:03:58
y ahora yo ya me hago los paquetes 00:04:00
que me den la gana a partir de esa cima 00:04:03
y pongo, pues bueno, uno en particular 00:04:05
para el controlador, vale, la idea es irlo 00:04:06
pues venga, vamos a hacernos 00:04:09
el controlador 00:04:11
ala, llamadlo 00:04:12
como os dé la gana 00:04:21
webapp 00:04:22
controller 00:04:25
ala, este es mi controlador 00:04:26
aquí dentro 00:04:29
habrá una colección 00:04:31
de métodos y cada uno de esos métodos 00:04:33
será la respuesta 00:04:35
a cada una de las urls 00:04:36
que yo puedo invocar 00:04:39
de mi aplicación 00:04:40
pero para que este sea 00:04:41
realmente un controlador 00:04:45
se lo tengo que decir a Sprint 00:04:46
le tengo que decir Sprint 00:04:48
que este es el controller, ojo 00:04:49
como le digo que este 00:04:51
es el controller 00:04:55
anotando con mucho amor 00:04:56
porque si no 00:04:59
no me va a hacer caso 00:05:00
claro, porque si no no manipula 00:05:03
las cosas o con amor o a hostias 00:05:04
si no 00:05:06
ala 00:05:07
ya tengo el controller 00:05:11
el controller 00:05:14
es una de las 00:05:16
posibles clases de Spring 00:05:18
lo que Spring llama estereotipos 00:05:20
pero todo esto ya es 00:05:22
nomenclatura un poco particular suya 00:05:23
igual que el repositorio 00:05:25
el repositorio es otra posible clase 00:05:28
otro estereotipo 00:05:30
estereotipo 00:05:31
no, no hay un viewer 00:05:32
pero bueno, hay muchas cosas 00:05:36
yo que sé, no sé lo que hay, hay millones de cosas 00:05:39
vale, pues este es el controller 00:05:41
ahora ya aquí van nuestros 00:05:43
métodos, por ejemplo 00:05:45
vamos a hacer el método 00:05:46
que me devuelve 00:05:49
el método asociado 00:05:51
a la 00:05:53
a la página raíz 00:05:54
¿vale? 00:05:56
entonces 00:05:58
esta anotación siempre la mezclo con la otra 00:05:59
la anotación del 00:06:03
mapeo del controller 00:06:05
¿cuál era? ¿la tengo que mirar o me la dices? 00:06:06
la de request mapping 00:06:09
esa 00:06:11
request mapping, ¿verdad? 00:06:12
sí, en esa está 00:06:15
no, get mapping 00:06:16
vale 00:06:19
get mapping es para la de get 00:06:21
request mapping es la que te dice la raíz 00:06:23
vale, no, no, no, vale, pero 00:06:25
pues entonces 00:06:26
cuando yo pida 00:06:29
en la ruta 00:06:30
Y el nombrecito de la orientación de la barra siempre se me olvida. 00:06:36
Siempre la pongo cambiada también. 00:06:43
Esta. 00:06:44
Vale. 00:06:46
Qué tontería hago. 00:06:47
Vale. 00:06:49
Bueno, pues lo que ponga yo aquí ahora a continuación, ¿vale? 00:06:50
Lo que ponga yo aquí va a ser un método al que va a responder, 00:06:55
que va a invocar el controlador cuando yo pida la ruta base, 00:07:01
¿Vale? 00:07:06
Por get, que es la petición por defecto 00:07:08
Ahora tengo que ir a la ruta base 00:07:10
Vale, pues entonces 00:07:11
La ruta base me va a llevar aquí 00:07:13
A este método le llamo como me dé la gana 00:07:15
¿Qué quiero que me devuelva? 00:07:18
En este caso, una página web 00:07:20
Entonces, este método 00:07:22
Por ejemplo, pues 00:07:24
Muestra 00:07:32
Formulario raíz 00:07:34
Vamos a llamarlo como nos dé la gana 00:07:36
muestra 00:07:38
formulario raíz. 00:07:40
Vale. Y aquí 00:07:43
este, return 00:07:44
index. 00:07:46
Import. 00:07:54
Get mapping. Vale. 00:07:55
Entonces, 00:08:00
revisamos. 00:08:02
Este método 00:08:05
lo invoca el controlador cuando ve 00:08:06
una petición desde la ruta base, 00:08:08
desde la ruta raíz. 00:08:10
¿Qué hace? Nada, lo único que yo quiero es 00:08:12
que me devuelva una página 00:08:14
que me devuelva una página 00:08:16
entonces con return index 00:08:17
lo que yo le estoy diciendo 00:08:20
a Spring es que 00:08:22
me devuelva la página de 00:08:23
la carpeta templates que se llame 00:08:26
index de contenido web 00:08:28
¿vale? 00:08:29
¿y la raíz es como para que 00:08:30
vaya justo a la raíz y de ahí ya te puede coger 00:08:32
el index? 00:08:34
Bueno, la raíz es la raíz de la URL 00:08:36
es decir, es 00:08:38
esto, es esta ruta 00:08:39
es la ruta raíz, es esta, la que no tiene ningún 00:08:42
recurso después 00:08:44
la que no tiene ningún recurso después 00:08:45
entonces, pues cuando yo invoque 00:08:47
la ruta raíz 00:08:50
el controlador va a llamar a este método 00:08:51
que le llamo como me dé la gana 00:08:54
este controlador me devuelve una vista 00:08:55
podría devolverme algo más grande 00:08:58
que no fuera una vista, fuera un fichero 00:09:00
para descarga, algo más complicado 00:09:02
entonces aquí no sería un string 00:09:04
sería un response no sé qué 00:09:06
pero cuando me devuelve una vista sin más 00:09:08
una vista 00:09:10
sprint 00:09:12
lo puede identificar 00:09:13
como un string 00:09:16
con el nombre de la vista 00:09:17
¿vale? 00:09:19
entonces 00:09:22
vamos a ejecutarlos 00:09:23
a ver si ya esta aplicación sprint 00:09:26
arranca bien y cuando yo la arranco 00:09:28
me devuelve la vista 00:09:30
entonces 00:09:32
¿vale? pues entonces 00:09:34
¿dónde está la aplicación? 00:09:36
esta no es, es esta 00:09:38
en ejecutar 00:09:39
le ejecutáis como una aplicación 00:09:42
de Spring Boot 00:09:44
le ejecutáis así 00:09:45
él arrancará su Tomcat 00:09:47
embebido, no lo puede arrancar 00:09:52
porque el 8080 está ocupado 00:09:54
porque lo tengo ocupado con este otro 00:09:55
entonces mucho puerto 00:09:58
así que voy a parar este 00:09:59
servidor Tomcat 00:10:02
ya está parado 00:10:03
el 8080 es el HTTPS normal, ¿no? 00:10:04
el HTTPS 00:10:07
no, el HTTPS es el 840 00:10:08
4, 4, 3. El 8080 00:10:11
es un puerto que se suele 00:10:13
usar para pruebas locales web, pero 00:10:15
podríamos usar el 8085, no nos da igual. 00:10:16
El 80 es el por defecto. 00:10:19
Vale, entonces. 00:10:21
El HTTP es el 43. 00:10:23
HTTP es 80. 00:10:25
80. El 80. 00:10:27
El 80, pero 8080 00:10:29
es el que suele... 00:10:31
Vale. Los 1024 primeros 00:10:32
puertos son los que suelen tener 00:10:35
una aplicación asociada, que son los que 00:10:37
se llaman los puertos bien conocidos, 00:10:39
bien asignados, del 1024 00:10:41
hacia arriba, tú ya para tus 00:10:43
pruebas eliges lo que quieras 00:10:45
venga 00:10:46
segundo intento 00:10:48
que cierre el que 00:10:50
no, bueno, ya he parado 00:10:53
el servidor, ya está parado 00:10:57
vale, Spring Boot 00:10:58
se ha lanzado porque no me da errores 00:11:02
pero este, no, aquí 00:11:04
no, si tiene un navegador 00:11:07
integrado, no lo he encontrado, también es verdad que tampoco 00:11:09
me he puesto a buscarlo, así que vamos 00:11:11
a sacar el navegador de fuera 00:11:13
y ya está, venga 00:11:14
localhost 00:11:16
y tengo que poner 00:11:20
pues toda la 00:11:22
ruta, que es 00:11:23
todo esto 00:11:26
de ahí no lo puedo copiar 00:11:31
de donde lo puedo 00:11:33
copiar 00:11:36
la ruta 00:11:37
del 00:11:39
Properties. Parezco tonta. 00:11:42
Ahí. 00:11:44
Bueno, pues el 90% de mi tiempo 00:11:49
me siento así, así que 00:11:52
compartimos 00:11:53
sentimiento. 00:11:55
Vamos a ver. 00:11:59
No encuentra 00:12:04
el recurso. Algo hemos escrito mal. 00:12:05
Este no es... Este no lo ha buscado. 00:12:07
Algo hemos escrito 00:12:10
mal, for error 00:12:11
vale, no tiene especie 00:12:13
vale 00:12:14
a ver si va a ser porque me 00:12:17
falta el motor de vistas 00:12:23
un momentito, vamos a parar esto 00:12:24
vale 00:12:27
a ver 00:12:28
recopilo, porque lo había detenido 00:12:30
un momento hasta asegurarme de cuál era 00:12:33
el error, que creo que es este 00:12:35
vale, pues 00:12:36
Nos faltaba una dependencia 00:12:41
La dependencia que es capaz de entender 00:12:46
Ese manejo de las vistas 00:12:48
Se ha puesto en rojito el pom 00:12:51
No pasa nada 00:12:54
Porque nosotros tenemos el truco 00:12:55
Que es ponerle aquí esta S 00:12:57
Ya está 00:13:00
Vale 00:13:04
Voy a 00:13:06
A ver si 00:13:08
Si fuera eso lo que ha hecho que no lo entendiera 00:13:09
Que estoy casi, solo casi 00:13:12
solo casi porque con sprint 00:13:14
nunca se puede estar seguro 00:13:17
bueno, vamos a ver 00:13:18
bueno, ¿por qué no te encuentras muchacho? 00:13:28
si te he escrito todo bien 00:13:34
no puede ser 00:13:35
vale, pues entonces 00:13:38
Ahora, ya está. 00:13:43
Ahora ya si ejecuto esto. 00:13:48
Pues aquí está. 00:13:53
Vale. 00:13:55
Entonces, ahora, lo siguiente que hace la aplicación, 00:13:55
venga, que lo siguiente que hace la aplicación es coger el 00:13:59
fichero y darle a subir. 00:14:02
¿Para qué? 00:14:07
Para matarme. 00:14:08
vale, vamos a hacer una cosa 00:14:10
vamos a 00:14:14
intentar, a ver si 00:14:15
como es un, lo que nos queda por hacer 00:14:18
es copiar y pegar de la chuleta que os he dicho 00:14:20
vamos a hacerlo, a ver si 00:14:22
nos funciona y luego ya os miro 00:14:24
los errores, ¿vale? cuando venga Estefano 00:14:26
va a empezar a soltar el rollo desde el principio 00:14:27
bueno, vamos a 00:14:29
intentar, como veis, lo que vamos a hacer ahora es copiar y pegar 00:14:35
vamos a intentar dejarla que funcione 00:14:38
y luego ya los diversos errores 00:14:40
vale, pues entonces 00:14:42
la siguiente ruta a la que tiene que responder 00:14:43
el controlador 00:14:46
es la ruta a la que invoca el index 00:14:46
que es 00:14:50
la de upload 00:14:51
pues hay que hacer un método 00:14:53
para el upload, vale 00:14:56
el cuerpo del método 00:14:57
upload 00:14:59
lo tenéis aquí 00:15:01
vale, dice cuerpo del 00:15:03
método del control el que procesa 00:15:06
el fichero. Este 00:15:08
es. Copia del cuerpo 00:15:10
del método. Lo pegamos en el 00:15:12
método y ahora lo leemos, pero es que no tiene nada. 00:15:13
Vámonos al controller. 00:15:16
Venga. El controller. 00:15:17
Este. 00:15:21
Post mapping 00:15:27
porque este estamos enviando 00:15:28
un fichero, luego lo hacemos por post. 00:15:30
Vale. ¿A qué ruta va este? 00:15:32
A upload. 00:15:34
¿Vale? Cuando el... 00:15:36
este método va a ser la respuesta 00:15:40
a upload 00:15:44
vale, y este método 00:15:45
no me devuelve 00:15:47
todavía nada para descargar 00:15:50
con lo cual un stream, porque me va a devolver 00:15:51
una vista, si me devuelve una vista 00:15:54
stream, no me complico, me devuelve una vista 00:15:55
no, o sea, lo que habéis 00:15:58
copiado va a ir ahora adentro 00:16:00
ahora, este método es el método 00:16:01
que convierte 00:16:04
xml a json 00:16:05
vale 00:16:08
A ver 00:16:08
Este método 00:16:12
Recibe un file 00:16:14
Claro, ahora lo añadimos 00:16:17
Por ahora, copiad el código 00:16:19
Que hemos hecho 00:16:22
E importáis el post mapping 00:16:23
Vale 00:16:25
Entonces este método 00:16:26
Ya lo que hace 00:16:29
Que lo tenemos fácil es 00:16:31
Coger ese objeto file 00:16:33
Pero claro, lo que nos falta es 00:16:35
¿De dónde sale el file? 00:16:37
Coge el file 00:16:39
¿Vale? 00:16:40
Se crea 00:16:42
Un fichero local en esta ruta 00:16:43
Deberíamos sacarla a un final, pero ahí queda muy feo 00:16:46
Deberíamos sacarla a un final 00:16:48
¿Vale? Crea un archivo local 00:16:49
En esta ruta 00:16:52
00:16:55
Lo convierte 00:16:59
Y te lleva a una página de descarga 00:17:01
¿Vale? Entonces 00:17:07
antes de meternos con esto 00:17:08
file es el parámetro 00:17:09
del request que tiene el fichero, ¿verdad? 00:17:12
este index 00:17:15
bueno, no nos va a dar tiempo yo creo a completarlo 00:17:16
pero bueno, lo que lleguemos y ya está 00:17:18
este form de aquí 00:17:20
acordaos de que lleva un parámetro en su request 00:17:21
que es el parámetro file 00:17:24
lleva un parámetro, pues ese parámetro 00:17:25
tiene que llegar al controlador de alguna 00:17:28
manera, tiene que llegar aquí 00:17:30
este es que no tenía parámetro 00:17:32
aquí no le llegaba ningún parámetro 00:17:34
por eso eso estaba vacío 00:17:36
Pero a este sí que le llega un parámetro 00:17:38
Bueno, pues como indicamos que le llega un parámetro 00:17:41
Pues oye tú 00:17:44
Que te va a llegar un parámetro 00:17:45
Una anotación dentro de 00:17:47
Vale, que se llama 00:17:48
Esto no sé seguro 00:17:51
Si se pone value file 00:17:52
Ahora lo miramos 00:17:55
Y ese parámetro guárdalo en 00:17:56
Aquí 00:17:59
Vale 00:18:01
No, perdón, en un multipart 00:18:02
Este 00:18:04
este es el 00:18:04
no me acuerdo el nombre de la clase 00:18:09
bonito que lo tengo aquí, la que tiene un fichero 00:18:12
aquí la tenemos 00:18:15
eso, multipart 00:18:18
vale 00:18:20
vale, a ver 00:18:21
importamos 00:18:26
request para 00:18:35
y aquí esta llave me sobra 00:18:36
Y me falta aquí la llave 00:18:39
Que la tenía mal 00:18:44
Vale, está bien 00:18:45
Bueno, pues a ver 00:18:48
Este es 00:18:51
Voy a formatear 00:18:52
¿Por qué no ha formateado? 00:18:55
Vale, entonces 00:19:01
¿Por qué no me hace el format? 00:19:01
No, no está formateado 00:19:08
No, ya lo metí 00:19:10
Bueno, ya lo formatearé, da igual 00:19:14
vale, pues este método 00:19:17
es el método con el que el controlador 00:19:19
resuelve, devuelve 00:19:21
o sea, contesta a Bloat 00:19:23
vale, diferencia de este método 00:19:25
con el anterior, que este 00:19:27
recibe un parámetro en el request 00:19:29
recibe un parámetro 00:19:31
¿qué parámetro recibe? un fichero 00:19:32
pues yo primero le indico 00:19:35
oye tú, cuidado, método 00:19:37
que tú recibes un parámetro en tu request 00:19:38
que se llama file 00:19:41
guárdamelo 00:19:42
en esta variable 00:19:44
¿En qué variable guarda Spring un fichero con toda su información de cómo me llamo, etcétera? 00:19:46
En un objeto multipar, ¿vale? 00:19:54
Es decir, el parámetro file que va en el request no es un fichero sin más con datos. 00:19:57
Es el fichero con datos más su nombre, más su tipo, etcétera, ¿vale? 00:20:02
Pues entonces este parámetro no lo puede guardar en un file, no lo guarda en un file. 00:20:08
Lo guarda en un multipar file, ¿vale? 00:20:12
entonces el model para que vale 00:20:15
para crear las vistas, luego lo mencionamos 00:20:17
bueno pues este método, ahora ya si que aquí 00:20:19
metéis el copia y pega 00:20:21
este método es el que convierte a xml 00:20:22
to json, que hace 00:20:25
pues saca los bytes de entrada 00:20:26
crea el fichero local 00:20:29
para guardar 00:20:31
ese fichero localmente 00:20:33
escribe en ese 00:20:35
fichero local 00:20:45
estos bytes que he sacado 00:20:46
Esto se podría hacer con Java.io también, abriéndolo con un input string e ir pasando los bytes al input string. Pero la clase files, pues, te ofrece este método, pues, este. Vale. 00:20:48
El model lo importas de sprint, sí 00:21:01
Aquí importamos 00:21:09
Bueno, habría que importar file de java.io 00:21:11
Ahora, convertimos de XML a JSON nuestro fichero local 00:21:14
Que es este 00:21:20
Convertimos nuestro fichero local de XML a JSON 00:21:21
Y ahora devolvemos la vista 00:21:30
La vista es la página de descarga 00:21:34
la página de descarga 00:21:37
entonces ahora 00:21:39
¿qué nos falta por hacer? 00:21:43
¿qué nos falta por copiar? 00:21:45
vamos a copiar este método de utilidades 00:21:47
no hace falta que lo hagáis vosotros 00:21:49
sí, vamos a hacer la clase 00:21:50
y luego copiáis de la chuleta 00:21:53
entonces vamos a hacer 00:21:55
el paquete 00:21:57
donde queráis que esté 00:21:58
pues por ejemplo 00:22:01
aquí 00:22:03
sí, pero vamos a hacer 00:22:05
new package 00:22:07
com.dam2.app 00:22:11
web.utilidades 00:22:15
por ejemplo, utilidades 00:22:20
vale, en utilidades os hacéis la clase utilidades 00:22:24
y ahora, aquí ya en esta clase utilidades 00:22:30
vamos a hacernos este método 00:22:39
este metodito que transforma xml a json 00:22:40
copiar 00:22:44
para transformar 00:22:45
y ahora vamos a hacer aquí el método 00:22:51
¿qué nombre le hemos dado al método? 00:22:53
xml to json 00:22:56
vamos a hacer un método que se llame así 00:22:57
xml 00:22:59
public 00:23:02
static void 00:23:05
xml 00:23:07
to json 00:23:09
ahora 00:23:12
copiar 00:23:13
Y ahora me faltan los parámetros que es el fichero xml, el parámetro que le he pasado del controlador que está aquí, el file con el fichero xml, pues venga aquí, un file, file xml. 00:23:16
ya está nuestro método de utilidades 00:23:45
a falta de las dependencias 00:23:50
importamos file 00:23:51
y ahora 00:23:54
¿qué pasa con 00:23:57
fijaos el JSON node 00:24:00
me lo ofrece 00:24:02
directamente porque Spring 00:24:04
ya incorpora Jackson dentro 00:24:05
¿vale? 00:24:07
ya incorpora Jackson dentro 00:24:09
xml mapper 00:24:11
está en otra 00:24:13
dependencia, que la ponemos ahora 00:24:16
no pasa nada 00:24:18
el object mapper 00:24:18
¿cómo buscaría yo? 00:24:20
si no sé de qué librería es 00:24:22
me pasa un proyecto así, ¿cómo lo busco? 00:24:24
¿cómo buscaría yo? 00:24:27
hombre, a ver, es que si tú tienes un proyecto 00:24:28
que está usando objetos, ya va a tener sus propios import 00:24:30
claro 00:24:32
buscas en el infinito 00:24:33
pero bueno, es una situación normal 00:24:40
una situación más normal puede ser que tú tengas que hacer 00:24:42
algo y no sabes 00:24:44
en qué librería hay que te puede hacer 00:24:46
eso, pero ahí ya sí que es buscar 00:24:48
en, claro, entonces 00:24:50
perdón, que he puesto aquí void 00:24:53
y aquí te devuelve un file, lógicamente 00:24:56
vale, entonces 00:24:58
este método, ahora ya sí que 00:25:00
es un método que no es 00:25:02
solo para un xml que siga un esquema 00:25:04
concreto como el recetario 00:25:06
esta versión la ampliamos 00:25:08
este objeto xml 00:25:10
mapper es capaz 00:25:12
de leerte un 00:25:14
xml 00:25:16
y guardártelo en un json node 00:25:17
que ya sabemos lo que es un json node del otro día 00:25:20
un nodo json con todos 00:25:22
sus nodos hijos json 00:25:24
pues es capaz de guardar un nodo json 00:25:26
pues ya está, con el object mapper 00:25:28
escribo el nodo json al fichero 00:25:30
y ya lo tengo convertido 00:25:33
¿vale? 00:25:34
¿lo convierte en clases de... 00:25:36
claro, en un fichero json 00:25:38
entonces este, pues bueno, es lo mismo que hemos hecho en otro sitio 00:25:39
que es coger el nombre del fichero JSON 00:25:42
que es cambiándole la extensión 00:25:44
y ya está 00:25:46
¿vale? entonces 00:25:48
el XMLMapper este 00:25:50
estará 00:25:52
lo que pasa es que creía yo 00:25:57
que en Spring ya te lo iba 00:25:58
a ofrecer 00:25:59
pero 00:26:02
¿vale? 00:26:04
venga, lo repito 00:26:06
si estoy para o no me odien 00:26:07
lo único que he dicho es 00:26:08
que la dinámica de trabajo aquí con Sprint 00:26:10
para la aplicación web sería más fácil. 00:26:12
Yo identifico las cosas que tengo que hacer. 00:26:15
La llamada raíz, 00:26:17
la llamada upload, 00:26:19
la llamada download. 00:26:20
Por cada ruta, por cada URL, 00:26:22
un método del controlador. 00:26:24
Con el nombre que a mí me dé la gana. 00:26:26
Se acabó. 00:26:28
Los métodos del controlador, 00:26:29
si no reciben nada, 00:26:32
hay vacío. 00:26:34
Y string si devuelven vista. 00:26:36
Y si reciben algo, 00:26:39
requestParam con el nombre de lo que recibe 00:26:40
y aquí el parámetro 00:26:43
con el tipo de datos. Si fuera texto, string. 00:26:46
Hago lo que tenga que hacer 00:26:49
y devuelvo la vista. 00:26:50
¿Vale? 00:26:52
Venga, pues ahora sí que sí 00:26:54
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:
20
Fecha:
6 de noviembre de 2025 - 20:05
Visibilidad:
Clave
Centro:
IES ROSA CHACEL
Duración:
26′ 57″
Relación de aspecto:
1.78:1
Resolución:
1920x1080 píxeles
Tamaño:
121.01 MBytes

Del mismo autor…

Ver más del mismo autor


EducaMadrid, Plataforma Educativa de la Comunidad de Madrid

Plataforma Educativa EducaMadrid