[java学习笔记]freemarker模板的页面静态化


  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 = "<body>\n" +
                "姓名:${person.name}<br>\n" +
                "生日:${person.birthday?date}<br>\n" +
                "爱好:<#list person.hobbies as hobby>\n" +
                "    ${hobby}&nbsp;&nbsp;&nbsp;&nbsp;\n" +
                "</#list>\n" +
                "</body>";
        // 加载模板
        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");
        Map<String, Object> map = new HashMap<>();
        map.put("person", person);

        // 静态化
        String content = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
        // 输出
        System.out.println(content);

        //
    }
View Code

生成的结果:

<body>
姓名:测试姓名<br>
生日:2019-7-16<br>
爱好:
    song&nbsp;&nbsp;&nbsp;&nbsp;

    jump&nbsp;&nbsp;&nbsp;&nbsp;

    rap&nbsp;&nbsp;&nbsp;&nbsp;

    busketball&nbsp;&nbsp;&nbsp;&nbsp;
</body>
View Code

然后再将这些生成的html放在本地的对应的文件夹,即可完成页面的发布。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM