zoukankan      html  css  js  c++  java
  • java 生成html页面

    完整代码:

    package ....service;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.Date;
    import java.util.List;
    
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.JSONArray;
    import com.alibaba.fastjson.JSONException;
    import com.alibaba.fastjson.JSONObject;
    
    public class HtlmInfo {
        
        //主页面本地地址
        //模板路径
        private static String filePath = "D:\tycx\item\AllHtml.html";
        //生成主页面路径
        private static String disrPath = "D:\tycx\item\";
        
        //子页面本地地址
        //模板1路径
        private static String AllfilePath = "D:\tycx\item\table.html";
        //模板2路径
        private static String AllfilePathTS = "D:\tycx\item\tableTS.html";
        //生成子页面路径
        private static String AlldisrPath = "D:\tycx\item\AllHtml\";
        //文件后缀
        private static String fileName = ".html";
        
        
        //主页面
        public static void MakeHtml(JSONArray JGarray,JSONArray GRarray){
            try {
            String templateContent = "";
            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");
            
            //按时间对jsonArray数组排序
            String JGarrays =  jsonArraySort(JGarray.toString());
            JSONArray JGarr = JSONArray.parseArray(JGarrays);
            String GRarrays =  jsonArraySort(GRarray.toString());
            JSONArray GRarr = JSONArray.parseArray(GRarrays);
            
            
            //机构
             StringBuffer JGtitleTH = new StringBuffer();
            for(int i=0;i<JGarr.size();i++){
                JSONObject json = JGarr.getJSONObject(i);
                String JGtitle = json.containsKey("title")?json.getString("title"):"";
                String JGpublishtime = json.containsKey("publish_time")?json.getString("publish_time"):"";
                //将时间戳转换
                SimpleDateFormat JGsdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日 ");
                String JGpublish_time= JGsdf.format(new Date(Long.parseLong(String.valueOf(JGpublishtime))));
                //给JGtitlet添加跳转子页面的超连接
                String count = "<tr><td><font size='4' color='blue'><a href='../item/AllHtml/"+JGtitle+".html'>"+ JGtitle+"</a></td>"+ 
                        "<td><font size='4' color='Gray'>"+JGpublish_time+"</td></tr>"; 
                JGtitleTH .append(count);
                System.out.println("JGtitleTH  : "+JGtitleTH);
            }
              System.out.println("JGtitleTH  : "+JGtitleTH);
            //把模板页面上的 ###JGcount### 替换成 JGtitleTH 里的内容
            templateContent = templateContent.replaceAll("###JGcount###", JGtitleTH.toString());
            
            
            //个人(一样的逻辑)
            StringBuffer GRtitleTH = new StringBuffer();
            for(int i=0;i<GRarr.size();i++){
                JSONObject json = GRarr.getJSONObject(i);
                String GRtitle = json.getString("title");
                String GRpublishtime = json.getString("publish_time");
                SimpleDateFormat GRsdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日 ");
                String GRpublish_time= GRsdf.format(new Date(Long.parseLong(String.valueOf(GRpublishtime))));
                String count = "<tr><td><font size='4' color='blue'><a href='../item/AllHtml/"+GRtitle+".html'>"+ GRtitle+"</a></td>"+ 
                        "<td><font size='4' color='Gray'>"+GRpublish_time+"</td></tr>"; 
                GRtitleTH .append(count);
                System.out.println("JGtitleTH  : "+GRtitleTH);
            }
             System.out.println("JGtitleTH  : "+GRtitleTH);
            //把模板页面上的 ###GRcount### 替换成 GRtitleTH 里的内容
            templateContent = templateContent.replaceAll("###GRcount###", GRtitleTH.toString());
            
            
            //开始输出生成的页面
            String fileame = "bsznSearch"+fileName;
            fileame = disrPath + fileame;// 生成的html文件保存路径。
            FileOutputStream fileoutputstream = new FileOutputStream(fileame);// 建立文件输出流
            System.out.print("文件输出路径:");
            System.out.print(fileame);
            byte tag_bytes[] = templateContent.getBytes("UTF-8");
            fileoutputstream.write(tag_bytes);
            fileoutputstream.close();
            } catch (Exception e) {
            System.out.print(e.toString());
            }
            
            
        }
        
        
        //子页面
        public static void MakeAllHtml(JSONObject json){
            try {
            String templateContent = "";
            FileInputStream fileinputstream=null;
            //这个JSON判断可以忽略(可能是接口返回数据问题必须这么写,不然不生效)
            String author =json.containsKey("author")?json.getString("author"):"";
            if(author!=null){
                 fileinputstream = new FileInputStream(AllfilePath);// 读取标准模板文件
            }else{
                 fileinputstream = new FileInputStream(AllfilePathTS);// 读取非标准模板文件
            }
            int lenght = fileinputstream.available();
            byte bytes[] = new byte[lenght];
            fileinputstream.read(bytes);
            fileinputstream.close();
            templateContent = new String(bytes,"UTF-8");
            String title = json.containsKey("title")?json.getString("title"):"";
            String html_text = json.containsKey("html_text")?json.getString("html_text"):"";
            String publishtime = json.containsKey("publish_time")?json.getString("publish_time"):"";
            //看场景,这里需要转译
            html_text = html_text.replaceAll("\\u200c\\u200b", "");
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy 年 MM 月 dd 日 ");
            String publish_time= sdf.format(new Date(Long.parseLong(String.valueOf(publishtime))));
          //把模板页面上的 ###text### 替换成 title 里的内容
            templateContent = templateContent.replaceAll("###title###", title.trim());
            //标准模板比非标准模板多个替换项,不判断会报错
            if( author!=null){
                templateContent = templateContent.replaceAll("###author###", author.trim());
            }
            templateContent = templateContent.replaceAll("###html_text###", html_text.trim());
            templateContent = templateContent.replaceAll("###publish_time###", publish_time);
            String fileame = title+fileName;
            fileame = AlldisrPath + fileame;// 生成的html文件保存路径。
            FileOutputStream fileoutputstream = new FileOutputStream(fileame);// 建立文件输出流
    //        System.out.print("文件输出路径:");
    //        System.out.print(fileame);
            byte tag_bytes[] = templateContent.getBytes("UTF-8");
            fileoutputstream.write(tag_bytes);
            fileoutputstream.close();
            } catch (Exception e) {
            System.out.print(e.toString());
            }
            }
        
        
        
        /**
         * 按照JSONArray中的对象的某个字段进行排序(采用fastJson)
         * 
         * @param jsonArrStr
         * json数组字符串
         * 
         */
        public static String jsonArraySort(String jsonArrStr) {
            JSONArray jsonArr = JSON.parseArray(jsonArrStr);
            JSONArray sortedJsonArray = new JSONArray();
            List<JSONObject> jsonValues = new ArrayList<JSONObject>();
            for (int i = 0; i < jsonArr.size(); i++) {
                jsonValues.add(jsonArr.getJSONObject(i));
            }
            Collections.sort(jsonValues, new Comparator<JSONObject>() {
                // You can change "Name" with "ID" if you want to sort by ID
                private static final String KEY_NAME = "publish_time";
    
                @Override
                public int compare(JSONObject a, JSONObject b) {
                    String valA = new String();
                    String valB = new String();
                    try {
                        // 这里是a、b需要处理的业务,需要根据你的规则进行修改。
                        String aStr = a.getString(KEY_NAME);
                        valA = aStr.replaceAll("-", "");
                        String bStr = b.getString(KEY_NAME);
                        valB = bStr.replaceAll("-", "");
                    } catch (JSONException e) {
                        // do something
                    }
                    return -valA.compareTo(valB);
                    // if you want to change the sort order, simply use the following:
                    // return -valA.compareTo(valB);
                }
            });
            for (int i = 0; i < jsonArr.size(); i++) {
                sortedJsonArray.add(jsonValues.get(i));
            }
            return sortedJsonArray.toString();
        }
    }

    html模板的替换参数示例

        <body>
            <div id="container">
                <div class="common-crumb">
                    <div class="new-common-content">
                        <ul>
                            <li>当前位置:</li>
                            <li><a href="">首页</a> <i class="fa fa-angle-right"></i></li>
                            <li>事项定位</li>
                        </ul>
                    </div>
                </div>
                <div class='new-common-content contentBox'>
                    <div class="page-title">
                    <h2 class="text-center fs28 fw_blod marginB20P" style="padding: 0 50px;margin-top: 50px;; text-align:center">###title###</h2>
    
                    <p style="font-size:18PX;color:#A1A1A1;text-align:center">
                        <span>###publish_time###</span>&nbsp;&nbsp;
                        <span>###author###</span>&nbsp;&nbsp;
                    </p>
                </div>
                    
                    
                <div class="fs16" style="font-size:19PX; padding:50px;line-height:1.5;">            
                                
                ###html_text###    
                                
                </div>        
                    
    </body>
  • 相关阅读:
    [转]CROSS APPLY 和outer apply 的区别
    第一次WCF部署成功心得(UP+证书)
    .NET 简单实现广播
    【转】 c#注册全局快捷键
    软件人才成长链
    [转]关于VS2005智能设备中无法找到PInvoke DLL问题
    [转]我倡导无政府主义编程—Fred George访谈录
    运行Windows Mobile程序时报错:无法找到 PInvoke DLL SQLite.Interop.065.DLL
    系统分析师考试说明
    [转]Oracle 字符集的查看和修改
  • 原文地址:https://www.cnblogs.com/lifan12589/p/13932824.html
Copyright © 2011-2022 走看看