SpringBoot核心功能之Web开发(一)

SpringBoot核心功能之Web开发

一、简单功能解析

1.1 静态资源访问

1)静态资源目录
类路径下:/static、/public、/resources或/META-INF/resources
放在静态资源目录下的的资源可以通过“当前项目根路径/+静态资源名”访问,但该访问会被controller提前拦截,只有controller处理不了放行才会通过静态资源处理器继续访问。
2)修改静态资源目录
将/hhhh/添加入资源目录

  web:
    resources:
      static-locations: classpath:/hhhh/
1.2静态资源访问前缀

默认无前缀。
可以通过属性配置添加前缀:

spring:
  mvc:
    static-path-pattern: /res/**
1.3webjars
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.5.1</version>
        </dependency>

当你导入jar包形式的静态资源(如上所示),可以看到jar包目录下存在META-INF/resources目录,我们可以直接将其视为静态资源目录访问其下方资源。
在这里插入图片描述

1.4欢迎页支持

欢迎页:访问项目根路径时弹出的页面叫欢迎页。
如何配置?①在静态资源路径下加入index.html(访问前缀必须禁用)②使用controller处理/index请求
在这里插入图片描述

1.5自定义Favicon

在静态资源目录下加入favicon.ico就可以了(注意要关闭访问路径前缀)

1.6静态资源配置管理

SpringBoot启动默认加载xxxxAutoConfiguration类(自动配置类),而与SpringMVC相关的配置类为WebMvcAutoConfiguration。
下面我们来仔细看WebMvcAutoConfiguration类。首先是生效规则:
在这里插入图片描述
配置内容如下:
OrderedHiddenHttpMethodFilter组件:SpringBoot用于兼容rest风格
在这里插入图片描述
OrderedFormContentFilter组件:表单内容过滤器
在这里插入图片描述
WebMvcAutoConfigurationAdapter组件:
需要注意@EnableConfigurationProperties({WebMvcProperties.class, WebProperties.class})
WebMvcProperties.class与前缀spring.mvc进行了绑定 WebProperties与前缀为spring.web配置进行了绑定。
在这里插入图片描述
我们发现WebMvcAutoConfigurationAdapter只有一个有参构造器,这是有参构造器中的所有参数都会从容器中确定。也就是表示将与spring.mvc中的值绑定了的webMvcProperties对象和与spring.web中的值绑定了的 webProperties对象传入该对象
在这里插入图片描述
从此处可以看出@EnableConfigurationProperties注解有两个功能:①首先是使相关Properties对象的@ConfigurationProperties生效,进行绑定②将绑定后的组件注册到容器中。
ListableBeanFactory beanFactory:Spring的beanFactory
ObjectProvider messageConvertersProvider:找到所有的HttpMessageConverters
ObjectProvider resourceHandlerRegistrationCustomizerProvider:找到资源处理器的自定义器
ObjectProvider dispatcherServletPath
ObjectProvider<ServletRegistrationBean<?>> servletRegistrations:给应用注册servlet、filter

视图解析器(InternalResourceViewResolver)组件:
在这里插入图片描述
**资源处理的默认规则:**由如下代码定义:

@Override
		public void addResourceHandlers(ResourceHandlerRegistry registry) {
			if (!this.resourceProperties.isAddMappings()) {
				logger.debug("Default resource handling disabled");
				return;
			}
			//此处是webjars的配置,如果监测到访问前缀是/webjars/**,就到classpath:/META-INF/resources/webjars/目录下寻找静态资源
			addResourceHandler(registry, "/webjars/**", "classpath:/META-INF/resources/webjars/");
			//此处是StaticPathPattern的配置,添加用户自定义的静态路径
			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);
				}
			});
		}
spring:
  web:
    resources:
      add-mappings: false
      #禁用所有静态资源

欢迎页规则如下:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值