一.静态资源:
1,默认情况下,Springboot会从classpath下的/static、/public、/resources、/META-INF/resources下加载静态资源;
2,可以通过修改spring.resources.staticLocations来修改静态资源加载地址;
3,因为应用是打成jar包,所以之前的src/main/webapp不会加载;
二.不推荐使用jsp的原因是因为springboot对jsp的支持不好
三.由于在内嵌的servlet容器中使用jsp会有一些问题,所以springboot建议使用第三方模板语言,推荐使用freemarker,velocity和thymeleaf;
以上几种模板页面默认从src/main/resources/templates加载;
四.freemarker的基本使用:
1,FreeMarker中的模型:hash(如map或自定义对象);scalars(存储的简单值);sequence(数组或者列表等可遍历对象);
2,FreeMarker模板中的内容分类:
1,插值;
2,FTL指令;
3,注释:<#– –>
4,标准文本,除了以上三种,其他都是静态文本,原样输出;
3,插值的使用:
1,直接输出scalars;${someValue} 2,处理不存在的scalars值:${something!“nothing”}
3,输出hash中的属性:${someBean.someValue} 4,输出hash中的方法;${someBean.someMethod()}
5,处理不存在的hash调用:${(obj.prop.something)!nothing} 6,处理scalars的内建函数:${str?substring(2)}等
7.,常见的FTL指令:
1,<#if>…<#elseif>…<#else>…</#if>
2,<#list sequence as item>…</#list>
#include:引入一个模板;
#assign:在Freemarker上下文中创建一个变量并赋值
五.常用配置
template_update_delay=1 ##模版更新时间,这里配置是1秒更新一次,正式环境,模版不会改变,可以将这个值设很大,提高效率.就是被这个参数害死了.老是不更新.
locale=zh_CN ##中国
default_encoding=utf-8 ##编码utf8
url_escaping_charset=utf-8 ##url编码utf8
date_format=yyyy-MM-dd ##显示日期格式
time_format=HH:mm:Ss ##显示时间格式
datetime_format=yyyy-MM-dd ##显示日期格式
number_format=#0.##### ##数字显示格式hi.
#template_update_delay=1
datetime_format=yyyy-MM-dd HH:mm:ss
date_format=yyyy-MM-dd
time_format=HH:mm:ss
number_format=0.######;
boolean_format=true,false
auto_import="/common/index.ftl" as ui 自动引入
whitespace_stripping=true
default_encoding=UTF-8
tag_syntax=auto_detect
url_escaping_charset=UTF-8
六.SpringBoot中集成freemarker
1,引入spring-boot-starter-freemarker,自动引入freemarker和spring-context-support;
1
2
3
4
5
6 1<dependency>
2 <groupId>org.springframework.boot</groupId>
3 <artifactId>spring-boot-starter-freemarker</artifactId>
4 </dependency>
5
6
(2)springboot提供的freemarker配置:
1,spring.freemarker.enabled=true:是否开启freemarker支持;
2,spring.freemarker.allow-request-override:是否允许request中的属性覆盖model中同名属性;默认false;
3,spring.freemarker.allow-session-override:是否允许session中的属性覆盖model中同名属性;默认false;
4,spring.freemarker.cache:是否支持模板缓存;默认false;
5,spring.freemarker.charset:模板编码
6,spring.freemarker.content-type=text/html:模板contenttype;
7,spring.freemarker.expose-request-attributes:是否开启request属性expose,默认false;
8,spring.freemarker.expose-session-attributes:是否开启session属性expose,默认false;
9,spring.freemarker.expose-spring-macro-helpers:是否开启spring的freemarker宏支持;默认为false;
10,spring.freemarker.prefer-file-system-access:默认为true,支持实时检查模板修改;
11,spring.freemarker.prefix:加载模板时候的前缀;
12,spring.freemarker.settings.*:直接配置freemarker参数
13,spring.freemarker.suffix:模板文件后缀;
14,spring.freemarker.template-loader-path=classpath:/templates/:模板加载地址
(3)代码
1.controller
1
2
3
4
5
6
7
8
9
10 1@Controller
2public class Hello {
3 @RequestMapping("/hello1")
4 public String hello(Model model){
5 model.addAttribute("msg","hello,freemarker");
6 return "hello1";
7 }
8}
9
10
2.可以手动配置
1
2
3
4
5
6
7 1spring.freemarker.charset=UTF-8
2spring.freemarker.suffix=.ftl
3spring.freemarker.content-type=text/html; charset=utf-8
4spring.freemarker.template-loader-path=classpath:/templates
5spring.mvc.static-path-pattern=/static/**
6
7
3.启动项目(运行main方法)
4.访问页面