Java 读取模板并生成HTML静态文件实例

本文介绍了一种将动态JSP页面转换为静态HTML的方法,通过模板解析和代码替换实现高效批量转换,适用于网站静态化需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

HTML code 复制代码
<html>
<head>
<title>###title###</title> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> </head> <body> <table width="500" border="0" align="center" cellpadding="0" cellspacing="2"> <tr> <td align="center">###title###</td> </tr> <tr> <td align="center">###author### </td> </tr> <tr> <td>###content###</td> </tr> <tr> <td>###html###</td> </tr> </table> </body> </html>

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

Java code 复制代码
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 <br> * Ttitle: jsp转换成html<br> * De.ion: 把动态网页转换成静态网页<br> * Copyright: Copyright (c) 2002-2008 BocSoft,Inc.All Rights Reserved. <br> * Company: BocSoft<br> * Author: <a href="mailto:sgicer@163.com">阿汐</a> <br> * Date: 2006-6-19 <br> * Time: 16:41:09 <br> * Version: 2.0.0 <br> */ 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"); } }

转载于:https://www.cnblogs.com/zhuyeshen/p/11435473.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值