En los dos primeros capítulos, compartimos el soporte de Spring Boot para RESTFUL, pero la interfaz RESTFUL generalmente solo devuelve datos. Al hacer desarrollo web, a menudo tenemos muchos recursos estáticos, como HTML, imágenes, CSS, etc. Entonces, ¿cómo devuelve los recursos estáticos a la parte delantera? Los estudiantes que han hecho desarrollo web antes deben saber que habrá un directorio web en el proyecto web que creamos antes, y podemos acceder directamente a él colocando recursos estáticos en este directorio. Sin embargo, los proyectos basados en Boot de primavera no tienen este directorio, entonces, ¿cómo debemos lidiar con él?
1. La forma más estúpida
Primero compartamos la forma más estúpida, que es devolver los recursos estáticos directamente al front-end a través de la corriente. Creamos un directorio HTML en el directorio raíz de los recursos del proyecto Maven, y luego colocamos el archivo HTML en este directorio y especificamos que cualquier ruta de acceso comienza con / estática / es acceder a los recursos estáticos en el directorio. La implementación es la siguiente:
@ControllerPublic Class staticResourCeController {@RequestMapping ("/static/**") public void gethtml (httpservletRequest solicitud, respuesta httpServletResponse) {String uri = request.getRequuri (); Cadena [] arr = uri.split ("static/"); String ResourceName = "index.html"; if (arr.length> 1) {resourceName = arr [1]; } String url = staticResourCecontroller.class.getResource ("/"). GetPath () + "html/" + resurgeName; intente {FileReader Reader = New FileReader (nuevo archivo (URL)); BufferedReader BR = New BufferedReader (lector); StringBuilder sb = new StringBuilder (); Línea de cadena = br.readline (); while (line! = null) {sb.append (línea); línea = br.readline (); } Respuesta.getOutputStream (). Write (SB.ToString (). GetBytes ()); respuesta.flushbuffer (); } catch (ioException e) {E.PrintStackTrace (); }}}El proceso de implementación es muy simple, que primero es separar el URI de recursos de la ruta, luego leer el archivo desde el directorio estático y emitirlo a la parte delantera. Debido a que es solo una demostración simple, solo se procesan los archivos de tipo texto aquí, y los archivos de imagen se pueden procesar de manera similar. Por supuesto, definitivamente no haremos esto en realidad, y Spring Boot definitivamente tendrá una mejor solución. Sin embargo, aunque este método es un poco estúpido, de hecho es lo más esencial. No importa cuán conveniente el marco nos ayude a lidiar con este tipo de problema, pero aparte del marco, aún necesitamos poder escribir un proyecto web de manera competente. Solo conociendo el principio de implementación puede poder manejar problemas cuando encuentre problemas. Ahora echemos un vistazo al soporte de Spring Boot para recursos estáticos.
2. Método de acceso de recursos estáticos predeterminados de arranque de primavera
Spring Boot puede acceder directamente a los archivos en cuatro directorios de forma predeterminada:
classpath:/public/
classpath:/recursos/
classpath:/static/
classpath:/metainfo/resouces/
Ahora creamos los siguientes cuatro directorios en el directorio de recursos de archivo de recursos:
Tenga en cuenta que los recursos de la carpeta de recursos debajo de la barra azul son diferentes de la carpeta classpath:/recursos en el classpath. Los recursos en la barra azul representan que los archivos en el directorio son archivos de recursos. Al empaquetar, todos los archivos en el directorio se empaquetarán. Este nombre se puede cambiar. Puede especificar el directorio de recursos en pom.xml:
<Rources> <RonceSce> <Sirectory> Src/Main/Resources </Directory> </ recursos> </rismos>
Los recursos en el ClassPath son una de las carpetas de recursos estáticos predeterminados de Spring Boot, y las funciones son las mismas que los recursos públicos, estáticos y de carne. Ahora podemos reiniciar la bota de primavera y podemos pasar
http: // localhost: 8080/1.html
http: // localhost: 8080/2.html
http: // localhost: 8080/3.html
http: // localhost: 8080/4.html
Cuatro URL acceden a recursos estáticos en cuatro directorios.
3. Personalizar el directorio de recursos estáticos
A través de la segunda sección, ya conocemos el directorio de los recursos estáticos a los que Spring Boot puede acceder de manera predeterminada, pero todos definitivamente pensarán, ¿está arreglado este directorio? ¿Podemos definir los directorios de recursos estáticos nosotros mismos? La respuesta es sí. Ahora personalizamos un directorio de recursos estáticos. Definimos un directorio de imágenes para almacenar imágenes. All /Image /** rutas accederán a los recursos en el directorio de imágenes:
@ConfigurationPublic Class ImageMVCConfig extiende WebMVCConfigurerAdapter {@Override public Void AddResourceHandlers (Registro de ResourceHandlerRegistry) {Registry.AddResourceHandler ("/Image/**") .AddResourCelocations ("Classpath:/Images/"); }}Este código debe ser relativamente simple. @Configuration identifica una clase de configuración, que se ha mencionado muchas veces en el artículo anterior. WebMVCCONFIGERAdapter es un adaptador para configurar MVC proporcionado por Spring. Tiene muchos métodos de configuración. AddResourceHandlers es un método que se especializa en el manejo de recursos estáticos. Hablaremos sobre otros métodos más adelante. Ahora estamos verificando si la configuración anterior es válida. Puse una imagen Spring.jpg en el directorio de imágenes. Ahora accedemos a la imagen a través de http: // localhost: 8080/image/spring.jpg:
De hecho, además del método anterior, hay otro método más simple, que es configurarlo directamente en Application.yml:
Spring: MVC: static-path-patern:/image/** recursos: locations static: classpath:/images/
static-path-patern: modo de acceso, predeterminado es /**, múltiples se puede separar mediante coma
Locaciones estáticas: directorio de recursos, separado por comas por múltiples directorios, el directorio de recursos predeterminado es classpath:/meta -inf/recursos/, classpath:/recursos/, classpath:/static/, classpath:/public/
Tenga en cuenta que esta configuración sobrescribirá el directorio de recursos estáticos predeterminados de Spring Boot. Por ejemplo, si está configurado en el ejemplo, ya no puede acceder a los recursos en directorios estáticos, públicos, de recursos, etc.
4. Resumen
Este artículo comparte principalmente con usted cómo Spring Boot maneja los recursos estáticos. Spring Boot puede acceder a los recursos estáticos en los cuatro directorios: classpath:/meta -inf/recursos/, classpath:/recursos/, classpath:/static/, classpath:/public/de forma predeterminada. También podemos personalizar la configuración de acuerdo con nuestras necesidades. Finalmente, debe tenerse en cuenta que si hay recursos con el mismo nombre en estos cuatro directorios, ¿qué directorio se devolverán los recursos bajo los cuales se devolverán primero? Debería poder adivinar a través del orden predeterminado de ubicaciones estáticas. Por defecto, Spring Boot devolverá los recursos en /metainf /recursos primero. Por supuesto, debido a que podemos personalizar el valor de las ubicaciones estáticas, esta prioridad también se puede ajustar.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.