达永编程网

程序员技术分享与交流平台

Spring Boot 入门-静态资源

定义

在Web开发中,静态资源指的是那些在服务器端不需要动态生成,可以直接提供给客户端的资源,如HTML、CSS、JavaScript、图片、字体等文件。这些资源通常都是一些静态的文件,不需要依赖后端程序的计算和处理,客户端可以直接访问和使用这些资源。

在Spring Boot中,静态资源通常被放置在“classpath:/static/”或“classpath:/public/”或“classpath:/resources/”目录下。Spring Boot提供了一些默认的静态资源处理路径,例如:

/webjars/**: 对应Maven仓库中的WebJars资源

/META-INF/resources/**: 对应JAR包中的资源

/resources/, /static/, /public/**: 对应应用程序中的资源

Spring Boot的静态资源处理器会自动搜索并处理这些目录下的静态资源文件,然后将它们暴露给Web应用程序的客户端。可以通过在控制器中使用@RequestMapping注解来映射到静态资源文件,例如:

@Controller
public class MyController {
    @RequestMapping("/myresource")
    public String myResource() {
        return "index.html";
    }
}

当访问“/myresource”路径时,Spring Boot会将该路径映射到“
classpath:/static/index.html”文件,然后将其返回给客户端。

修改静态资源路径

在spring boot 中可以通过配置类,修改默认静态资源指定的目录

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {

        //必须加"/",不然映射不到
        String staticFolderPath = "D:/test/";

        //通过/static/ 进行访问静态资源
        registry.addResourceHandler(String.format("/%s/**", "static"))
          .addResourceLocations("file:" + staticFolderPath);

    }
}

程序把“D:/test”目录作为静态资源的目录,static作为访问地址。这样我们就可以通过"http://ip:port/static/.."访问D:/test目录下的资源了。

注意:目录后必须加上“/”否则不能正确访问

配置多个静态资源路径

如果需要配置多个静态资源路径,可以通过以下方式进行配置:

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("/assets/**").addResourceLocations("classpath:/assets/");
    }
}

这将把静态资源分别放置在“/static”和“/assets”目录下。

访问静态资源原理

在Spring Boot中,静态资源的处理是通过
ResourceHttpRequestHandler来实现的。
ResourceHttpRequestHandler是一个处理静态资源请求的处理器,它可以将请求映射到本地文件系统或类路径资源。当Spring Boot应用接收到静态资源请求时,DispatcherServlet会将请求转发到
ResourceHttpRequestHandler进行处理。


ResourceHttpRequestHandler会使用ResourceResolver来解析请求的资源路径,并使用ResourceLoader来加载资源。如果找到了请求的资源,
ResourceHttpRequestHandler会使用HttpServletResponse将该资源返回给客户端。如果请求的资源不存在,
ResourceHttpRequestHandler会返回一个404错误响应。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言