SpringBoot web开发-09-静态资源、首页和图标定制

5.springboot web开发

  • jar包如何进行webapp开发

  • springboot自动装配

    • 创建应用,选择模块
    • 配置文件替换默认配置,注入的过程
    • 业务代码的编写过程,不用管理配置
  • springboot到底帮我们配置了什么?我们能不能进行修改?能修改哪些东西?能不能扩展

    • XxxxAutoConfiguraion…向容器中自动配置组件I
    • xxxProperties:自动配置类,装配配置文件中自定义的一些内容!
  • 要解决的问题:

    • 导入静态资源…
    • 首页
    • jsp或模板引擎Thymeleaf
    • 装配扩展SpringMVC
    • 视图解析器
    • 增删改查
    • 拦截器
    • 国际化!
5.1静态资源
  • 在 Web 应用中会涉及到大量的静态资源,例如 JS、CSS 和 HTML 等。我们知道,Spring MVC导入静态资源文件时,需要配置静态资源的映射;但在 SpringBoot中则不再需要进行此项配置,因为SpringBoot已经默认完成了这一工作。
  • Spring Boot 默认为我们提供了 3 种静态资源映射规则:
    • WebJars 映射
    • 默认资源映射
    • 静态首页(欢迎页)映射
  • WebMvcAutoConfiguration类
@Override
		public void addResourceHandlers(ResourceHandlerRegistry registry) {
			if (!this.resourceProperties.isAddMappings()) {
				logger.debug("Default resource handling disabled");
				return;
			}
			addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
			addResourceHandler(registry, this.mvcProperties.getStaticPathPattern(), (registration) -> {
				registration.addResourceLocations(this.resourceProperties.getStaticLocations());
				if (this.servletContext != null) {
					ServletContextResource resource = new ServletContextResource(this.servletContext, SERVLET_LOCATION);
					registration.addResourceLocations(resource);
				}
			});
		}
  • 为了让页面更加美观,让用户有更多更好的体验,Web 应用中通常会使用大量的 JS 和 CSS,例如 jQuery,Backbone.js 和 Bootstrap 等等。通常我们会将这些 Web 前端资源拷贝到 Java Web 项目的 webapp 相应目录下进行管理。但是 Spring Boot 项目是以 JAR 包的形式进行部署的,不存在 webapp 目录,那么 Web 前端资源该如何引入到 Spring Boot 项目中呢?
  • 方式1(使用少):webjars:可以完美的解决上面的问题,它可以 Jar 形式为 Web 项目提供资源文件。以mvn形式管理静态资源.官网在此网站上以mvn形式down的静态包都符合上诉路径,通过http://127.0.0.1:8080/webjars/jquery/3.6.0/dist/jquery.js可以访问静态资源

WebJars 可以将 Web 前端资源(JS,CSS 等)打成一个个的 Jar 包,然后将这些 Jar 包部署到 Maven 中央仓库中进行统一管理,当 Spring Boot 项目中需要引入 Web 前端资源时,只需要访问 WebJars 官网,找到所需资源的 pom 依赖,将其导入到项目中即可。

所有通过 WebJars 引入的前端资源都存放在当前项目类路径(classpath)下的“/META-INF/resources/webjars/” 目录中。

通过查看以上源码可知,WebJars 的映射路径为“/webjars/”,即所有访问“/webjars/”的请求,都会去“classpath:/META-INF/resources/webjars/”查找 WebJars 前端资源。

  • 方式2:/**,当访问项目中的任意资源(即“/ * *”)时,默认从这五个位置以下路径中查找资源文件(优先级依次降低):this.resourceProperties.getStaticLocations()、this.mvcProperties.getStaticPathPattern()
/**
{ "classpath:/META-INF/resources/",
				"classpath:/resources/", "classpath:/static/", "classpath:/public/" }

这些路径又被称为静态资源文件夹,它们的优先级顺序为:classpath:/META-INF/resources/ > classpath:/resources/ > classpath:/static/ > classpath:/public/ 。

  • 所以可以在resources目录下建resources、public、static文件都能识别,template文件和web-inf一样得通过后台controller访问跳转

可以http://127.0.0.1:8080/js/hello.js访问resources/static/js/hello.js文件

当我们请求某个静态资源(即以“.html”结尾的请求)时,Spring Boot 会先查找优先级高的文件夹,再查找优先级低的文件夹,直到找到指定的静态资源为止。

  • 优先级resources>static>public:public放都能访问的公共资源,(默认)static放静态资源,resources放上传的文件
  • 在配置文件中设置了自定义的资源路径,默认的资源路径就失效了。
spring.mvc.static-path-pattern=/zk
spring.web.resources.static-locations={ "classpath:/META-INF/resources/",
				"classpath:/resources/", "classpath:/static/", "classpath:/public/" }
5.2 首页和图标定制
  • 静态资源文件夹下的所有 index.html 被称为静态首页或者欢迎页,它们会被被 /** 映射,换句话说就是,当我们访问“/”或者“/index.html”时,都会跳转到静态首页(欢迎页)。
  • 将index.html放到resources/static的下的文件,项目启动后输入地址http://127.0.0.1:8080/即可自动访问到

注意,访问静态首页或欢迎页时,其查找顺序也遵循默认静态资源的查找顺序,即先查找优先级高的目录,在查找优先级低的目录,直到找到 index.html 为止。

  • 若将index.html放到template文件,得通过后台controller访问跳转,但需要模板引擎的支持。
  • 图标的设置(对旧版本2.1.7之前的),对于就版本来说可以将图片保存为favicon.ico放到resources/static下,然后在配置文件中关闭默认的图标,项目重启后清理浏览器缓存图标改变
#关闭默认图标
spring.mvc.favicon.enabled=false;
  • 在pom.xml中将springBoot版本号
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.7.2</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>
下一篇:SpringBoot web开发-10-模板引擎thymeleaf介绍
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值