同福

SpringBoot处理静态资源文件的方法【20211125】

介绍

介绍

福哥今天带着大家了解一下SpringBoot如何处理静态资源文件的。静态资源文件包括CSS样式表、图片文件(jpg、png、gif)、JavaScript脚本以及各种媒体、压缩包等等内容,总结一句话就是非配置文件、非Java的文件。

静态资源文件是不需要经过编译、执行的,最好的处理方式是通过Nginx直接处理。但是我们在开发调试阶段是没有Nginx服务器的,只能通过Tomcat进行处理,这时候就需要了解一下如何在SpringBoot项目里面处理这些静态的资源文件了。

目录

目录

SpringBoot给我们预留了资源文件的根目录,就是main下面的resources,和java在同一目录下。然后,如果我们在resources下面建立staitc、public、resources这几个目录的话,最后都会被SpringBoot当作静态目录使用。

优先级

如果我们在static、public、resources里面建立了同样的目录结构,放入了同名的文件,那么最后哪个目录下面的文件会被使用呢?

记住下面这个优先级顺序,就好办了!

resources > static > public

虽然resources的优先级是最高的,不过福哥还是推荐使用static这个目录名称,比较这个单词更加符合我们放入的文件的意思嘛~~

测试

index.ftl

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>demo</title>
    <link type="text/css" href="/css/index.css" rel="stylesheet" />
    <script type="text/javascript" src="/js/index.js"></script>
</head>
<body>

<h3>福哥的demo</h3>
<p>
    这是福哥的一个demo项目,用来给大家做教程使用!
</p>
<span id="browser"></span><br />
<span>http://demo.tongfu.net/</span>

</body>
</html>

index.css

body{
    font-size: 12px;
}

index.js

document.onreadystatechange=function(){
    document.getElementById('browser').innerHTML = navigator.appName;
};

home/topic/2021/1124/15/bb1211a3db7229f356d015fade5e2d6b.png

认证

如果我们的项目有认证设计,那么就需要针对静态的资源文件进行“免认证”设置,这个可以通过antMatchers进行配置,可以通过“*”通配符进行批量设置。

security
        .csrf().disable()

        .authorizeRequests()

        .antMatchers("/css/*", "/images/*", "/js/*").permitAll()

        .anyRequest()
        .authenticated()

        .and()

        .httpBasic()
        ;

总结

今天福哥带着童鞋们学习了如何在SpringBoot框架里面处理静态资源文件。我们可以使用freemarker去处理页面html,在html里面引用这些静态资源文件,综合这些就可以满足web平台的开发需求了!