zoukankan      html  css  js  c++  java
  • Springboot系列(四)web静态资源配置详解

    Springboot系列(四)web静态资源配置

    往期精彩

    1. SpringBoot系列(一)idea新建Springboot项目
    2. SpringBoot系列(二)入门知识
    3. SpringBoot系列(三)配置文件详解完整版

    引言:
    SpringBoot web项目开发中往往会涉及到一些静态资源的使用,比如说图片,css样式,js等等,今天我们来讲讲这些常见的静态资源应该放在哪个位置,怎么放在自己想放的位置。

    目录

    1. 项目创建
    2. 资源文件配置与访问
      1.Springboot中默认的静态资源路径
      2.自定义静态资源路径
      3.两种访问静态资源的方式
    3. 其他静态资源路径配置方式
      1.继承WebMvcConfigurerAdapter
      2.优化配置

    1. 项目创建

    我们先创建一个空的项目,项目的依赖配置为starter-web依赖,创建好的项目下面有一个resources文件夹,里面有一些空的默认的文件夹,然后有一个配置文件。

    templates文件下面一般是放置模板页面的,比如html,jsp之类的,static文件一般是是放置静态资源,比如说,图片,文件等等。

    我们放置了文件或者是图片就需要访问这个文件,看看怎么才能有效的实现访问这些静态资源文件,以及自己访问自己定义好的资源访问路径。

    2. 资源文件访问与配置

    一般来说,我们是做前后端分离的,Springboot就作为后端,但是Springboot依然支持有html文件等,实现前后端在一个项目里面。也就是Springboot web项目。

    首先,我们在templates文件夹下面创建一个名为index的html5页面,然后随便写一点东西,然后在配置文件中,配置一个项目启动端口。

    html5文件

    配置文件端口配置不再讲解,前一期里面有配置文件详解,不会的可以回去看看。
    启动项目,浏览器输入:localhost:8088/index.html
    你会发现页面是404,这时候我们是访问不了这个页面的。然后你可能会说localhost:8088/templates/index.html,你会发现都不行都不行!

    因为Springboot的默认资源配置里面没有这个templates路径,但是有static路径。

    1.Springboot中默认的静态资源路径:

    1. classpath:/static,
    2. classpath:/public,
    3. classpath:/resources,
    4. classpath:/META-INF/resources,

    classpath 在项目中就相当于src/main/resources文件夹.

    就是说如果你把html文件直接放在static路径下面是可以直接访问的,有两种访问方式

    当你添加了start-web的依赖,resources下面是会默认生成一个static文件夹以及templates文件夹。

    2.自定义静态资源路径

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

    我们配置了静态资源路径映射之后,我们只能访问这个路径下面的资源,也就是相当于自定义了静态资源路径,就是说默认的静态资源路径都会失效。

    3.两种访问静态资源的方式

    一种是直接通过特定的URL访问:我们配置好后,启动项目,浏览器输入:localhost:8088/index.html 就可以正常访问我们的静态资源了。
    效果图如下

    然后还有一种访问资源的方法。是使用代码是实现的。

    我们在和启动文件同级目录下面创建一个controller文件夹,然后创建一个Testcontroller,代码如下:

    /**
     * @author 全栈学习笔记
     * @date 2020/4/12 12:20
     * @description
     */
    @Controller
    public class TestController {
        @RequestMapping("/getHtml")
        public String getHtml(){
            return "index.html";
        }
    }
    

    说明:这个@Controller ,意思标记这个类为控制类,或者说他是一个Springmvc controller对象,标记之后,默认这个类的所有方法返回的是一个页面。然后这个@RequestMapping的注解是一个用来处理请求地址映射的注解,可用于类或方法上。用于方法之上时,你可以通过URL直接访问这个方法。它还有一些其他的参数,这里就不讲解了。后面会出一期Springboot常用注解的说明。有兴趣的可以 wx 搜索 全栈学习笔记。

    到这里,我们就可以利用自定义URL访问静态资源了。在浏览器里面输入:localhost:8088/getHtml 也能正常访问静态资源。图片也是一样的。

    3. 其他静态资源路径配置方式

    1. 继承WebMvcConfigurerAdapter

    我们通过重写这个类的addResourceHandlers方法,定义资源路径

    /**
     * @author 全栈学习笔记
     * @date 2020/4/12 15:46
     * @description
     */
    @Configuration
    public class WebConfig extends WebMvcConfigurerAdapter {
        @Override
        public void addResourceHandlers(ResourceHandlerRegistry registry) {
            registry.addResourceHandler("/**").addResourceLocations("/","classpath:templates/");
            super.addResourceHandlers(registry);
        }
    }
    

    2. 优化配置

    你会看到之前的那种利用代码的URL路径访问静态资源文件的写法,我们需要在返回的地方写上文件的名称以及文件的后缀名,当我们要返回某一类型的文件时,这样写就相对比较麻烦,所以我们可以通过以下配置来解决这个问题。

    #加前缀
    spring.mvc.view.prefix=/
    #加后缀
    spring.mvc.view.suffix=.html
    

    通过以上的配置,我们之前的controller里面的方法返回就可以写成这样。

    @RequestMapping("/getHtml")
        public String getHtml(){
            return "index";
        }
    

    总结:

    静态资源配置路径的两种常用方式: 一种是默认配置,一种是自定义配置,自定义配置可以是代码配置,可以是配置文件里面配置。这两种配置方式都会使原来默认的配置方式失效

    静态资源的访问方式有两种:一种是自己用代码定义路径,然后访问,一种是直接利用特定的URL方式访问静态资源。

  • 相关阅读:
    496 服务器渲染 VS 客户端渲染
    495 队列,优先级队列
    493 JS中数据类型检测的四种方案
    492 js的继承:原型继承,CALL继承,寄生组合式继承,ES6中的类和继承
    491 CALL和APPLY以及BIND语法(含BIND的核心原理),CALL和APPLY的应用(类数组借用数组原型方法),CALL源码解析及阿里面试题
    490 JavaScript的this的五种指向
    488 DOM0和DOM2事件绑定的原理、使用、区别
    487 函数的三种角色:普通函数,构造函数(类),普通对象,原型链清明上河图
    486 原型及原型链模式:3个重要知识点,从面向对象角度来讲解内置类,hasOwnProperty,原型链方法中的THIS问题,基于内置类的原型扩展方法
    485 面向对象:单例设计模式,工厂模式,什么是面向对象,构造函数,instanceof,构造函数中的局部变量以及new构造函数时不加括号
  • 原文地址:https://www.cnblogs.com/swzx-1213/p/12686361.html
Copyright © 2011-2022 走看看