1 00:00:00,000 --> 00:00:00,440 Vale. 2 00:00:01,620 --> 00:00:07,320 Bueno, pues, entonces, este es un main para arrancar sprint, 3 00:00:07,459 --> 00:00:08,779 no para arrancar la aplicación web. 4 00:00:09,099 --> 00:00:11,400 Y ahora ya, sprint cuando arranque, 5 00:00:11,519 --> 00:00:13,460 arranca la aplicación web, la monta. 6 00:00:14,000 --> 00:00:16,640 En nuestro caso, además, arrancará el Tomcat embebido. 7 00:00:16,640 --> 00:00:18,800 Bueno, todo el pifostio. 8 00:00:19,739 --> 00:00:19,960 Vale. 9 00:00:21,800 --> 00:00:23,539 Y ya está el fichero de configuración, 10 00:00:23,620 --> 00:00:25,500 que no tiene nada porque no hay nada de configurar. 11 00:00:26,160 --> 00:00:29,260 Y aquí podemos poner las vistas, ¿vale? 12 00:00:29,260 --> 00:00:31,500 en vistas. Entonces vamos a hacer 13 00:00:31,500 --> 00:00:32,060 por ejemplo 14 00:00:32,060 --> 00:00:34,619 una primera vista 15 00:00:34,619 --> 00:00:36,920 como estamos haciendo 16 00:00:36,920 --> 00:00:39,259 la misma aplicación que hemos hecho antes 17 00:00:39,259 --> 00:00:41,219 pues entonces 18 00:00:41,219 --> 00:00:43,240 ¿cuál era nuestra 19 00:00:43,240 --> 00:00:44,259 primera vista? 20 00:00:45,320 --> 00:00:47,060 El index, ¿verdad? 21 00:00:47,320 --> 00:00:49,579 El index era la página raíz de nuestra aplicación 22 00:00:49,579 --> 00:00:51,359 la que nos daba el formulario 23 00:00:51,359 --> 00:00:52,240 para arrancar el JSON 24 00:00:52,240 --> 00:00:54,500 Bueno, pues copiad 25 00:00:54,500 --> 00:00:56,020 el index 26 00:00:56,020 --> 00:01:00,009 copiáis el index 27 00:01:00,009 --> 00:01:02,750 y lo ponemos 28 00:01:02,750 --> 00:01:03,450 aquí 29 00:01:03,450 --> 00:01:10,079 del otro proyecto 30 00:01:10,079 --> 00:01:15,379 aquí está nuestra página raíz 31 00:01:15,379 --> 00:01:17,359 sube tu archivo xml 32 00:01:17,359 --> 00:01:19,340 bla bla bla, seleccionas archivo 33 00:01:19,340 --> 00:01:20,799 etcétera 34 00:01:20,799 --> 00:01:21,920 bueno, entonces 35 00:01:21,920 --> 00:01:25,000 el controlador 36 00:01:25,000 --> 00:01:26,599 ahora ya necesitamos el controlador 37 00:01:26,599 --> 00:01:28,760 porque el controlador es el que 38 00:01:28,760 --> 00:01:30,780 cuando le demos la ruta 39 00:01:30,780 --> 00:01:33,040 por defecto, que es la barrita asignada 40 00:01:33,040 --> 00:01:35,200 la ruta por defecto, el controlador 41 00:01:35,200 --> 00:01:37,159 tiene que irse a este 42 00:01:37,159 --> 00:01:39,239 índex, ¿vale? Ahora ya no hay 43 00:01:39,239 --> 00:01:41,280 servlets que respondan a urls 44 00:01:41,280 --> 00:01:43,280 ahora hay un controlador 45 00:01:43,280 --> 00:01:45,180 que para cada url posible 46 00:01:45,180 --> 00:01:47,099 te renderiza o te lleva 47 00:01:47,099 --> 00:01:48,200 a una página, dime 48 00:01:48,200 --> 00:01:53,140 Estamos haciendo 49 00:01:53,140 --> 00:01:55,280 la misma aplicación que hemos hecho antes 50 00:01:55,280 --> 00:01:56,480 la queremos replicar aquí 51 00:01:56,480 --> 00:01:59,219 de la aplicación anterior, ¿cuál era la 52 00:01:59,219 --> 00:02:01,180 página raíz? La que arrancaba 53 00:02:01,180 --> 00:02:03,400 al principio de la aplicación, el index 54 00:02:03,400 --> 00:02:05,340 el formulario este index 55 00:02:05,340 --> 00:02:06,459 que me decía que subía el archivo 56 00:02:06,459 --> 00:02:08,960 bueno, pues esta página, que es 57 00:02:08,960 --> 00:02:10,620 la página raíz de mi aplicación 58 00:02:10,620 --> 00:02:13,240 la quiero en mi nueva aplicación, lógicamente 59 00:02:13,240 --> 00:02:14,719 la he movido 60 00:02:14,719 --> 00:02:17,060 la he copiado aquí, ¿vale? 61 00:02:17,060 --> 00:02:19,159 porque estamos construyendo, esa misma aplicación 62 00:02:19,159 --> 00:02:20,979 la estamos construyendo, pero ahora con esta 63 00:02:20,979 --> 00:02:23,120 estructura, vale, pues esta es 64 00:02:23,120 --> 00:02:25,139 mi página raíz, ahora ya 65 00:02:25,139 --> 00:02:26,419 sí que sí necesito el controlador 66 00:02:26,419 --> 00:02:29,259 porque aquí lo que hay 67 00:02:29,259 --> 00:02:31,479 es una clase controladora 68 00:02:31,479 --> 00:02:33,280 que a cada posible 69 00:02:33,280 --> 00:02:35,259 URL que yo invoco 70 00:02:35,259 --> 00:02:37,439 decide que me devuelve. 71 00:02:38,080 --> 00:02:39,360 Bueno, pues este index 72 00:02:39,360 --> 00:02:41,439 es lo que me va a devolver 73 00:02:41,439 --> 00:02:43,360 a la ruta base, a la base. 74 00:02:43,819 --> 00:02:45,080 Cuando yo le dé la base 75 00:02:45,080 --> 00:02:46,860 me devolverá este index. 76 00:02:47,780 --> 00:02:48,120 ¿Verdad? 77 00:02:49,419 --> 00:02:50,659 Es lo que nos pasa 78 00:02:50,659 --> 00:02:53,259 aquí cuando nosotros 79 00:02:53,259 --> 00:02:54,960 ejecutábamos esto, cuando yo le dé 80 00:02:54,960 --> 00:02:57,460 la base, que esta es la ruta base, 81 00:02:57,460 --> 00:02:59,340 cuando yo le dé la ruta base 82 00:02:59,340 --> 00:03:01,300 me lleva el index 83 00:03:01,300 --> 00:03:03,319 pues esto 84 00:03:03,319 --> 00:03:05,080 lo va a hacer el controlador 85 00:03:05,080 --> 00:03:07,919 el controlador es cuando vea que yo le doy 86 00:03:07,919 --> 00:03:09,939 la ruta base, me da esta 87 00:03:09,939 --> 00:03:10,860 página index 88 00:03:10,860 --> 00:03:12,900 vale 89 00:03:12,900 --> 00:03:14,680 pues a ver 90 00:03:14,680 --> 00:03:16,740 vamos a hacer el controlador 91 00:03:16,740 --> 00:03:19,099 bueno pues nos vamos a hacer 92 00:03:19,099 --> 00:03:21,879 un paquete para el controlador 93 00:03:21,879 --> 00:03:26,150 partimos del raíz 94 00:03:26,150 --> 00:03:35,840 este es mi paquete 95 00:03:35,840 --> 00:03:36,759 para los controladores 96 00:03:36,759 --> 00:03:38,580 ojo 97 00:03:38,580 --> 00:03:40,539 Spring 98 00:03:40,539 --> 00:03:42,639 tiene que, perdón 99 00:03:42,639 --> 00:03:44,539 este que me arranca Spring 100 00:03:44,539 --> 00:03:47,020 esta clase main que me arranca 101 00:03:47,020 --> 00:03:49,080 Spring, la main, tiene que estar 102 00:03:49,080 --> 00:03:50,900 en la cima de la jerarquía de Spring 103 00:03:50,900 --> 00:03:51,979 para encontrar el resto 104 00:03:51,979 --> 00:03:55,099 si no está en la cima va a tener ahí un problema 105 00:03:55,099 --> 00:03:56,099 para encontrar los bins 106 00:03:56,099 --> 00:03:58,000 bastante gordo 107 00:03:58,000 --> 00:04:00,620 este está en la cima de mi jerarquía 108 00:04:00,620 --> 00:04:03,120 y ahora yo ya me hago los paquetes 109 00:04:03,120 --> 00:04:05,060 que me den la gana a partir de esa cima 110 00:04:05,060 --> 00:04:06,979 y pongo, pues bueno, uno en particular 111 00:04:06,979 --> 00:04:09,080 para el controlador, vale, la idea es irlo 112 00:04:09,080 --> 00:04:11,219 pues venga, vamos a hacernos 113 00:04:11,219 --> 00:04:12,620 el controlador 114 00:04:12,620 --> 00:04:21,759 ala, llamadlo 115 00:04:21,759 --> 00:04:22,819 como os dé la gana 116 00:04:22,819 --> 00:04:25,459 webapp 117 00:04:25,459 --> 00:04:26,120 controller 118 00:04:26,120 --> 00:04:29,240 ala, este es mi controlador 119 00:04:29,240 --> 00:04:31,680 aquí dentro 120 00:04:31,680 --> 00:04:33,699 habrá una colección 121 00:04:33,699 --> 00:04:35,740 de métodos y cada uno de esos métodos 122 00:04:35,740 --> 00:04:36,779 será la respuesta 123 00:04:36,779 --> 00:04:39,240 a cada una de las urls 124 00:04:39,240 --> 00:04:40,560 que yo puedo invocar 125 00:04:40,560 --> 00:04:41,879 de mi aplicación 126 00:04:41,879 --> 00:04:45,079 pero para que este sea 127 00:04:45,079 --> 00:04:46,600 realmente un controlador 128 00:04:46,600 --> 00:04:48,639 se lo tengo que decir a Sprint 129 00:04:48,639 --> 00:04:49,860 le tengo que decir Sprint 130 00:04:49,860 --> 00:04:51,800 que este es el controller, ojo 131 00:04:51,800 --> 00:04:55,100 como le digo que este 132 00:04:55,100 --> 00:04:56,040 es el controller 133 00:04:56,040 --> 00:04:59,220 anotando con mucho amor 134 00:04:59,220 --> 00:05:00,800 porque si no 135 00:05:00,800 --> 00:05:03,480 no me va a hacer caso 136 00:05:03,480 --> 00:05:04,920 claro, porque si no no manipula 137 00:05:04,920 --> 00:05:06,720 las cosas o con amor o a hostias 138 00:05:06,720 --> 00:05:07,959 si no 139 00:05:07,959 --> 00:05:11,060 ala 140 00:05:11,060 --> 00:05:14,000 ya tengo el controller 141 00:05:14,000 --> 00:05:16,699 el controller 142 00:05:16,699 --> 00:05:18,680 es una de las 143 00:05:18,680 --> 00:05:20,379 posibles clases de Spring 144 00:05:20,379 --> 00:05:22,240 lo que Spring llama estereotipos 145 00:05:22,240 --> 00:05:23,800 pero todo esto ya es 146 00:05:23,800 --> 00:05:25,500 nomenclatura un poco particular suya 147 00:05:25,500 --> 00:05:28,680 igual que el repositorio 148 00:05:28,680 --> 00:05:30,319 el repositorio es otra posible clase 149 00:05:30,319 --> 00:05:31,759 otro estereotipo 150 00:05:31,759 --> 00:05:32,660 estereotipo 151 00:05:32,660 --> 00:05:36,139 no, no hay un viewer 152 00:05:36,139 --> 00:05:39,040 pero bueno, hay muchas cosas 153 00:05:39,040 --> 00:05:41,220 yo que sé, no sé lo que hay, hay millones de cosas 154 00:05:41,220 --> 00:05:43,060 vale, pues este es el controller 155 00:05:43,060 --> 00:05:45,139 ahora ya aquí van nuestros 156 00:05:45,139 --> 00:05:46,800 métodos, por ejemplo 157 00:05:46,800 --> 00:05:49,399 vamos a hacer el método 158 00:05:49,399 --> 00:05:51,399 que me devuelve 159 00:05:51,399 --> 00:05:53,199 el método asociado 160 00:05:53,199 --> 00:05:54,860 a la 161 00:05:54,860 --> 00:05:56,980 a la página raíz 162 00:05:56,980 --> 00:05:58,000 ¿vale? 163 00:05:58,879 --> 00:05:59,560 entonces 164 00:05:59,560 --> 00:06:03,420 esta anotación siempre la mezclo con la otra 165 00:06:03,420 --> 00:06:05,100 la anotación del 166 00:06:05,100 --> 00:06:06,300 mapeo del controller 167 00:06:06,300 --> 00:06:09,259 ¿cuál era? ¿la tengo que mirar o me la dices? 168 00:06:09,259 --> 00:06:11,240 la de request mapping 169 00:06:11,240 --> 00:06:12,220 esa 170 00:06:12,220 --> 00:06:14,379 request mapping, ¿verdad? 171 00:06:15,220 --> 00:06:16,939 sí, en esa está 172 00:06:16,939 --> 00:06:19,899 no, get mapping 173 00:06:19,899 --> 00:06:21,079 vale 174 00:06:21,079 --> 00:06:23,040 get mapping es para la de get 175 00:06:23,040 --> 00:06:25,199 request mapping es la que te dice la raíz 176 00:06:25,199 --> 00:06:26,699 vale, no, no, no, vale, pero 177 00:06:26,699 --> 00:06:29,120 pues entonces 178 00:06:29,120 --> 00:06:30,579 cuando yo pida 179 00:06:30,579 --> 00:06:36,610 en la ruta 180 00:06:36,610 --> 00:06:42,750 Y el nombrecito de la orientación de la barra siempre se me olvida. 181 00:06:43,250 --> 00:06:44,529 Siempre la pongo cambiada también. 182 00:06:44,910 --> 00:06:45,110 Esta. 183 00:06:46,250 --> 00:06:46,470 Vale. 184 00:06:47,949 --> 00:06:49,050 Qué tontería hago. 185 00:06:49,149 --> 00:06:49,329 Vale. 186 00:06:50,689 --> 00:06:54,230 Bueno, pues lo que ponga yo aquí ahora a continuación, ¿vale? 187 00:06:55,370 --> 00:07:01,470 Lo que ponga yo aquí va a ser un método al que va a responder, 188 00:07:01,470 --> 00:07:06,110 que va a invocar el controlador cuando yo pida la ruta base, 189 00:07:06,610 --> 00:07:07,610 ¿Vale? 190 00:07:08,250 --> 00:07:10,550 Por get, que es la petición por defecto 191 00:07:10,550 --> 00:07:11,670 Ahora tengo que ir a la ruta base 192 00:07:11,670 --> 00:07:13,470 Vale, pues entonces 193 00:07:13,470 --> 00:07:15,790 La ruta base me va a llevar aquí 194 00:07:15,790 --> 00:07:18,290 A este método le llamo como me dé la gana 195 00:07:18,290 --> 00:07:20,850 ¿Qué quiero que me devuelva? 196 00:07:20,889 --> 00:07:22,769 En este caso, una página web 197 00:07:22,769 --> 00:07:24,689 Entonces, este método 198 00:07:24,689 --> 00:07:32,500 Por ejemplo, pues 199 00:07:32,500 --> 00:07:34,500 Muestra 200 00:07:34,500 --> 00:07:36,319 Formulario raíz 201 00:07:36,319 --> 00:07:38,800 Vamos a llamarlo como nos dé la gana 202 00:07:38,800 --> 00:07:40,639 muestra 203 00:07:40,639 --> 00:07:43,019 formulario raíz. 204 00:07:43,939 --> 00:07:44,819 Vale. Y aquí 205 00:07:44,819 --> 00:07:46,360 este, return 206 00:07:46,360 --> 00:07:49,350 index. 207 00:07:54,480 --> 00:07:55,019 Import. 208 00:07:55,879 --> 00:07:57,079 Get mapping. Vale. 209 00:08:00,810 --> 00:08:01,329 Entonces, 210 00:08:02,050 --> 00:08:03,490 revisamos. 211 00:08:05,170 --> 00:08:06,129 Este método 212 00:08:06,129 --> 00:08:08,329 lo invoca el controlador cuando ve 213 00:08:08,329 --> 00:08:10,110 una petición desde la ruta base, 214 00:08:10,370 --> 00:08:11,230 desde la ruta raíz. 215 00:08:12,370 --> 00:08:14,370 ¿Qué hace? Nada, lo único que yo quiero es 216 00:08:14,370 --> 00:08:16,350 que me devuelva una página 217 00:08:16,350 --> 00:08:17,769 que me devuelva una página 218 00:08:17,769 --> 00:08:20,110 entonces con return index 219 00:08:20,110 --> 00:08:22,529 lo que yo le estoy diciendo 220 00:08:22,529 --> 00:08:23,910 a Spring es que 221 00:08:23,910 --> 00:08:26,189 me devuelva la página de 222 00:08:26,189 --> 00:08:28,449 la carpeta templates que se llame 223 00:08:28,449 --> 00:08:29,730 index de contenido web 224 00:08:29,730 --> 00:08:30,949 ¿vale? 225 00:08:30,949 --> 00:08:32,250 ¿y la raíz es como para que 226 00:08:32,250 --> 00:08:34,889 vaya justo a la raíz y de ahí ya te puede coger 227 00:08:34,889 --> 00:08:35,269 el index? 228 00:08:36,049 --> 00:08:38,029 Bueno, la raíz es la raíz de la URL 229 00:08:38,029 --> 00:08:39,490 es decir, es 230 00:08:39,490 --> 00:08:42,149 esto, es esta ruta 231 00:08:42,149 --> 00:08:44,850 es la ruta raíz, es esta, la que no tiene ningún 232 00:08:44,850 --> 00:08:45,690 recurso después 233 00:08:45,690 --> 00:08:47,809 la que no tiene ningún recurso después 234 00:08:47,809 --> 00:08:50,750 entonces, pues cuando yo invoque 235 00:08:50,750 --> 00:08:51,789 la ruta raíz 236 00:08:51,789 --> 00:08:54,389 el controlador va a llamar a este método 237 00:08:54,389 --> 00:08:55,769 que le llamo como me dé la gana 238 00:08:55,769 --> 00:08:58,149 este controlador me devuelve una vista 239 00:08:58,149 --> 00:09:00,409 podría devolverme algo más grande 240 00:09:00,409 --> 00:09:02,789 que no fuera una vista, fuera un fichero 241 00:09:02,789 --> 00:09:04,549 para descarga, algo más complicado 242 00:09:04,549 --> 00:09:06,509 entonces aquí no sería un string 243 00:09:06,509 --> 00:09:08,269 sería un response no sé qué 244 00:09:08,269 --> 00:09:10,730 pero cuando me devuelve una vista sin más 245 00:09:10,730 --> 00:09:12,590 una vista 246 00:09:12,590 --> 00:09:13,309 sprint 247 00:09:13,309 --> 00:09:16,870 lo puede identificar 248 00:09:16,870 --> 00:09:17,769 como un string 249 00:09:17,769 --> 00:09:19,750 con el nombre de la vista 250 00:09:19,750 --> 00:09:20,750 ¿vale? 251 00:09:22,389 --> 00:09:23,070 entonces 252 00:09:23,070 --> 00:09:26,330 vamos a ejecutarlos 253 00:09:26,330 --> 00:09:28,250 a ver si ya esta aplicación sprint 254 00:09:28,250 --> 00:09:30,870 arranca bien y cuando yo la arranco 255 00:09:30,870 --> 00:09:32,470 me devuelve la vista 256 00:09:32,470 --> 00:09:34,169 entonces 257 00:09:34,169 --> 00:09:36,470 ¿vale? pues entonces 258 00:09:36,470 --> 00:09:38,190 ¿dónde está la aplicación? 259 00:09:38,309 --> 00:09:39,929 esta no es, es esta 260 00:09:39,929 --> 00:09:42,190 en ejecutar 261 00:09:42,190 --> 00:09:44,769 le ejecutáis como una aplicación 262 00:09:44,769 --> 00:09:45,350 de Spring Boot 263 00:09:45,350 --> 00:09:47,309 le ejecutáis así 264 00:09:47,309 --> 00:09:52,039 él arrancará su Tomcat 265 00:09:52,039 --> 00:09:54,100 embebido, no lo puede arrancar 266 00:09:54,100 --> 00:09:55,759 porque el 8080 está ocupado 267 00:09:55,759 --> 00:09:58,100 porque lo tengo ocupado con este otro 268 00:09:58,100 --> 00:09:59,980 entonces mucho puerto 269 00:09:59,980 --> 00:10:02,100 así que voy a parar este 270 00:10:02,100 --> 00:10:03,820 servidor Tomcat 271 00:10:03,820 --> 00:10:04,620 ya está parado 272 00:10:04,620 --> 00:10:07,200 el 8080 es el HTTPS normal, ¿no? 273 00:10:07,559 --> 00:10:08,340 el HTTPS 274 00:10:08,340 --> 00:10:11,340 no, el HTTPS es el 840 275 00:10:11,340 --> 00:10:13,460 4, 4, 3. El 8080 276 00:10:13,460 --> 00:10:15,240 es un puerto que se suele 277 00:10:15,240 --> 00:10:16,919 usar para pruebas locales web, pero 278 00:10:16,919 --> 00:10:18,779 podríamos usar el 8085, no nos da igual. 279 00:10:19,240 --> 00:10:20,620 El 80 es el por defecto. 280 00:10:21,720 --> 00:10:22,679 Vale, entonces. 281 00:10:23,899 --> 00:10:25,200 El HTTP es el 43. 282 00:10:25,960 --> 00:10:27,120 HTTP es 80. 283 00:10:27,200 --> 00:10:28,360 80. El 80. 284 00:10:29,379 --> 00:10:31,220 El 80, pero 8080 285 00:10:31,220 --> 00:10:32,120 es el que suele... 286 00:10:32,120 --> 00:10:35,399 Vale. Los 1024 primeros 287 00:10:35,399 --> 00:10:37,220 puertos son los que suelen tener 288 00:10:37,220 --> 00:10:39,299 una aplicación asociada, que son los que 289 00:10:39,299 --> 00:10:41,080 se llaman los puertos bien conocidos, 290 00:10:41,080 --> 00:10:43,059 bien asignados, del 1024 291 00:10:43,059 --> 00:10:45,200 hacia arriba, tú ya para tus 292 00:10:45,200 --> 00:10:46,580 pruebas eliges lo que quieras 293 00:10:46,580 --> 00:10:48,980 venga 294 00:10:48,980 --> 00:10:50,899 segundo intento 295 00:10:50,899 --> 00:10:53,080 que cierre el que 296 00:10:53,080 --> 00:10:57,179 no, bueno, ya he parado 297 00:10:57,179 --> 00:10:58,320 el servidor, ya está parado 298 00:10:58,320 --> 00:11:02,529 vale, Spring Boot 299 00:11:02,529 --> 00:11:04,470 se ha lanzado porque no me da errores 300 00:11:04,470 --> 00:11:07,149 pero este, no, aquí 301 00:11:07,149 --> 00:11:09,230 no, si tiene un navegador 302 00:11:09,230 --> 00:11:11,149 integrado, no lo he encontrado, también es verdad que tampoco 303 00:11:11,149 --> 00:11:13,129 me he puesto a buscarlo, así que vamos 304 00:11:13,129 --> 00:11:14,690 a sacar el navegador de fuera 305 00:11:14,690 --> 00:11:16,990 y ya está, venga 306 00:11:16,990 --> 00:11:20,750 localhost 307 00:11:20,750 --> 00:11:22,429 y tengo que poner 308 00:11:22,429 --> 00:11:23,409 pues toda la 309 00:11:23,409 --> 00:11:26,409 ruta, que es 310 00:11:26,409 --> 00:11:31,289 todo esto 311 00:11:31,289 --> 00:11:33,549 de ahí no lo puedo copiar 312 00:11:33,549 --> 00:11:36,429 de donde lo puedo 313 00:11:36,429 --> 00:11:37,049 copiar 314 00:11:37,049 --> 00:11:39,350 la ruta 315 00:11:39,350 --> 00:11:42,210 del 316 00:11:42,210 --> 00:11:44,210 Properties. Parezco tonta. 317 00:11:44,830 --> 00:11:45,029 Ahí. 318 00:11:49,809 --> 00:11:52,029 Bueno, pues el 90% de mi tiempo 319 00:11:52,029 --> 00:11:53,470 me siento así, así que 320 00:11:53,470 --> 00:11:55,029 compartimos 321 00:11:55,029 --> 00:11:56,570 sentimiento. 322 00:11:59,259 --> 00:12:02,500 Vamos a ver. 323 00:12:04,919 --> 00:12:05,919 No encuentra 324 00:12:05,919 --> 00:12:07,659 el recurso. Algo hemos escrito mal. 325 00:12:07,659 --> 00:12:09,559 Este no es... Este no lo ha buscado. 326 00:12:10,000 --> 00:12:11,559 Algo hemos escrito 327 00:12:11,559 --> 00:12:13,639 mal, for error 328 00:12:13,639 --> 00:12:14,399 vale, no tiene especie 329 00:12:14,399 --> 00:12:17,059 vale 330 00:12:17,059 --> 00:12:23,340 a ver si va a ser porque me 331 00:12:23,340 --> 00:12:24,860 falta el motor de vistas 332 00:12:24,860 --> 00:12:27,559 un momentito, vamos a parar esto 333 00:12:27,559 --> 00:12:28,799 vale 334 00:12:28,799 --> 00:12:30,179 a ver 335 00:12:30,179 --> 00:12:33,299 recopilo, porque lo había detenido 336 00:12:33,299 --> 00:12:35,340 un momento hasta asegurarme de cuál era 337 00:12:35,340 --> 00:12:36,919 el error, que creo que es este 338 00:12:36,919 --> 00:12:41,440 vale, pues 339 00:12:41,440 --> 00:12:46,419 Nos faltaba una dependencia 340 00:12:46,419 --> 00:12:48,159 La dependencia que es capaz de entender 341 00:12:48,159 --> 00:12:49,419 Ese manejo de las vistas 342 00:12:49,419 --> 00:12:51,799 Y 343 00:12:51,799 --> 00:12:54,480 Se ha puesto en rojito el pom 344 00:12:54,480 --> 00:12:55,919 No pasa nada 345 00:12:55,919 --> 00:12:57,820 Porque nosotros tenemos el truco 346 00:12:57,820 --> 00:13:00,580 Que es ponerle aquí esta S 347 00:13:00,580 --> 00:13:04,029 Ya está 348 00:13:04,029 --> 00:13:06,129 Vale 349 00:13:06,129 --> 00:13:08,110 Voy a 350 00:13:08,110 --> 00:13:09,190 A ver si 351 00:13:09,190 --> 00:13:12,409 Si fuera eso lo que ha hecho que no lo entendiera 352 00:13:12,409 --> 00:13:14,370 Que estoy casi, solo casi 353 00:13:14,370 --> 00:13:17,850 solo casi porque con sprint 354 00:13:17,850 --> 00:13:18,950 nunca se puede estar seguro 355 00:13:18,950 --> 00:13:28,490 bueno, vamos a ver 356 00:13:28,490 --> 00:13:33,649 bueno, ¿por qué no te encuentras muchacho? 357 00:13:34,649 --> 00:13:35,990 si te he escrito todo bien 358 00:13:35,990 --> 00:13:38,169 no puede ser 359 00:13:38,169 --> 00:13:43,690 vale, pues entonces 360 00:13:43,690 --> 00:13:47,149 Ahora, ya está. 361 00:13:48,049 --> 00:13:50,570 Ahora ya si ejecuto esto. 362 00:13:53,830 --> 00:13:54,929 Pues aquí está. 363 00:13:55,190 --> 00:13:55,370 Vale. 364 00:13:55,870 --> 00:13:59,289 Entonces, ahora, lo siguiente que hace la aplicación, 365 00:13:59,610 --> 00:14:02,549 venga, que lo siguiente que hace la aplicación es coger el 366 00:14:02,549 --> 00:14:04,809 fichero y darle a subir. 367 00:14:07,889 --> 00:14:08,669 ¿Para qué? 368 00:14:08,669 --> 00:14:10,110 Para matarme. 369 00:14:10,110 --> 00:14:14,269 vale, vamos a hacer una cosa 370 00:14:14,269 --> 00:14:15,809 vamos a 371 00:14:15,809 --> 00:14:18,169 intentar, a ver si 372 00:14:18,169 --> 00:14:20,190 como es un, lo que nos queda por hacer 373 00:14:20,190 --> 00:14:22,230 es copiar y pegar de la chuleta que os he dicho 374 00:14:22,230 --> 00:14:24,210 vamos a hacerlo, a ver si 375 00:14:24,210 --> 00:14:26,230 nos funciona y luego ya os miro 376 00:14:26,230 --> 00:14:27,990 los errores, ¿vale? cuando venga Estefano 377 00:14:27,990 --> 00:14:29,690 va a empezar a soltar el rollo desde el principio 378 00:14:29,690 --> 00:14:35,789 bueno, vamos a 379 00:14:35,789 --> 00:14:38,269 intentar, como veis, lo que vamos a hacer ahora es copiar y pegar 380 00:14:38,269 --> 00:14:40,429 vamos a intentar dejarla que funcione 381 00:14:40,429 --> 00:14:42,129 y luego ya los diversos errores 382 00:14:42,129 --> 00:14:43,690 vale, pues entonces 383 00:14:43,690 --> 00:14:46,149 la siguiente ruta a la que tiene que responder 384 00:14:46,149 --> 00:14:46,990 el controlador 385 00:14:46,990 --> 00:14:50,309 es la ruta a la que invoca el index 386 00:14:50,309 --> 00:14:51,909 que es 387 00:14:51,909 --> 00:14:53,389 la de upload 388 00:14:53,389 --> 00:14:56,169 pues hay que hacer un método 389 00:14:56,169 --> 00:14:57,750 para el upload, vale 390 00:14:57,750 --> 00:14:59,909 el cuerpo del método 391 00:14:59,909 --> 00:15:01,129 upload 392 00:15:01,129 --> 00:15:03,450 lo tenéis aquí 393 00:15:03,450 --> 00:15:06,169 vale, dice cuerpo del 394 00:15:06,169 --> 00:15:08,029 método del control el que procesa 395 00:15:08,029 --> 00:15:10,029 el fichero. Este 396 00:15:10,029 --> 00:15:12,090 es. Copia del cuerpo 397 00:15:12,090 --> 00:15:13,990 del método. Lo pegamos en el 398 00:15:13,990 --> 00:15:15,730 método y ahora lo leemos, pero es que no tiene nada. 399 00:15:16,309 --> 00:15:17,210 Vámonos al controller. 400 00:15:17,850 --> 00:15:20,070 Venga. El controller. 401 00:15:21,970 --> 00:15:22,529 Este. 402 00:15:27,340 --> 00:15:28,460 Post mapping 403 00:15:28,460 --> 00:15:30,240 porque este estamos enviando 404 00:15:30,240 --> 00:15:32,039 un fichero, luego lo hacemos por post. 405 00:15:32,860 --> 00:15:34,500 Vale. ¿A qué ruta va este? 406 00:15:34,700 --> 00:15:35,500 A upload. 407 00:15:36,100 --> 00:15:38,360 ¿Vale? Cuando el... 408 00:15:40,360 --> 00:15:44,039 este método va a ser la respuesta 409 00:15:44,039 --> 00:15:45,200 a upload 410 00:15:45,200 --> 00:15:47,480 vale, y este método 411 00:15:47,480 --> 00:15:50,320 no me devuelve 412 00:15:50,320 --> 00:15:51,820 todavía nada para descargar 413 00:15:51,820 --> 00:15:54,200 con lo cual un stream, porque me va a devolver 414 00:15:54,200 --> 00:15:55,779 una vista, si me devuelve una vista 415 00:15:55,779 --> 00:15:58,419 stream, no me complico, me devuelve una vista 416 00:15:58,419 --> 00:16:00,259 no, o sea, lo que habéis 417 00:16:00,259 --> 00:16:01,539 copiado va a ir ahora adentro 418 00:16:01,539 --> 00:16:04,179 ahora, este método es el método 419 00:16:04,179 --> 00:16:05,379 que convierte 420 00:16:05,379 --> 00:16:08,200 xml a json 421 00:16:08,200 --> 00:16:08,960 vale 422 00:16:08,960 --> 00:16:12,000 A ver 423 00:16:12,000 --> 00:16:14,320 Este método 424 00:16:14,320 --> 00:16:17,500 Recibe un file 425 00:16:17,500 --> 00:16:19,860 Claro, ahora lo añadimos 426 00:16:19,860 --> 00:16:22,440 Por ahora, copiad el código 427 00:16:22,440 --> 00:16:23,879 Que hemos hecho 428 00:16:23,879 --> 00:16:25,659 E importáis el post mapping 429 00:16:25,659 --> 00:16:26,960 Vale 430 00:16:26,960 --> 00:16:29,220 Entonces este método 431 00:16:29,220 --> 00:16:31,740 Ya lo que hace 432 00:16:31,740 --> 00:16:33,399 Que lo tenemos fácil es 433 00:16:33,399 --> 00:16:35,879 Coger ese objeto file 434 00:16:35,879 --> 00:16:37,480 Pero claro, lo que nos falta es 435 00:16:37,480 --> 00:16:39,039 ¿De dónde sale el file? 436 00:16:39,039 --> 00:16:40,419 Coge el file 437 00:16:40,419 --> 00:16:41,500 ¿Vale? 438 00:16:42,519 --> 00:16:43,799 Se crea 439 00:16:43,799 --> 00:16:46,820 Un fichero local en esta ruta 440 00:16:46,820 --> 00:16:48,940 Deberíamos sacarla a un final, pero ahí queda muy feo 441 00:16:48,940 --> 00:16:49,899 Deberíamos sacarla a un final 442 00:16:49,899 --> 00:16:52,799 ¿Vale? Crea un archivo local 443 00:16:52,799 --> 00:16:53,799 En esta ruta 444 00:16:53,799 --> 00:16:55,340 Y 445 00:16:55,340 --> 00:16:58,460 Sí 446 00:16:58,460 --> 00:16:59,519 Y 447 00:16:59,519 --> 00:17:01,600 Lo convierte 448 00:17:01,600 --> 00:17:07,400 Y te lleva a una página de descarga 449 00:17:07,400 --> 00:17:08,500 ¿Vale? Entonces 450 00:17:08,500 --> 00:17:09,599 antes de meternos con esto 451 00:17:09,599 --> 00:17:12,359 file es el parámetro 452 00:17:12,359 --> 00:17:14,140 del request que tiene el fichero, ¿verdad? 453 00:17:15,319 --> 00:17:16,660 este index 454 00:17:16,660 --> 00:17:18,599 bueno, no nos va a dar tiempo yo creo a completarlo 455 00:17:18,599 --> 00:17:20,079 pero bueno, lo que lleguemos y ya está 456 00:17:20,079 --> 00:17:21,740 este form de aquí 457 00:17:21,740 --> 00:17:24,599 acordaos de que lleva un parámetro en su request 458 00:17:24,599 --> 00:17:25,759 que es el parámetro file 459 00:17:25,759 --> 00:17:28,799 lleva un parámetro, pues ese parámetro 460 00:17:28,799 --> 00:17:30,660 tiene que llegar al controlador de alguna 461 00:17:30,660 --> 00:17:32,140 manera, tiene que llegar aquí 462 00:17:32,140 --> 00:17:34,099 este es que no tenía parámetro 463 00:17:34,099 --> 00:17:36,700 aquí no le llegaba ningún parámetro 464 00:17:36,700 --> 00:17:38,339 por eso eso estaba vacío 465 00:17:38,339 --> 00:17:41,299 Pero a este sí que le llega un parámetro 466 00:17:41,299 --> 00:17:44,160 Bueno, pues como indicamos que le llega un parámetro 467 00:17:44,160 --> 00:17:45,839 Pues oye tú 468 00:17:45,839 --> 00:17:47,359 Que te va a llegar un parámetro 469 00:17:47,359 --> 00:17:48,940 Una anotación dentro de 470 00:17:48,940 --> 00:17:51,420 Vale, que se llama 471 00:17:51,420 --> 00:17:52,920 Esto no sé seguro 472 00:17:52,920 --> 00:17:55,240 Si se pone value file 473 00:17:55,240 --> 00:17:56,019 Ahora lo miramos 474 00:17:56,019 --> 00:17:59,019 Y ese parámetro guárdalo en 475 00:17:59,019 --> 00:18:01,420 Aquí 476 00:18:01,420 --> 00:18:02,579 Vale 477 00:18:02,579 --> 00:18:04,319 No, perdón, en un multipart 478 00:18:04,319 --> 00:18:04,799 Este 479 00:18:04,799 --> 00:18:09,339 este es el 480 00:18:09,339 --> 00:18:12,660 no me acuerdo el nombre de la clase 481 00:18:12,660 --> 00:18:15,000 bonito que lo tengo aquí, la que tiene un fichero 482 00:18:15,000 --> 00:18:18,759 aquí la tenemos 483 00:18:18,759 --> 00:18:20,619 eso, multipart 484 00:18:20,619 --> 00:18:21,240 vale 485 00:18:21,240 --> 00:18:26,380 vale, a ver 486 00:18:26,380 --> 00:18:35,400 importamos 487 00:18:35,400 --> 00:18:36,240 request para 488 00:18:36,240 --> 00:18:39,380 y aquí esta llave me sobra 489 00:18:39,380 --> 00:18:44,309 Y me falta aquí la llave 490 00:18:44,309 --> 00:18:45,250 Que la tenía mal 491 00:18:45,250 --> 00:18:48,569 Vale, está bien 492 00:18:48,569 --> 00:18:51,869 Bueno, pues a ver 493 00:18:51,869 --> 00:18:52,990 Este es 494 00:18:52,990 --> 00:18:55,529 Voy a formatear 495 00:18:55,529 --> 00:18:59,980 ¿Por qué no ha formateado? 496 00:19:01,019 --> 00:19:01,900 Vale, entonces 497 00:19:01,900 --> 00:19:05,420 ¿Por qué no me hace el format? 498 00:19:08,829 --> 00:19:10,470 No, no está formateado 499 00:19:10,470 --> 00:19:14,819 No, ya lo metí 500 00:19:14,819 --> 00:19:17,380 Bueno, ya lo formatearé, da igual 501 00:19:17,380 --> 00:19:19,339 vale, pues este método 502 00:19:19,339 --> 00:19:21,420 es el método con el que el controlador 503 00:19:21,420 --> 00:19:23,380 resuelve, devuelve 504 00:19:23,380 --> 00:19:25,359 o sea, contesta a Bloat 505 00:19:25,359 --> 00:19:27,779 vale, diferencia de este método 506 00:19:27,779 --> 00:19:29,539 con el anterior, que este 507 00:19:29,539 --> 00:19:31,579 recibe un parámetro en el request 508 00:19:31,579 --> 00:19:32,700 recibe un parámetro 509 00:19:32,700 --> 00:19:35,819 ¿qué parámetro recibe? un fichero 510 00:19:35,819 --> 00:19:37,480 pues yo primero le indico 511 00:19:37,480 --> 00:19:38,759 oye tú, cuidado, método 512 00:19:38,759 --> 00:19:41,400 que tú recibes un parámetro en tu request 513 00:19:41,400 --> 00:19:42,319 que se llama file 514 00:19:42,319 --> 00:19:44,380 guárdamelo 515 00:19:44,380 --> 00:19:46,460 en esta variable 516 00:19:46,460 --> 00:19:53,599 ¿En qué variable guarda Spring un fichero con toda su información de cómo me llamo, etcétera? 517 00:19:54,299 --> 00:19:56,779 En un objeto multipar, ¿vale? 518 00:19:57,539 --> 00:20:02,180 Es decir, el parámetro file que va en el request no es un fichero sin más con datos. 519 00:20:02,819 --> 00:20:07,200 Es el fichero con datos más su nombre, más su tipo, etcétera, ¿vale? 520 00:20:08,019 --> 00:20:11,660 Pues entonces este parámetro no lo puede guardar en un file, no lo guarda en un file. 521 00:20:12,339 --> 00:20:15,319 Lo guarda en un multipar file, ¿vale? 522 00:20:15,319 --> 00:20:17,400 entonces el model para que vale 523 00:20:17,400 --> 00:20:19,500 para crear las vistas, luego lo mencionamos 524 00:20:19,500 --> 00:20:21,740 bueno pues este método, ahora ya si que aquí 525 00:20:21,740 --> 00:20:22,759 metéis el copia y pega 526 00:20:22,759 --> 00:20:25,480 este método es el que convierte a xml 527 00:20:25,480 --> 00:20:26,500 to json, que hace 528 00:20:26,500 --> 00:20:29,599 pues saca los bytes de entrada 529 00:20:29,599 --> 00:20:31,579 crea el fichero local 530 00:20:31,579 --> 00:20:33,779 para guardar 531 00:20:33,779 --> 00:20:35,279 ese fichero localmente 532 00:20:35,279 --> 00:20:45,069 escribe en ese 533 00:20:45,069 --> 00:20:46,069 fichero local 534 00:20:46,069 --> 00:20:48,289 estos bytes que he sacado 535 00:20:48,289 --> 00:21:01,069 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. 536 00:21:01,069 --> 00:21:09,019 El model lo importas de sprint, sí 537 00:21:09,019 --> 00:21:11,819 Aquí importamos 538 00:21:11,819 --> 00:21:14,940 Bueno, habría que importar file de java.io 539 00:21:14,940 --> 00:21:20,220 Ahora, convertimos de XML a JSON nuestro fichero local 540 00:21:20,220 --> 00:21:21,900 Que es este 541 00:21:21,900 --> 00:21:30,759 Convertimos nuestro fichero local de XML a JSON 542 00:21:30,759 --> 00:21:34,599 Y ahora devolvemos la vista 543 00:21:34,599 --> 00:21:37,180 La vista es la página de descarga 544 00:21:37,180 --> 00:21:39,839 la página de descarga 545 00:21:39,839 --> 00:21:43,619 entonces ahora 546 00:21:43,619 --> 00:21:44,900 ¿qué nos falta por hacer? 547 00:21:45,279 --> 00:21:46,339 ¿qué nos falta por copiar? 548 00:21:47,519 --> 00:21:49,440 vamos a copiar este método de utilidades 549 00:21:49,440 --> 00:21:50,960 no hace falta que lo hagáis vosotros 550 00:21:50,960 --> 00:21:53,640 sí, vamos a hacer la clase 551 00:21:53,640 --> 00:21:55,980 y luego copiáis de la chuleta 552 00:21:55,980 --> 00:21:57,000 entonces vamos a hacer 553 00:21:57,000 --> 00:21:58,579 el paquete 554 00:21:58,579 --> 00:22:01,900 donde queráis que esté 555 00:22:01,900 --> 00:22:03,599 pues por ejemplo 556 00:22:03,599 --> 00:22:05,559 aquí 557 00:22:05,559 --> 00:22:07,799 sí, pero vamos a hacer 558 00:22:07,799 --> 00:22:11,539 new package 559 00:22:11,539 --> 00:22:15,819 com.dam2.app 560 00:22:15,819 --> 00:22:20,779 web.utilidades 561 00:22:20,779 --> 00:22:24,779 por ejemplo, utilidades 562 00:22:24,779 --> 00:22:30,349 vale, en utilidades os hacéis la clase utilidades 563 00:22:30,349 --> 00:22:39,019 y ahora, aquí ya en esta clase utilidades 564 00:22:39,019 --> 00:22:40,420 vamos a hacernos este método 565 00:22:40,420 --> 00:22:44,359 este metodito que transforma xml a json 566 00:22:44,359 --> 00:22:45,980 copiar 567 00:22:45,980 --> 00:22:51,440 para transformar 568 00:22:51,440 --> 00:22:53,359 y ahora vamos a hacer aquí el método 569 00:22:53,359 --> 00:22:55,339 ¿qué nombre le hemos dado al método? 570 00:22:56,519 --> 00:22:57,759 xml to json 571 00:22:57,759 --> 00:22:59,400 vamos a hacer un método que se llame así 572 00:22:59,400 --> 00:23:02,740 xml 573 00:23:02,740 --> 00:23:05,359 public 574 00:23:05,359 --> 00:23:07,940 static void 575 00:23:07,940 --> 00:23:09,940 xml 576 00:23:09,940 --> 00:23:11,759 to json 577 00:23:12,519 --> 00:23:13,559 ahora 578 00:23:13,559 --> 00:23:15,759 copiar 579 00:23:16,059 --> 00:23:45,410 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. 580 00:23:45,410 --> 00:23:50,109 ya está nuestro método de utilidades 581 00:23:50,109 --> 00:23:51,630 a falta de las dependencias 582 00:23:51,630 --> 00:23:54,529 importamos file 583 00:23:54,529 --> 00:23:57,150 y ahora 584 00:23:57,150 --> 00:24:00,009 ¿qué pasa con 585 00:24:00,009 --> 00:24:02,329 fijaos el JSON node 586 00:24:02,329 --> 00:24:04,089 me lo ofrece 587 00:24:04,089 --> 00:24:05,750 directamente porque Spring 588 00:24:05,750 --> 00:24:07,549 ya incorpora Jackson dentro 589 00:24:07,549 --> 00:24:08,650 ¿vale? 590 00:24:09,589 --> 00:24:11,549 ya incorpora Jackson dentro 591 00:24:11,549 --> 00:24:13,670 xml mapper 592 00:24:13,670 --> 00:24:16,170 está en otra 593 00:24:16,170 --> 00:24:18,009 dependencia, que la ponemos ahora 594 00:24:18,009 --> 00:24:18,750 no pasa nada 595 00:24:18,750 --> 00:24:20,809 el object mapper 596 00:24:20,809 --> 00:24:22,410 ¿cómo buscaría yo? 597 00:24:22,890 --> 00:24:24,250 si no sé de qué librería es 598 00:24:24,250 --> 00:24:26,410 me pasa un proyecto así, ¿cómo lo busco? 599 00:24:27,250 --> 00:24:28,049 ¿cómo buscaría yo? 600 00:24:28,430 --> 00:24:30,569 hombre, a ver, es que si tú tienes un proyecto 601 00:24:30,569 --> 00:24:32,930 que está usando objetos, ya va a tener sus propios import 602 00:24:32,930 --> 00:24:33,509 claro 603 00:24:33,509 --> 00:24:40,609 buscas en el infinito 604 00:24:40,609 --> 00:24:42,589 pero bueno, es una situación normal 605 00:24:42,589 --> 00:24:44,869 una situación más normal puede ser que tú tengas que hacer 606 00:24:44,869 --> 00:24:46,690 algo y no sabes 607 00:24:46,690 --> 00:24:48,750 en qué librería hay que te puede hacer 608 00:24:48,750 --> 00:24:50,529 eso, pero ahí ya sí que es buscar 609 00:24:50,529 --> 00:24:53,289 en, claro, entonces 610 00:24:53,289 --> 00:24:56,750 perdón, que he puesto aquí void 611 00:24:56,750 --> 00:24:58,910 y aquí te devuelve un file, lógicamente 612 00:24:58,910 --> 00:25:00,769 vale, entonces 613 00:25:00,769 --> 00:25:02,869 este método, ahora ya sí que 614 00:25:02,869 --> 00:25:04,710 es un método que no es 615 00:25:04,710 --> 00:25:06,910 solo para un xml que siga un esquema 616 00:25:06,910 --> 00:25:08,210 concreto como el recetario 617 00:25:08,210 --> 00:25:10,029 esta versión la ampliamos 618 00:25:10,029 --> 00:25:12,930 este objeto xml 619 00:25:12,930 --> 00:25:14,890 mapper es capaz 620 00:25:14,890 --> 00:25:16,970 de leerte un 621 00:25:16,970 --> 00:25:17,630 xml 622 00:25:17,630 --> 00:25:20,630 y guardártelo en un json node 623 00:25:20,630 --> 00:25:22,970 que ya sabemos lo que es un json node del otro día 624 00:25:22,970 --> 00:25:24,970 un nodo json con todos 625 00:25:24,970 --> 00:25:26,289 sus nodos hijos json 626 00:25:26,289 --> 00:25:28,849 pues es capaz de guardar un nodo json 627 00:25:28,849 --> 00:25:30,869 pues ya está, con el object mapper 628 00:25:30,869 --> 00:25:33,210 escribo el nodo json al fichero 629 00:25:33,210 --> 00:25:34,170 y ya lo tengo convertido 630 00:25:34,170 --> 00:25:35,450 ¿vale? 631 00:25:36,509 --> 00:25:38,029 ¿lo convierte en clases de... 632 00:25:38,029 --> 00:25:39,730 claro, en un fichero json 633 00:25:39,730 --> 00:25:42,630 entonces este, pues bueno, es lo mismo que hemos hecho en otro sitio 634 00:25:42,630 --> 00:25:44,849 que es coger el nombre del fichero JSON 635 00:25:44,849 --> 00:25:46,490 que es cambiándole la extensión 636 00:25:46,490 --> 00:25:48,509 y ya está 637 00:25:48,509 --> 00:25:50,210 ¿vale? entonces 638 00:25:50,210 --> 00:25:52,190 el XMLMapper este 639 00:25:52,190 --> 00:25:57,210 estará 640 00:25:57,210 --> 00:25:58,609 lo que pasa es que creía yo 641 00:25:58,609 --> 00:25:59,809 que en Spring ya te lo iba 642 00:25:59,809 --> 00:26:02,450 a ofrecer 643 00:26:02,450 --> 00:26:04,049 pero 644 00:26:04,049 --> 00:26:05,210 ¿vale? 645 00:26:06,589 --> 00:26:07,589 venga, lo repito 646 00:26:07,589 --> 00:26:08,829 si estoy para o no me odien 647 00:26:08,829 --> 00:26:10,589 lo único que he dicho es 648 00:26:10,589 --> 00:26:12,829 que la dinámica de trabajo aquí con Sprint 649 00:26:12,829 --> 00:26:14,609 para la aplicación web sería más fácil. 650 00:26:15,289 --> 00:26:17,329 Yo identifico las cosas que tengo que hacer. 651 00:26:17,869 --> 00:26:18,769 La llamada raíz, 652 00:26:19,289 --> 00:26:20,250 la llamada upload, 653 00:26:20,569 --> 00:26:21,529 la llamada download. 654 00:26:22,289 --> 00:26:24,210 Por cada ruta, por cada URL, 655 00:26:24,569 --> 00:26:25,750 un método del controlador. 656 00:26:26,369 --> 00:26:27,710 Con el nombre que a mí me dé la gana. 657 00:26:28,049 --> 00:26:28,470 Se acabó. 658 00:26:29,329 --> 00:26:31,109 Los métodos del controlador, 659 00:26:32,490 --> 00:26:34,250 si no reciben nada, 660 00:26:34,250 --> 00:26:35,730 hay vacío. 661 00:26:36,509 --> 00:26:38,130 Y string si devuelven vista. 662 00:26:39,170 --> 00:26:40,230 Y si reciben algo, 663 00:26:40,589 --> 00:26:43,390 requestParam con el nombre de lo que recibe 664 00:26:43,390 --> 00:26:46,089 y aquí el parámetro 665 00:26:46,089 --> 00:26:48,910 con el tipo de datos. Si fuera texto, string. 666 00:26:49,750 --> 00:26:50,910 Hago lo que tenga que hacer 667 00:26:50,910 --> 00:26:51,809 y devuelvo la vista. 668 00:26:52,690 --> 00:26:52,890 ¿Vale? 669 00:26:54,269 --> 00:26:57,130 Venga, pues ahora sí que sí