静态资源
搜索webMvcConfiguration看源码,找到addResourceHandlers方法,添加静态资源
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!this.resourceProperties.isAddMappings()) {
logger.debug("Default resource handling disabled");
} else {
Duration cachePeriod = this.resourceProperties.getCache().getPeriod();
CacheControl cacheControl = this.resourceProperties.getCache().getCachecontrol().toHttpCacheControl();
if (!registry.hasMappingForPattern("/webjars/**")) {
this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{"/webjars/**"}).addResourceLocations(new String[]{"classpath:/META-INF/resources/webjars/"}).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl).setUseLastModified(this.resourceProperties.getCache().isUseLastModified()));
}
String staticPathPattern = this.mvcProperties.getStaticPathPattern();
if (!registry.hasMappingForPattern(staticPathPattern)) {
this.customizeResourceHandlerRegistration(registry.addResourceHandler(new String[]{staticPathPattern}).addResourceLocations(WebMvcAutoConfiguration.getResourceLocations(this.resourceProperties.getStaticLocations())).setCachePeriod(this.getSeconds(cachePeriod)).setCacheControl(cacheControl).setUseLastModified(this.resourceProperties.getCache().isUseLastModified()));
}
}
}
由以上代码可以看出添加静态资源由三种方式:
- 方式一:
- 在application.properties中自定义静态资源文件路径,当自定义静态资源的路径之后,系统自带的配置文件的路径就失效了
spring.mvc.static-path-pattern=/cdl/...
-
方式二
- 使用 webjars,然后去webjars官网查找相关的静态资源的maven配置,然后通过路径/webjars/**访问,
- 使用 webjars,然后去webjars官网查找相关的静态资源的maven配置,然后通过路径/webjars/**访问,
-
方式三
可以看出只要是在resources包下面的都可以直接访问到
首页定制和图标定制
在resource文件夹下面,任意路径定义一个index.html就可以通过local+端口号访问到改也买你,不用加路径
在resources文件加下定义favicon.ico文件,然后在配置文件关闭默认图标即可,
spring.mvc.favicon.enabled = false
thymeleaf 模板引擎 freemark
1.导入thymeleaf的spingboot启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2.在templates文件夹下新建html文件,并导入thymeleaf依赖
<html lang="en" xmlns:th="http://www.thymeleaf.org">
3.编写测试类
@Controller
public class TestController {
@RequestMapping("/t1")
public String test1(Model model){
model.addAttribute("msg","Hello,Thymeleaf");
return "test";
}
}
<!DOCTYPE html >
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>测试页面</h1>
<!--th:text就是将div中的内容设置为它指定的值,和之前学习的Vue一样-->
<div th:text="${msg}"></div>
</body>
</html>
thymeleaf模板语法
MVC配置原理
使用一个类全面扩展springMVC
1.在包下新建一个文件夹,config
2.在文件夹下新建一个类,例如:myMvcConfig
3.添加注解@configuration,然后实现webMvcConfigurer接口(可以发现下面有很多可以重写的方法)
如果想要定制一些功能,只要写一个组件,然后交给springboot,springboot就会帮我们自动装配
例如:定制一个视图解析器
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
//实现类视图解释器接口,可以看做就是一个视图解析器
@Bean
public ViewResolver myViewResolver(){
return new MyViewResolver();
}
//自定义一个视图解析器
public static class MyViewResolver implements ViewResolver {
@Override
public View resolveViewName(String s, Locale locale) throws Exception {
return null;
}
}
}
扩展SpingMVC
接管mvc的功能
例如:请求直接跳转页面
@Configuration
public class MyMvcConfig implements WebMvcConfigurer {
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("test");
}
}