springboot静态资源访问路径

本文介绍SpringBoot中静态资源的默认配置与自定义方法。包括如何正确放置静态文件以供应用访问,解决无法加载资源的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在springboot中约定大于配置,当然对静态资源也有默认的约定。

Spring Boot 默认将 /** 所有访问映射到以下目录:

classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources
所以大家在访问静态资源时就不需要加/static,/public这些前缀了,人家springboot都给你默认映射了,你再添加不是画蛇添足吗?

下面我将通过一个小demo来给大家展示一下

项目路径:

static ——可以将css/js/images文件放到这里
templates —— 可以将网页文件放在这里

index.ftl

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
正确使用姿势:
<img src="/images/test.jpg">
错误使用姿势:
<img src="/static/images/test.jpg">
hello world
</body>
</html>

controller

@Controller
public class HelloController {
    
    @RequestMapping("/")
    public String index(ModelMap map, HttpServletRequest request) {
        return "index";
    }
}

在浏览器地址栏输入    http://localhost:8080/

下面就是显示的效果了(大家自己去意会)

总结:在springboot有些配置它已经默认配置好了,大家要注意这些默认配置,不要在这上面不停的采坑。

扩展

SpringBoot关于默认静态资源访问路径定义及自定义设置

如果您使用Spring Boot开发Web应用程序时,遇到无法访问static目录下的资源(如js、css、图片等),可以尝试以下几种解决方法:

  1. 确认static目录位置 在Spring Boot应用程序中,默认情况下,静态资源应该位于classpath:/static目录下。您可以在src/main/resources目录下创建一个static目录,并将您的静态资源放置其中。确保您的静态资源确实存储在该目录下。

  2. 确认静态资源是否被映射 Spring Boot会自动将classpath:/static目录下的静态资源映射到根路径下。例如,如果您的应用程序的上下文路径为“/”,则路径“/js/myscript.js”将映射到classpath:/static/js/myscript.js。如果您的静态资源没有被正确映射到根路径下,可以在应用程序的配置类中添加以下代码:

```

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

```

该代码将将classpath:/static目录下的所有资源映射到根路径下。

        3. 确认静态资源是否被正确引用 确保您的HTML页面中引用的静态资源路径正确。如果您的静态资源存储在static目录的子目录中,则需要使用相对路径或绝对路径来引用它们。例如,如果您的HTML页面在templates目录下,而静态资源在static/js目录下,则可以在HTML页面中使用以下代码引用脚本:

```

<script src="../static/js/myscript.js"></script>

```

上述方法可以帮助您解决Spring Boot无法访问static目录下的资源的问题。如果您仍然遇到问题,请检查应用程序的日志文件,以查看是否有其他异常信息。

<think>好的,我现在需要帮助用户解决在Spring Boot中配置静态资源访问路径的问题。首先,我应该回忆一下Spring Boot处理静态资源的默认行为。根据引用的内容,Spring Boot默认会从classpath下的/META-INF/resources、/resources、/static和/public目录加载静态资源,优先级依次降低[^2]。用户可能想知道如何修改这些默认设置或者添加自定义路径。 接下来,用户需要示例,所以我应该提供具体的配置方法。引用中提到可以通过配置类实现WebMvcConfigurer接口,并重写addResourceHandlers方法[^3]。例如,添加一个自定义路径如classpath:/cxy35/,然后通过registry.addResourceHandler指定URL模式,再addResourceLocations指定实际路径。这时候需要确保代码示例正确,并且解释每个部分的作用。 另外,用户可能还想知道如何调整默认目录的优先级或者覆盖默认设置。比如,如果配置了自定义路径,默认的静态资源路径是否仍然有效?根据引用,当自定义配置后,默认路径仍然有效,但优先级可能根据添加顺序不同而变化。不过通常自定义的路径会被优先考虑,特别是如果使用了/**这样的通配符,可能会覆盖默认设置,所以需要注意顺序问题。 还有,用户可能关心如何访问这些静态资源。比如,如果图片放在static/images目录下,可以通过http://localhost:8080/images/photo.jpg访问[^5]。这部分需要明确说明URL的映射规则,以及如何根据目录结构访问资源。 另外,引用中提到了WebJars的使用,比如jquery可以通过/webjars/jquery/...访问。这部分可能对需要使用前端库的用户有帮助,但用户的问题主要集中在配置路径上,所以可能需要简要提及,但重点还是在自定义配置。 还要注意,用户提供的引用中有关于配置类WebMvcConfig的示例,需要确保代码正确,比如使用@Configuration注解,并实现WebMvcConfigurer接口,然后在addResourceHandlers方法中注册资源处理程序[^3]。 可能用户在实际操作中会遇到的问题包括路径配置错误,资源无法访问,或者优先级问题。比如,如果自定义路径没有正确指定classpath:前缀,或者资源位置不存在,都会导致404错误。这时候需要提醒用户检查路径是否正确,以及资源是否存在于指定目录中。 此外,引用4提到静态资源访问顺序和不同目录的用途,比如static用于前端资源,public用于公共资源[^4]。这可能帮助用户决定如何组织他们的静态文件,但用户的问题更关注如何配置访问路径,所以这部分可以作为补充信息。 最后,用户可能需要知道如何同时保留默认路径和添加自定义路径。例如,在配置类中多次调用addResourceHandler,或者在一个addResourceHandler中添加多个资源位置。这需要确保代码示例中展示如何同时配置多个路径,并说明优先级问题。 总结下来,我的回答应该包括默认配置、自定义配置的示例代码、访问方式、注意事项以及相关问题。需要确保使用正确的LaTeX格式,比如行内公式用$...$,独立公式用$$...$$,但在这个问题中可能涉及较少数学公式,更多是代码和配置说明。需要检查是否有需要数学表达的地方,比如路径优先级可以视为顺序列表,但不需要数学符号,所以可能不需要使用LaTeX。但根据系统级指令,所有行内数学表达式必须使用$...$格式,所以需要留意是否有相关部分需要调整。</think>在Spring Boot中配置静态资源访问路径,可通过默认配置或自定义配置实现,以下是具体方法和示例: --- ### 一、默认静态资源路径 Spring Boot默认从以下目录加载静态资源(优先级从高到低): 1. `classpath:/META-INF/resources/` 2. `classpath:/resources/` 3. `classpath:/static/` 4. `classpath:/public/` 例如,将图片`photo.jpg`放在`src/main/resources/static/images/`目录下,可通过URL直接访问: ``` http://localhost:8080/images/photo.jpg ``` --- ### 二、自定义静态资源路径 若需添加自定义路径,需通过配置类覆盖默认行为: ```java @Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // 配置自定义路径(示例:classpath:/custom-static/) registry.addResourceHandler("/**") .addResourceLocations("classpath:/custom-static/"); // 保留默认配置(可选) registry.addResourceHandler("/default/**") .addResourceLocations("classpath:/static/"); } } ``` - **`addResourceHandler`**:定义URL匹配模式(如`/**`匹配所有请求)。 - **`addResourceLocations`**:指定实际资源路径(支持`classpath:`、`file:`等前缀)[^5]。 --- ### 三、访问优先级说明 1. 自定义路径的优先级高于默认路径。 2. 若需同时保留默认路径,需显式配置(如上述代码中的`/default/**`)。 --- ### 四、WebJars资源映射 若使用WebJars(如jQuery),可通过以下URL访问: ``` http://localhost:8080/webjars/jquery/3.6.0/jquery.js ```[^2] --- ### 五、注意事项 1. 配置路径需以`/`结尾(如`classpath:/custom-static/`)。 2. 避免与控制器请求路径冲突。 3. 生产环境建议使用CDN或Nginx托管静态资源。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值