IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring Boot(六)--------Web开发、静态资源导入 -> 正文阅读

[Java知识库]Spring Boot(六)--------Web开发、静态资源导入

Spring Boot(六)--------Web开发、静态资源导入

13、Web开发

13.1 简介

  • jar:webapp
  • Spring Boot帮助我们自动装配
  • xxxxAutoConfiguration:向容器中自动配置组件
  • xxxxProperties:自动配置类,装配配置文件中自定义的一些内容
  • 思考:Spring Boot到底帮我们配置了什么?能否进行修改?哪些可以修改?能否扩展?

13.2 使用Spring Boot的步骤

  • 创建一个Spring Boot应用,选择我们需要的模块,Spring Boot会默认将我们需要的模块自动配置好
  • 手动在配置文件中配置部分配置项目,就可以运行起来了
  • 专注编写代码业务,不需要考虑各种配置

14、静态资源处理

14.1 静态资源映射规则

  • 新建一个SpringBoot项目,写一个测试用的controller,运行成功
  • 在SpringBoot项目中,SpringMVC的所有web配置都在WebMvcAutoConfiguration这个配置类中
  • 在其中找到WebMvcAutoConfigurationAdapter,其中放了很多关于SpringMVC的配置,在其中找到一个名为addResourceHandlers()的方法,用于添加资源处理
  • 自动配置文件在WebMvcProperties中
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    if (!this.resourceProperties.isAddMappings()) {
        //禁用默认资源处理
        logger.debug("Default resource handling disabled");
    } else {
        this.addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
        this.addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
            registration.addResourceLocations(this.resourceProperties.getStaticLocations());
            if (this.servletContext != null) {
                ServletContextResource resource = new ServletContextResource(this.servletContext, "/");
                registration.addResourceLocations(new Resource[]{resource});
            }
        });
    }
}
  • 比如所有的/webjars/** , 都需要去 classpath:/META-INF/resources/webjars/ 找对应的资源

14.2 什么是webjars

  • Webjars本质就是以jar包的方式引入我们的静态资源 , 我们以前要导入一个静态资源文件,直接导入即可

  • 官网:WebJars - Web Libraries in Jars

14.3 第一种访问静态资源的方法

  • 不常用

  • 要使用JQuery我们需要引入对应版本的pom依赖

<dependency>
    <groupId>org.webjars</groupId>
    <artifactId>jquery</artifactId>
    <version>3.5.1</version>
</dependency>
  • 查看目录结构,可以访问jquery.js文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8EZPRL3h-1645785446714)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220225164229738.png)]

14.4 第二种访问静态资源的方式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MECRtqp4-1645785446718)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220225164834540.png)]

  • 查看方法getStaticLocations()
public String[] getStaticLocations() {
    return this.staticLocations;
}

//点击staticLocations,可以找到对应值
this.staticLocations = CLASSPATH_RESOURCE_LOCATIONS;

//其中CLASSPATH_RESOURCE_LOCATIONS;
//找到具体的对应路径
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
  • 访问/**就可以访问到resources文件夹下的东西
  • 综上,得出结论可以存放静态资源的四个位置为
"classpath:/META-INF/resources/", 
"classpath:/resources/",
"classpath:/static/",
"classpath:/public/"
  • 建立对应文件夹,其中都可以存放静态资源文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mEo1ZzCc-1645785446719)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220225165647956.png)]

  • 其中"classpath:/META-INF/resources/",为第一种方式中webjars中的路径

  • 这三个文件夹的优先级:resources>static>public

14.5 自定义静态资源路径

  • 可以通过配置文件来指定,哪些文件夹是我们需要放静态资源的,这种情况下官方定义的静态资源文件夹就失效了
spring.resources.static-locations=classpath:/coding/

14.6 总结

  • 在SpringBoot中,我们可以使用一下方式处理静态资源

    • webjars------访问方式:localhost:8080/webjars/
    • 文件夹:public,static,/**(根目录下),resources----------访问方式:localhost:8080/
  • 优先级:resources>static(默认使用)>public

15、首页处理

15.1 首页探究

  • 继续分析源码,找到一个首页映射方法
@Bean
public WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext,
                                                           FormattingConversionService mvcConversionService, ResourceUrlProvider mvcResourceUrlProvider) {
    WelcomePageHandlerMapping welcomePageHandlerMapping = new WelcomePageHandlerMapping(
        new TemplateAvailabilityProviders(applicationContext), applicationContext, getWelcomePage(),
        this.mvcProperties.getStaticPathPattern());
    welcomePageHandlerMapping.setInterceptors(getInterceptors(mvcConversionService, mvcResourceUrlProvider));
    welcomePageHandlerMapping.setCorsConfigurations(getCorsConfigurations());
    return welcomePageHandlerMapping;
}
  • 找到getWelcomePage()方法
private Resource getWelcomePage() {
    for (String location : this.resourceProperties.getStaticLocations()) {
        Resource indexHtml = getIndexHtml(location);
        if (indexHtml != null) {
            return indexHtml;
        }
    }
    ServletContext servletContext = getServletContext();
    if (servletContext != null) {
        return getIndexHtml(new ServletContextResource(servletContext, SERVLET_LOCATION));
    }
    return null;
}
  • 找到其中的getIndexHtml()方法
private Resource getIndexHtml(String location) {
    return getIndexHtml(this.resourceLoader.getResource(location));
}
  • 关于首页,静态资源文件夹下所有index.html页面,会被/**映射,即在任意资源目录下的index.html,访问localhost:8080,直接显示首页

  • 注:在templates目录下的所有页面,只能通过controller来跳转

15.2 首页图标设置(2.2.0+版本)

  • 将选好的图片改为.ico后缀,一般命名为favicon.ico,将其放在resources文件夹下的static文件夹下
  • 在首页index.html中设置
<link rel="icon" href="/favicon.ico">
  • 测试,如果失败可以清楚浏览器缓存后再试

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rg6zLaBy-1645785446719)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20220225183701998.png)]

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 11:16:56  更:2022-02-26 11:17:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:21:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码