SpingBoot框架自定义首页和静态资源加载
1.SpingBoot框架中的静态资源加载和导入
静态资源一般是指客户端发送请求到web服务器,web服务器从内存在取到相应的文件,返回给客户端,客户端解析并渲染显示出来,这类主要包括图片、样式等(比如css、js、image、404页面、首页等)。
我们探寻下web项目对应的WebMvcAutoConfiguration自动装配类,可以看出静态资源的加载分为三大类:
1.1 自定义,如果配置了自定义配置就不会再查下面几种类型的文件下的静态资源,即在application配置文件中配置了spring.mvc.static-path-pattern并且给他赋值,则只会走这个地址查询静态资源,而不再会走其他的默认配置的地方去查找静态资源。
1.2 webjars/**下的配置,这种基本不用了,只要在webjars下配置相关资源,访问时如:localhost:8080/webjars/XXX就可以访问到
1.3 默认this.staticLocations 下的四个地方,主要是使用这类进行静态资源配置
1.3.1 classpath:/META-INF/resources/,根目录下的资源
1.3.2 classpath:/resources/,根目录下的resources文件下的资源
1.3.3 classpath:/static/,根目录下的static文件下的资源,主要是使用这类进行静态资源配置
1.3.4 classpath:/public/,根目录下的public文件下的资源
至此SpringBoot框架中的静态资源加载,静态资源导入问题我们基本就已经探析明白了。
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});
}
});
}
}
2.SpingBoot框架实现自定义首页
SpingBoot框架已经让配置变很简单了,很简单几个步骤就可以搭建一个web项目。那么web的首页应该如何配置呢?
首先我们探寻下web项目对应的WebMvcAutoConfiguration自动装配类,发现了一个方法public WelcomePageHandlerMapping welcomePageHandlerMapping(...){...}并且这个方法将这个欢迎页的处理映射注入到了bean里面,查看发现我们可以从默认配置中this.mvcProperties.getStaticPathPattern()获取:
this.staticPathPattern = "/**";
还可以通过this.getWelcomePage()获取this.staticLocations = CLASSPATH_RESOURCE_LOCATIONS;找到静态资源默认查找的这个几个地方获取:
private static final String[] CLASSPATH_RESOURCE_LOCATIONS = new String[]{"classpath:/META-INF/resources/", "classpath:/resources/", "classpath:/static/", "classpath:/public/"};
获取index.xml文件并且映射到首页
private Resource getIndexHtml(Resource location) {
try {
Resource resource = location.createRelative("index.html");
if (resource.exists() && resource.getURL() != null) {
return resource;
}
} catch (Exception var3) {
}
return null;
}
至此就可以访问定制好的首页了,比如访问locahost:8080就会默认跳转到你所配置的首页index.html中了
- 点赞
- 收藏
- 关注作者
评论(0)