Saltar al contenido

como puedo servir static html desde el arranque de primavera?

Después de de una extensa selección de información hemos podido solucionar esta traba que pueden tener algunos los lectores. Te compartimos la respuesta y nuestro objetivo es serte de mucha apoyo.

Solución:

Los archivos estáticos se deben servir desde los recursos, no desde el controlador.

Spring Boot agregará automáticamente static recursos web ubicados dentro de cualquiera de los siguientes directorios:

/META-INF/resources/  
/resources/  
/static/  
/public/

referencias:
https://spring.io/blog/2013/12/19/serving-static-web-contenido-con-spring-boot
https://spring.io/guides/gs/serving-web-content/

En bota de primavera, /META-INF/resources/, /resources/, static/ y public/ directorios están disponibles para servir static contenido.

Así que puedes crear un static/ o public/ directorio bajo resources/ directorio y pon tu static contenidos allí. Y serán accesibles por: http://localhost:8080/your-file.ext. (suponiendo que server.port es 8080)

Puede personalizar estos directorios usando spring.resources.static-locations en el application.properties.

Por ejemplo:

spring.resources.static-locations=classpath:/custom/

Ahora puedes usar custom/ carpeta debajo resources/ servir static archivos

Actualizar:

Esto también es posible usando la configuración de Java:

@Configuration
public class StaticConfig implements WebMvcConfigurer 

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) 
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/custom/");
    

Esta confugracion mapea contenidos de custom directorio a la http://localhost:8080/static/** dirección URL

estoy usando :: Spring Boot :: (v2.0.4.RELEASE) with Spring Framework 5

Spring Boot 2.0 requiere Java 8 como versión mínima. Muchas API existentes se han actualizado para aprovechar las características de Java 8, como: métodos predeterminados en las interfaces, devoluciones de llamadas funcionales y nuevas API como javax.time.

Contenido estático

Por defecto, Spring Boot sirve static contenido de un directorio llamado /static (o /público o /recursos o /META-INF/resources) en el classpath o desde la raíz del ServletContext. Utiliza ResourceHttpRequestHandler de Spring MVC para que pueda modificar ese comportamiento agregando su propio WebMvcConfigurer y anulando el addResourceHandlers método.

De forma predeterminada, los recursos se asignan en /** y ubicado en /static directorio. Pero puedes personalizar el static loactions programáticamente dentro de nuestra clase de configuración de contexto web.

@Configuration @EnableWebMvc
public class Static_ResourceHandler implements WebMvcConfigurer 

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) 
        // When overriding default behavior, you need to add default(/) as well as added static paths(/webapp).

        // src/main/resources/static/...
        registry
            //.addResourceHandler("/**") // « /css/myStatic.css
            .addResourceHandler("/static/**") // « /static/css/myStatic.css
            .addResourceLocations("classpath:/static/") // Default Static Loaction
            .setCachePeriod( 3600 )
            .resourceChain(true) // 4.1
            .addResolver(new GzipResourceResolver()) // 4.1
            .addResolver(new PathResourceResolver()); //4.1

        // src/main/resources/templates/static/...
        registry
            .addResourceHandler("/templates/**") // « /templates/style.css
            .addResourceLocations("classpath:/templates/static/");

        // Do not use the src/main/webapp/... directory if your application is packaged as a jar.
        registry
            .addResourceHandler("/webapp/**") // « /webapp/css/style.css
            .addResourceLocations("/");

        // File located on disk
        registry
            .addResourceHandler("/system/files/**")
            .addResourceLocations("file:///D:/");
    

http://localhost:8080/handlerPath/resource-path+name
                    /static         /css/myStatic.css
                    /webapp         /css/style.css
                    /templates      /style.css

En Spring, todas las solicitudes pasarán por DispatcherServlet. Para evitar la solicitud de archivos estáticos a través de DispatcherServlet (controlador frontal), configuramos el contenido estático de MVC.

Como @STEEL dijo static los recursos no deben pasar por Controller. Thymleaf es un ViewResolver que toma el controlador de forma de nombre de vista y agrega prefix y suffix a Ver capa.

Reseñas y puntuaciones del artículo

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *