SpringBoot与Web
先在idea中选择场景
SpringBoot已经默认将这些常见配置好了,我们只需要在配置文件中指定少量配置就可以运行起来
然后我们可以开始编写业务代码了
SpringBoot与静态资源
WebMvcAutoConfiguration
打开WebMvcAutoConfiguration.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { logger.debug("Default resource handling disabled"); return; } Duration cachePeriod = this.resourceProperties.getCache().getPeriod(); CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl(); if (!registry.hasMappingForPattern("/webjars/**")) { customizeResourceHandlerRegistration(registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/") .setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl)); } String staticPathPattern = this.mvcProperties.getStaticPathPattern(); if (!registry.hasMappingForPattern(staticPathPattern)) { customizeResourceHandlerRegistration(registry.addResourceHandler(staticPathPattern) .addResourceLocations(getResourceLocations(this.resourceProperties.getStaticLocations())) .setCachePeriod(getSeconds(cachePeriod)).setCacheControl(cacheControl)); } }
|
配置jquery
所有/webjars/下的资源,都去classpath:/MEFA-INF/resources/webjars/找
在Webjars中选择Maven,然后就可以导入你想要jquery的依赖了
比方安装了这个以后就可以通过下面的地址访问jquery了localhost:8080/webjars/jquery/3.3.1/jquery.js
1 2 3 4 5
| <dependency> <groupId>org.webjars</groupId> <artifactId>jquery</artifactId> <version>3.5.0</version> </dependency>
|
默认映射
ResourceProperties 可以设置静态资源的配置,如缓存时间
1 2
| @ConfigurationProperties(prefix = "spring.resources", ignoreUnknownFields = false) public class ResourceProperties {
|
还会在下面的路径中找(静态资源的文件夹)
比方说你要访问一个localhost:8080/myjs.js,如果找不到的话,就在下面的文件夹中寻找
1 2
| private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/" };
|
欢迎界面
欢迎页面, 静态资源文件夹的/index.html, 见下面的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| @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)); return welcomePageHandlerMapping; } private Optional<Resource> getWelcomePage() { String[] locations = getResourceLocations(this.resourceProperties.getStaticLocations()); return Arrays.stream(locations).map(this::getIndexHtml).filter(this::isReadable).findFirst(); }
private Resource getIndexHtml(String location) { return this.resourceLoader.getResource(location + "index.html"); }
|
图标
配置自己的favicon.ico
SpringBoot2中没有这个东西,可能移到其他位置去了
定义自己的映射
利用配置文件来自己定义/的映射
1
| spring.resources.static-locations = classpath:/hello/,classpath:/hello2/
|