注:静态化服务应与nginx部署在同一服务器上,由nginx实现静态资源的加载,tomcat加载静态资源实在拉胯
1.导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>2.0.4.RELEASE</version>
</dependency>
2.准备页面模版
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>page</title>
</head>
<body>
<p> hello,<span th:text="${one.getName()}"></span></p>
<p>hello,<span th:text="${two.getName()}"></span></p>
</body>
</html>
3.静态化
package com.ysj.thymeleaf.service;
import com.ysj.thymeleaf.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import java.io.File;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
/**
* @Author:
* @Created Date:8:46 下午 2020/3/25
* @Description:
*/
@Service
public class PageService {
@Autowired
private TemplateEngine engine;
/**
* 准备数据
* @return
*/
public Map<String, Object> createModelMap(){
Map<String, Object> map = new HashMap<String, Object>();
map.put("one",new User("张三",22));
map.put("two",new User("李四",23));
return map;
}
/**
* 生成html
* @param fileName
*/
public void createHtml(String fileName){
//上下文
Context context = new Context();
context.setVariables(createModelMap());
//输出流 此处应输出到nginx下的html目录
File dest = new File("/opt/nginx/html/page/" + fileName + ".html");
try(PrintWriter writer = new PrintWriter(dest, "UTF-8")){
//生成html
engine.process("page",context,writer);
}catch (Exception e){
//记录日志
//log.error("message",e)
}
}
}
4.测试
package com.ysj.thymeleaf.service;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
/**
* @Author:
* @Created Date:9:20 下午 2020/3/25
* @Description:
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class PageServiceTest {
@Autowired
private PageService pageService;
@Test
public void createHtml() {
pageService.createHtml("demo");
}
}
nginx配置
server{
listen 80;
server_name www.leyou.com;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location /page {
#先找本地
root html;
if (!-f $request_filename) { #请求的文件不存在,就反向代理,将html写入本地
proxy_pass http://192.168.xxx.xxx:8084;
}
}
location / {
proxy_pass http://192.168.xxx.xxx:10010; #主机下的10010端口
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
完成