web开发中,对于动态页面,可以采用web容器将数据和模板组装成静态页面然后返回给前端的方式,但是这种方式的效率较低,因此,可以将一些变化不怎么频繁的页面,事先静态化,作为静态资源部署在nginx中,例如电商网站中的商品详情页面,在线教育系统中的课程详情页面等;这些静态页面的维护需要依靠一个后台管理系统,而这些后台管理系统生成静态页面的过程即为页面静态化;
一个静态页面的生成需要两个部分:模板和数据;模板技术有很多中,常见的有:jsp,freemarker,thymeleaf等。这里记录一个使用freemarker模板生成静态页面的简单程序:
@Test public void contextLoads() throws IOException, TemplateException { // 页面静态化测试,需要模板和数据; // 创建配置类 Configuration configuration = new Configuration(Configuration.getVersion()); // 模板加载器,这是以字符串的形式加载模板,也可以设置模板路径以文件的形式加载模板 StringTemplateLoader templateLoader = new StringTemplateLoader(); // 模板字符串 String templateStr = "\n" + "姓名:${person.name}\n" + "生日:${person.birthday?date}\n" + "爱好:<#list person.hobbies as hobby>\n" + " ${hobby} \n" + " \n" + ""; // 加载模板 templateLoader.putTemplate("template", templateStr); configuration.setTemplateLoader(templateLoader); // 获得模板 Template template = configuration.getTemplate("template"); // 准备数据 Person person = new Person(); person.setHobbies(new ArrayList<>()); person.setBirthday(new Date()); person.setName("测试姓名"); person.getHobbies().add("song"); person.getHobbies().add("jump"); person.getHobbies().add("rap"); person.getHobbies().add("busketball"); Mapmap = new HashMap<>(); map.put("person", person); // 静态化 String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map); // 输出 System.out.println(content); // }
生成的结果:
姓名:测试姓名生日:2019-7-16爱好: song jump rap busketball
然后再将这些生成的html放在本地的对应的文件夹,即可完成页面的发布。