页面静态化 freemarker (在前后端分离的项目中, 该技术已淘汰)

 

在前后端分离的项目中, 一般不使用 freemarker (用它,做不到前后端分离)

后端使用模板引擎去套模板,当年使用最广泛的就是jsp,freemarker等等,同时内嵌一些后端提供的模板变量和一些逻辑操作。

然后前后端集成对接,遇到问题,前台返工,后台返工。

配置模块, 有配置, 响应给前端的是 一个

我的信息--预览简历, 因为 window.open

{
	"successful": true,
	"errorCode": null,
	"errorMessage": null,
	"data": {
		"htmlTemplate": "\n\n\n    \n    PDF模版\n\n\n\n\n
\n\n\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n
\n
\n \n
\n
\n
王欣乐
\n
\n 集团总部\n /\n IT产品服务部
\n
IT产品服务部助理软件工程师\n\n /\n\n 助理经理
\n
\n\n\n
\n\n\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n \n
\n
\n 员工ID:\n\n 21187634\n\n\n\n
\n
\n
\n 英文名:\n\n \n\n\n\n
\n
\n
\n 性别:\n\n \n\n\n\n
\n
\n
\n 出生日期:\n\n 1991-10-21\n\n\n\n
\n
\n
\n 国籍/地区:\n\n 中国大陆\n\n\n\n
\n
\n
\n 籍贯:\n\n 陕西省渭南市\n\n\n\n
\n
\n
\n 民族:\n\n 汉族\n\n\n\n
\n
\n
\n 政治面貌:\n\n 群众\n\n\n\n
\n
\n
\n 特长信息:\n\n \n\n\n\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
加入华润日期:2019-10-16\n 加入集团部室/利润中心日期:2019-10-16
加入本单位日期:2019-10-16\n 转正日期:
\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
主/兼岗生效日期操作原因职务职级部门业务单位
主岗 2019-10-16 雇用 一般正常雇用 助理软件工程师 助理经理 IT产品服务部 集团总部
\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
开始日期结束日期原单位工作所在地最后职务
2019-07-22 2019-10-15 北京航星永智科技有限公司 中国大陆 陕西 西安市 java开发工程师
2019-02-17 2019-07-19 大唐移动通信有限公司 中国大陆 陕西 西安市 java开发工程师
2017-02-16 2019-01-08 上海汇纳科技股份有限公司 中国大陆 陕西 西安 java开发工程师
\n
\n
\n
\n\n
\n
\n
\n \n \n \n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n
\n \n
移动电话:17719770519\n 公司邮箱:[email protected]\n
办公电话:\n 家庭地址:\n
\n
\n\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
开始日期结束日期学历学位最高学历第一学历教育形式国家/地区学校第一专业第二专业
2010-09-01 2014-07-30 大学本科 学士 全日制 中国大陆 西安石油大学 机械设计制造及其自动化
\n
\n
\n
\n
\n\n", "infoBlockList": [{ "crcOrder": "0", "crcInfoBlock": "000", "crcInfoblockDescr": "头部信息" }, { "crcOrder": "1", "crcInfoBlock": "001", "crcInfoblockDescr": "个人基本信息" }, { "crcOrder": "2", "crcInfoBlock": "crcExprHeader", "crcInfoblockDescr": "华润工作经历头部" }, { "crcOrder": "3", "crcInfoBlock": "002", "crcInfoblockDescr": "华润工作经历" }, { "crcOrder": "4", "crcInfoBlock": "003", "crcInfoblockDescr": "非华润工作经历" }, { "crcOrder": "5", "crcInfoBlock": "006", "crcInfoblockDescr": "联系信息" }, { "crcOrder": "6", "crcInfoBlock": "009", "crcInfoblockDescr": "教育信息" }] } }

 

@Override
    public Map getResumeHtmlTemplate(Map map) throws Exception {

        TemplateInfo templateInfo = this.getResume(map);

        if(null == templateInfo || CollectionUtils.isEmpty(templateInfo.getCrcTemplateDetails())){
            throw new BaseException("无简历数据");
        }
        Map dataMap = new LinkedHashMap();
        dataMap.put("data",JSONObject.parseObject(JSONObject.toJSONString(templateInfo.getCrcTemplateDetails().get(0))));
        String templateFileName = "resumeTemplate.ftl";
        
        String htmlTemplate = digitalSignServiceImpl.freeMarkerRender(dataMap,templateFileName);//根据freemarker模板渲染html文件(即将数据渲染到模板里, 并返回html字符串,最终展示在 v-html的组件里),且返回html内容(Template Configuration就是freemarker包下的类)

        
        //重新组装报文
        List infoBlockList = new ArrayList<>();
        templateInfo.getCrcTemplateDetails().get(0).getInfoBlocks().stream().forEach(infoBlock -> {
            Map infoBlockMap = new LinkedHashMap();
            infoBlockMap.put("crcOrder",infoBlock.getCrcOrder());
            infoBlockMap.put("crcInfoBlock",infoBlock.getCrcInfoBlock());
            infoBlockMap.put("crcInfoblockDescr",infoBlock.getCrcInfoblockDescr());
            infoBlockList.add(infoBlockMap);
        });
        Map resultMap = new LinkedHashMap();
        resultMap.put("htmlTemplate",htmlTemplate);//这里就是返回给前端data中的数, htmlTemplate就是freemark静态化以后的产生的html字符串(已经将数据渲染到模板里了)
        resultMap.put("infoBlockList",infoBlockList);//返回给前段的data
        return resultMap;
    }

/**
     * freemarker 配置
     */
    private static Configuration freemarkerCfg = null;

/**
     * freemarker渲染html
     * @param dataMap  {"data":"实体类的json 在模板页面可以直接 ${ data.name} 使用"}
     * @param templateFileName
     * @return
     */
    @Override
    public String freeMarkerRender(Map dataMap, String templateFileName) throws Exception {
        Writer out = new StringWriter();
        try {
            // 获取模板,并设置编码方式
            this.setFreemarkerCfg();
            Template template = freemarkerCfg.getTemplate(templateFileName,"UTF-8");
            //将合并后的数据和模板写入到流中,这里使用的字符流
            template.process(dataMap, out);//dataMap即查询数据库得到的map转为json {"data":"实体类的json 在模板页面可以直接 ${ data.name} 使用"}

            out.flush();
            return out.toString();
        } catch (Exception e) {
            logger.error("处理freemarker渲染html失败",e);
            throw e;
        } finally {
            try {
                out.close();
            } catch (Exception e) {
                logger.error("处理freemarker渲染html,关闭流失败",e);
                throw e;
            }
        }
    }

/**
     * 设置freemarkerCfg
     */
    private void setFreemarkerCfg() {
        //freemarker的模板目录
        freemarkerCfg = new Configuration(Configuration.VERSION_2_3_28);
        try {
            //freemarkerCfg.setDirectoryForTemplateLoading(new ClassPathResource("template").getFile());
            //freemarkerCfg.setDirectoryForTemplateLoading(new File("D:/template"));
            freemarkerCfg.setClassForTemplateLoading(this.getClass(),"/template");
        } catch (Exception e) {
            logger.error("处理freemarker的模板目录错误",e);
        }
    }

 

\n\n\n    \n    PDF模版\n\n\n\n\n
\n\n\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n
\n
\n \n
\n
\n
王欣乐
\n
\n 集团总部\n /\n IT产品服务部
\n
IT产品服务部助理软件工程师\n\n /\n\n 助理经理
\n
\n\n\n
\n\n\n
\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n
\n \n
\n
\n 员工ID:\n\n 21187634\n\n\n\n
\n
\n
\n 英文名:\n\n \n\n\n\n
\n
\n
\n 性别:\n\n \n\n\n\n
\n
\n
\n 出生日期:\n\n 1991-10-21\n\n\n\n
\n
\n
\n 国籍/地区:\n\n 中国大陆\n\n\n\n
\n
\n
\n 籍贯:\n\n 陕西省渭南市\n\n\n\n
\n
\n
\n 民族:\n\n 汉族\n\n\n\n
\n
\n
\n 政治面貌:\n\n 群众\n\n\n\n
\n
\n
\n 特长信息:\n\n \n\n\n\n
\n
\n
\n
\n
\n
\n\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
加入华润日期:2019-10-16\n 加入集团部室/利润中心日期:2019-10-16
加入本单位日期:2019-10-16\n 转正日期:
\n
\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
主/兼岗生效日期操作原因职务职级部门业务单位
主岗 2019-10-16 雇用 一般正常雇用 助理软件工程师 助理经理 IT产品服务部 集团总部
\n
\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
开始日期结束日期原单位工作所在地最后职务
2019-07-22 2019-10-15 北京航星永智科技有限公司 中国大陆 陕西 西安市 java开发工程师
2019-02-17 2019-07-19 大唐移动通信有限公司 中国大陆 陕西 西安市 java开发工程师
2017-02-16 2019-01-08 上海汇纳科技股份有限公司 中国大陆 陕西 西安 java开发工程师
\n
\n
\n
\n\n
\n
\n
\n \n \n \n \n \n \n\n \n\n \n \n \n\n \n\n \n \n \n
\n \n
移动电话:17719770519\n 公司邮箱:[email protected]\n
办公电话:\n 家庭地址:\n
\n
\n\n
\n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
开始日期结束日期学历学位最高学历第一学历教育形式国家/地区学校第一专业第二专业
2010-09-01 2014-07-30 大学本科 学士 全日制 中国大陆 西安石油大学 机械设计制造及其自动化
\n
\n
\n
\n
\n\n",

页面静态化 freemarker (在前后端分离的项目中, 该技术已淘汰)_第1张图片

你可能感兴趣的:(页面静态化 freemarker (在前后端分离的项目中, 该技术已淘汰))