模板引擎有很多,其实就是动态页面静态化,好让百度这样的搜索引擎搜索到
那Springboot怎么整合模板引擎呢
步骤如下:
首先添加maven依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.wangye</groupId>
<artifactId>spboot-freemaker</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spboot-freemaker</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
上面的依赖要注意freemaker的依赖
接下来就是要写一个Controller了:
@Controller
public class IndexController {
@RequestMapping("/index")
public String index(ModelMap modelMap){
modelMap.addAttribute("name","王爷");
return "index";
}
/**
* 转发到/index request中的参数能在下一个请求(目标请求)当中使用
* 转发返回的http状态码是200,而且url不变
* @return ModelAndView
*/
@RequestMapping("/")
public Object toIndex(){
ModelAndView mv = new ModelAndView();
//手动显式指定使用转发,此时springmvc.xml配置文件中的视图解析器将会失效
mv.setViewName("forward:/index");
return mv;
}
/**
* 重定向到/index 转发会丢失请求,request里的数据不能再重定向的请求(目标请求)中使用
* 重定向返回的http状态码是302,而且url会变
* @return ModelAndView
*/
@RequestMapping("/toIndex1")
public Object toIndex1(){
ModelAndView mv = new ModelAndView();
//手动显式指定使用转发,此时springmvc.xml配置文件中的视图解析器将会失效
mv.setViewName("redirect:/index");
return mv;
}
}
在application.properties配置freemaker
#freemarker静态资源配置
#设定freemaker模板文件的文件路径
spring.freemarker.tempalte-loader-path=classpath:/templates
#关闭缓存,及时刷新,上线生产环境需要修改为true
spring.freemarker.cache=false
#设置模板的编码
spring.freemarker.charset=UTF-8
#检查模板位置是否存在。
spring.freemarker.check-template-location=true
#内容类型值
spring.freemarker.content-type=text/html
#设置是否应该在与模板合并之前将所有请求属性添加到模型中。
spring.freemarker.expose-request-attributes=true
#设置是否在与模板合并之前将所有HttpSession属性添加到模型中。
spring.freemarker.expose-session-attributes=true
#所有视图的RequestContext属性的名称。
spring.freemarker.request-context-attribute=request
# 设置freemaker模板的后缀名
spring.freemarker.suffix=.html
再来看一下目录结构:
然后红框所在的目录下创建一个index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>主页</title>
</head>
<body>
${name}
</body>
</html>
以上就已经整合完成了,只要启动Springboot访问localhost:8080/index就好了
然后下面是freemaker配置详解:
#配置freemarker详解
#设置是否允许HttpServletRequest属性覆盖(隐藏)控制器生成的同名模型属性。
#spring.freemarker.allow-request-override=false
#设置是否允许HttpSession属性覆盖(隐藏)控制器生成的同名模型属性。
#spring.freemarker.allow-session-override=false
#启用模板缓存。
#spring.freemarker.cache=false
#设置编码格式
#spring.freemarker.charset=UTF-8
#检查模板位置是否存在。
#spring.freemarker.check-template-location=true
#内容类型值
#spring.freemarker.content-type=text/html
#为这种技术启用MVC视图解决方案。
#spring.freemarker.enabled=true
#设置是否应该在与模板合并之前将所有请求属性添加到模型中。
#spring.freemarker.expose-request-attributes=false
#设置是否在与模板合并之前将所有HttpSession属性添加到模型中。
#spring.freemarker.expose-session-attributes=false
#设置是否公开RequestContext供Spring宏库使用,名称为“SpringMacroRequestContext”。
#spring.freemarker.expose-spring-macro-helpers=true
#更喜欢文件系统访问模板加载。文件系统访问允许对模板更改进行热检测。
#spring.freemarker.prefer-file-system-access=true
#前缀,用于在构建URL时查看名称,模板文件的前缀
#spring.freemarker.prefix=
#所有视图的RequestContext属性的名称。
#spring.freemarker.request-context-attribute=
#众所周知的FreeMarker密钥将传递给FreeMarker的配置。
#spring.freemarker.settings.*=
#后缀,该后缀用于在构建URL时查看名称。模板文件的后缀
#spring.freemarker.suffix=
#以逗号分隔的模板路径列表。模版文件所在路径
#spring.freemarker.template-loader-path=classpath:/templates/
#可以解析的视图名称的白列表。
#spring.freemarker.view-names=