您当前的位置: 首页 >  spring

止步前行

暂无认证

  • 3浏览

    0关注

    247博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

SpringBoot对静态资源的映射规则

止步前行 发布时间:2018-09-09 20:59:54 ,浏览量:3

1、SpringBoot对静态资源的映射规则;

WebMvcAuotConfiguration类:

	@Override
	public void addResourceHandlers(ResourceHandlerRegistry registry) {
		if (!this.resourceProperties.isAddMappings()) {
			logger.debug("Default resource handling disabled");
			return;
		}

		//下面这段是对"/webjars/**"请求的映射规则
		Integer cachePeriod = this.resourceProperties.getCachePeriod();
		if (!registry.hasMappingForPattern("/webjars/**")) {
			customizeResourceHandlerRegistration(
					registry.addResourceHandler("/webjars/**")
							.addResourceLocations(
									"classpath:/META-INF/resources/webjars/")
					.setCachePeriod(cachePeriod));
		}

		//下面这段是静态资源文件夹映射
		String staticPathPattern = this.mvcProperties.getStaticPathPattern();          	
		if (!registry.hasMappingForPattern(staticPathPattern)) {
			customizeResourceHandlerRegistration(
					registry.addResourceHandler(staticPathPattern)
							.addResourceLocations(
									this.resourceProperties.getStaticLocations())
					.setCachePeriod(cachePeriod));
		}
	}

    //下面这段是配置欢迎页映射
	@Bean
	public WelcomePageHandlerMapping welcomePageHandlerMapping(
			ResourceProperties resourceProperties) {
		return new WelcomePageHandlerMapping(resourceProperties.getWelcomePage(),
				this.mvcProperties.getStaticPathPattern());
	}

   //下面这段是配置喜欢的图标
	@Configuration
	@ConditionalOnProperty(value = "spring.mvc.favicon.enabled", matchIfMissing = true)
	public static class FaviconConfiguration {
		private final ResourceProperties resourceProperties;

		public FaviconConfiguration(ResourceProperties resourceProperties) {
			this.resourceProperties = resourceProperties;
		}

		@Bean
		public SimpleUrlHandlerMapping faviconHandlerMapping() {
			SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
			mapping.setOrder(Ordered.HIGHEST_PRECEDENCE + 1);
          	//所有  **/favicon.ico 
			mapping.setUrlMap(Collections.singletonMap("**/favicon.ico",
					faviconRequestHandler()));
			return mapping;
		}

		@Bean
		public ResourceHttpRequestHandler faviconRequestHandler() {
			ResourceHttpRequestHandler requestHandler = new ResourceHttpRequestHandler();
			requestHandler
					.setLocations(this.resourceProperties.getFaviconLocations());
			return requestHandler;
		}
	}

#####(1)、对 /webjars/**请求的映射规则 对于所有访问/webjars/**下面的请求,都会去classpath:/META-INF/resources/webjars/ 找资源。

什么是webjars? 在项目中以jar包的方式引入静态资源,比如引入jquery,就可以再pom.xml文件中,加入如下依赖:

在访问的时候只需要写webjars下面资源的名称即可
	
		org.webjars
		jquery
		3.3.1
	

对于在项目中引入该jquery,可以采用如下方式:

localhost:8080/webjars/jquery/3.3.1/jquery.js

对于更多静态资源的webjars,可以访问如下网址:

http://www.webjars.org/

#####(2)、对于访问当前项目的所有请求"/**",如果没有任何控制器处理,都会去(静态资源的文件夹下)找映射,具体目录如下: “classpath:/META-INF/resources/”, “classpath:/resources/”, “classpath:/static/”, “classpath:/public/” “/”:当前项目的根路径 例如:访问localhost:8080/abc请求,没有控制器处理该请求,就会去静态资源文件夹里面找abc

#####(3)、欢迎页 静态资源文件夹下的所有index.html页面;被"/**"映射;

例如:访问localhost:8080/ 找index页面

#####(4)、所有访问 **/favicon.ico 请求,都会在静态资源文件下找对应的图标文件;

关注
打赏
1657848381
查看更多评论
立即登录/注册

微信扫码登录

0.0425s