Spring Boot provides convenient ways to handle static resources such as images, JavaScript files, and CSS stylesheets. When packaging your application, Spring Boot automatically includes certain directories and excludes others.
Default included directories:
public/**, resources/**, static/**, templates/**, META-INF/resources/**, *
Default excluded directories:
.*, repository/**, build/**, target/**, **/*.jar, **/*.groovy
1. By default, Spring Boot serves static resources from specific locations within your classpath:
classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources
2. You can configure view resolution in your application.properties file to map to specific directories, though this approach is not recommended:
spring.mvc.view.prefix=/templates/
spring.mvc.view.suffix=.html
3. For more control over static resource serving, you can create a configuration class:
/**
* Custom configuration for static resource handling
*/
@Configuration
public class WebAssetConfig implements WebMvcConfigurer {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// Map all /assets/** requests to classpath:/assets/
registry.addResourceHandler("/assets/**")
.addResourceLocations("classpath:/assets/");
}
}
Example 1: Custom static resource mapping
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
// Map /web-resources/** to classpath:/web-resources/js/
registry.addResourceHandler("/web-resources/**")
.addResourceLocations("classpath:/web-resources/js/");
}
After creating your static resource files, you can access them at: http://localhost:8080/web-resources/sample.html
Example 2: Controller-based mapping
@RequestMapping("/web-content")
public String serveWebContent() {
return "/web-resources/sample.html";
}
Access this at: http://localhost:8080/web-content
Related Articles
Understanding Strong and Weak References in Java
Strong References Strong reference are the most prevalent type of object referencing in Java. When an object has a strong reference pointing to it, the garbage collector will not reclaim its memory. F...
Comprehensive Guide to SSTI Explained with Payload Bypass Techniques
Introduction Server-Side Template Injection (SSTI) is a vulnerability in web applications where user input is improper handled within the template engine and executed on the server. This exploit can r...
Implement Image Upload Functionality for Django Integrated TinyMCE Editor
Django’s Admin panel is highly user-friendly, and pairing it with TinyMCE, an effective rich text editor, simplifies content management significantly. Combining the two is particular useful for bloggi...