zoukankan      html  css  js  c++  java
  • 将给定数据源生成静态HTML页面持久化到项目之外的硬盘

    一、java代码

    设置好数据源map

    Map<String,String> map=new HashMap<>();
            map.put("knowledgeName",tBasKnowledgebase.getKnowledgeName());
            map.put("htmlContent",tBasKnowledgebase.getHtmlContent());
            map.put("publishDate",new java.text.SimpleDateFormat("yyyy-MM-dd").format(tBasKnowledgebase.getPublishDate()));
            CreateHtmlUtils.MakeHtml(rpath,map,htmlPath,tBasKnowledgebase.getKnowledgeId());

    工具类方法

    /**
         * @Title: MakeHtml
         * @Description: 创建html
         * @param    filePath 设定模板文件
         * @param    map 需要显示图片的路径
         * @param    disrPath  生成html的存放路径
         * @param    fileName  生成html名字
         * @return void    返回类型
         * @throws
         */
        public static void MakeHtml(String filePath, Map<String,String> map, String disrPath, String fileName ){
            try {
                System.out.print(filePath);
                String templateContent = "";
                // 读取模板文件,模板文件,是工程中的一个html页面,里面有一些需要替换的字段
                FileInputStream fileinputstream = new FileInputStream(filePath);
                int lenght = fileinputstream.available();
                byte bytes[] = new byte[lenght];
                fileinputstream.read(bytes);
                fileinputstream.close();
                templateContent = new String(bytes, "utf-8");
                System.out.print(templateContent);
                // 替换掉模板中的一些字段,填充数据渲染页面
                for (Map.Entry<String,String> entry : map.entrySet()) {
                    String key=entry.getKey();
                    String value=entry.getValue();
                    templateContent = templateContent.replaceAll("###"+key+"###", value);
                    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
                }
                System.out.print(templateContent);
                String fileame = fileName + ".html";
                // 生成的html文件保存路径,html文件全路径,选择服务器上工程目录下以外的路径,持久化存储到硬盘,这样发布新版本原来的静态文件不会丢失
                fileame = disrPath+"/" + fileame;
                // 根据文件全路径创建file对象
                File file=new File(fileame);
                if(!file.getParentFile().exists()){
                    file.getParentFile().mkdirs();
                }
                if(!file.exists()){
                    file.createNewFile();
                }
                FileOutputStream fileOutputStream=new FileOutputStream(file);
                OutputStreamWriter oStreamWriter = new OutputStreamWriter(fileOutputStream, "utf-8");
                // 将替换完数据的模板页面形成的文件流持久化到硬盘
                oStreamWriter.append(templateContent);
                oStreamWriter.close();
            } catch (Exception e) {
                System.out.print(e.toString());
            }
        }

    工程中的模板HTML文件:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8" />
        <title>###knowledgeName###</title>
        <style>
            body{ text-align:center;border: 0;margin: 0;}
            .div{ margin:20px auto;max- 1000px}
            .title{
                font-size: 20px;
                font-weight: bold;
                margin-bottom: 20px;
            }
            .date{
                border-bottom: 1px solid #9a9a9a;
                padding: 0 16px 16px;
                font-size: 15px;
            }
            .content{
                text-align: left;
                padding-top: 10px;
                line-height: 30px;
            }
            .toolsBox {
                height: 36px;
                border: 1px solid #d8d8d8;
                background: #fafbfb;
                font-size: 14px;
                color: #666;
                line-height: 36px;
                text-align: center;
                margin-top: 70px;
            }
            .toolsBox a, .toolsBox i {
                color: #666;
                cursor: pointer;
                font-style: normal;
                text-decoration: none;
            }
            .toolsBox i.on {
                color: #ff8400;
            }
        </style>
    </head>
    <body>
    <div class="div">
        <div class="title">
            ###knowledgeName###
        </div>
        <div class="date">
            ###publishDate###
        </div>
        <div class="content">
            ###htmlContent###
        </div>
        <div class="toolsBox">字体:【 <i>大</i>  <i @cile class="on">中</i>  <i>小</i> 】<a href="javascript:window.print();">【打印 】</a><a href="javascript:window.close();">【关闭】</a></div>
    </div>
    <script src="/js/jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
        (function () {
    
            // 字号设置
            function setFontSize(oElement,size){
                var size = size || 14;
                $(oElement).css({'fontSize': size+"px"});
            }
            $('.toolsBox i').eq(0).click(function() {
                setFontSize('.content p','16');
                $(this).siblings('i').removeClass('on');
                $(this).addClass('on');
            });
            $('.toolsBox i').eq(1).click(function() {
                setFontSize('.content p','14');
                $(this).siblings('i').removeClass('on');
                $(this).addClass('on');
            });
            $('.toolsBox i').eq(2).click(function() {
                setFontSize('.content p','12');
                $(this).siblings('i').removeClass('on');
                $(this).addClass('on');
            });
    
        })();
    
    </script>
    </body>
    </html>

    效果:

  • 相关阅读:
    水晶报表参数字段在代码中赋值
    存储过程编写经验和优化措施
    积分与排名
    大话处理器
    抽象数学
    开普勒:天空的立法者
    Scalable Face Image Retrieval with IdentityBased Quantization and Multireference Reranking
    配色辞典
    图像识别顶级赛事
    Information Geometry
  • 原文地址:https://www.cnblogs.com/wmqiang/p/11603143.html
Copyright © 2011-2022 走看看