java生成静态html的一段代码

       在某些应用中,将本该由动态页面每次获取客户端请求时去调用数据的过程转换为在添加数据时即生成为静态页面,这样对服务器的压力,数据库检索的压力,以及搜索引擎收录,包括防止SQL注入都是有极大的好处的。常见的做法有很多种,包括web服务器启用rewrite,io操作生成文件等等,这里正好有一段以前做j2ee开发时保留的一段io操作的方式生成html。

       原理很简单,主要是对模板的解析.so,我们先准备一个html模板mb.html,做个文件,其中的“###title###”之类的标签用于程序进行查询替换。



###title###














   
           
###title###
       
           
###author###
       
       
###content###
   
###html###


       下面是具体的代码:JspToHtml.java。

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.ArrayList;
import java.util.Date;
import java.net.URL;
import java.net.URLConnection;
import java.io.*;

/**
* Filename: JspToHtml.java

* Ttitle: jsp转换成html

* De.ion: 把动态网页转换成静态网页

* Copyright:        Copyright (c) 2002-2008 BocSoft,Inc.All Rights Reserved.

* Company:         BocSoft

* Author:            阿汐

* Date: 2006-6-19

* Time: 16:41:09

* Version: 2.0.0

*/
public class JspToHtml {

private static String title ="标题测试";
private static String context ="标题测试";
private static String editer ="标题测试";
        /**
            * 根据本地模板生成静态页面
         * @param JspFile    jsp路经
         * @param HtmlFile html路经
         * @return
         */
        public static boolean JspToHtmlFile(String filePath, String HtmlFile) {
                String str = "";
                long beginDate = (new Date()).getTime();
                try {
                        String tempStr = "";
                  FileInputStream is = new FileInputStream(filePath);//读取模块文件
                        BufferedReader br = new BufferedReader(new InputStreamReader(is));
                        while ((tempStr = br.readLine()) != null)
                        str = str + tempStr ;
                        is.close();
                } catch (IOException e) {
                        e.printStackTrace();
                        return false;
                }
                try {
            str = str.replaceAll("###title###",
                title);
            str = str.replaceAll("###content###",
                context);
            str = str.replaceAll("###author###",
                editer);//替换掉模块中相应的地方
                        File f = new File(HtmlFile);
                        BufferedWriter o = new BufferedWriter(new FileWriter(f));
                        o.write(str);
                        o.close();
                        System.out.println("共用时:" + ((new Date()).getTime() - beginDate) + "ms");
                } catch (IOException e) {
                        e.printStackTrace();
                        return false;
                }
                return true;
        }

        /**
         * 根据url生成静态页面
         *
         * @param u        动态文件路经 如:http://www.163.com/x.jsp
         * @param path 文件存放路经如:x://abc/bbb.html
         * @return
         */
        public static boolean JspToHtmlByURL(String u, String path) {
                //从utl中读取html存为str
                String str = "";
                try {
                        URL url = new URL(u);
                        URLConnection uc = url.openConnection();
                        InputStream is = uc.getInputStream();
                        BufferedReader br = new BufferedReader(new InputStreamReader(is));
                        while (br.ready()) {
                                str += br.readLine() + "/n";
                        }
                        is.close();
                        //写入文件
                        File f = new File(path);
                        BufferedWriter o = new BufferedWriter(new FileWriter(f));
                        o.write(str);
                        o.close();
                        str = "";
                        return true;
                } catch (Exception e) {
                        e.printStackTrace();
                        return false;
                }
        }

        /**
         * 根据url生成静态页面
         *
         * @param url 动态文件路经 如:http://www.163.com/x.jsp
         * @return d
         */
        public static StringBuffer getHtmlTextByURL(String url) {
                //从utl中读取html存为str
                StringBuffer sb = new StringBuffer();
                try {
                        URL u = new URL(url);
                        URLConnection uc = u.openConnection();
                        InputStream is = uc.getInputStream();
                        BufferedReader br = new BufferedReader(new InputStreamReader(is));
                        while (br.ready()) {
                                sb.append(br.readLine() + "/n");
                        }
                        is.close();
                        return sb;
                } catch (Exception e) {
                        e.printStackTrace();
                        return sb;
                }
        }

        /**
         * 测试main 函数
         *
         * @param arg
         */
        public static void main(String[] arg) {
                long begin = System.currentTimeMillis();
    //循环生成20个html文件
                for (int k = 0; k < 20; k++) {
                        String url = "E://workspace//oa//golatel//utils//Temp//mb.htm";//模板文件地址
                        String savepath = "d:/" + k + ".html";//生成文件地址
                        JspToHtmlFile(url, savepath);
                }
                System.out.println("用时:" + (System.currentTimeMillis() - begin) + "ms");
        }
}

        希望对大家有用。

生成静态HTML的一种常见方式是使用模板引擎,例如使用 Freemarker 或 Thymeleaf 等。以下是使用 Freemarker 生成静态HTML的示例代码: ```java import freemarker.template.Configuration; import freemarker.template.Template; import java.io.File; import java.io.FileWriter; import java.util.HashMap; import java.util.Map; public class StaticHtmlGenerator { public static void main(String[] args) throws Exception { // 创建Freemarker配置对象 Configuration cfg = new Configuration(Configuration.VERSION_2_3_28); // 设置模板文件所在目录 cfg.setDirectoryForTemplateLoading(new File("src/main/resources/templates")); // 加载模板文件 Template template = cfg.getTemplate("index.ftl"); // 创建数据模型 Map<String, Object> data = new HashMap<>(); data.put("title", "静态HTML生成示例"); data.put("content", "<p>这是一段测试内容</p>"); // 创建输出文件 File output = new File("output.html"); FileWriter writer = new FileWriter(output); // 将数据模型填充到模板中,并输出到文件 template.process(data, writer); writer.close(); System.out.println("静态HTML生成:" + output.getAbsolutePath()); } } ``` 在以上示例代码中,我们使用 Freemarker 模板引擎加载模板文件,并将数据模型填充到模板中生成静态HTML文件。其中,模板文件存放在 `src/main/resources/templates` 目录下,数据模型使用 Map 对象来存储。最终生成静态HTML文件名为 `output.html`,存放在当前工作目录下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值