在某些应用中,将本该由动态页面每次获取客户端请求时去调用数据的过程转换为在添加数据时即生成为静态页面,对服务器的压力,数据库检索的压力,以及搜索引擎收录,包括防止SQL注入都是由极大的好处的。常见的做法有很多种,包括web服务器启用rewrite,io操作生成文件等等,我正好有一段以前做j2ee开发时保留的一段io操作的方式生成html.
原理都很简单,主要是对模板的解析.so,我们先准备一个html模板
mb.html,做个文件其中的###title###之类的标签用于程序进行查询替换.
<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
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");
}
}
分享到:
相关推荐
总结一下,Java页面静态化是优化网站性能的有效手段,它通过提前生成静态HTML文件,减少了服务器和数据库的负担,提高了网页加载速度。实现这一技术可以借助各种Java模板引擎、页面布局工具、缓存框架,以及Web...
ModelGoon是一款专为Java开发者设计的Eclipse插件,它以其便捷的功能,使得从java代码自动生成UML(统一建模语言)图形变得轻而易举。本文将详细介绍ModelGoon的主要功能、工作原理以及如何使用它来提升开发效率。 ...
总结来说,Parasoft Jtest通过其全面的静态分析、智能的BugDetective、高效的代码审查、自动化测试生成和强大的回归测试支持,为Java开发者提供了一整套解决方案,旨在提升代码质量,优化开发流程,降低项目风险,...
四元式的生成有助于后续步骤,如静态类型检查、优化和代码生成。中间代码的可读性对于调试和教学也非常有帮助。 总结起来,这个项目涵盖了编译器设计的核心技术,从读取源代码,通过词法分析器将其转换为token,到...
在Web开发领域,JSP(JavaServer Pages)是一种动态网页技术,它允许开发者将Java代码嵌入到HTML中,以实现服务器端的编程。然而,为了提高网站性能和减轻服务器负担,开发者通常会将JSP文件转换为静态HTML页面。这...
在互联网世界中,提高网站的搜索引擎优化(SEO)和用户体验是至关重要的,而伪静态页面生成技术正是实现这一目标的有效手段。伪静态页面,顾名思义,是一种将动态网页以静态HTML页面的形式呈现的技术,它保留了动态...
静态初始化块是一段在类加载时执行的代码,用来初始化静态变量。这种块可以有多个,它们的执行顺序取决于在源代码中的位置。静态初始化块只执行一次,通常用于设置复杂的静态变量初始值。 5. 静态类 在Java中,静态...
本文介绍了一个基于UML类图到Java代码自动生成的研究项目。该项目通过利用一种面向对象的脚本语言Ruby及其XML接口REXML来处理从UML类图生成的XMI文档,实现了从模型到代码的有效转换。这一过程不仅提高了开发效率,...
在IT行业中,自动生成静态网页技术与Servlet的结合使用是一种高效的方法,特别是在处理高并发访问和提高网站性能时。Servlet是Java服务器端编程的一个重要组件,它允许开发者创建动态、交互式的Web应用。本篇文章将...
这里提供的代码示例展示了如何在命令行界面通过简单的数学运算和循环结构生成一个静态的爱心图案。下面,我们将深入探讨这个Java代码的工作原理、涉及的知识点以及如何进行扩展。 首先,我们看到一个名为`Heart...
"JAVA类生成UML图"这个主题涉及到如何从已有的Java源代码自动生成UML类图,这是一种非常实用的技术。 1. **UML类图**: UML类图是UML中最基础的图表之一,它展示了类与类之间的关系,如继承、关联、依赖等。类图由类...
在提供的Java代码中,我们看到一个名为`CodeUtil`的类,该类包含了一系列方法,用于生成HTML代码。这个工具的核心功能在于动态构建HTML页面,包括HTML结构、JavaScript脚本以及表格数据。 首先,`CodeUtil`类在第13...
标题 "aamycode_java代码生成工具_" 描述的是一个专门针对Java Web开发的代码自动生成工具,它能够帮助开发者快速生成Bean部分的Java文件以及Servlet部分的Java代码,以实现基本的数据操作,如增(insert)、删...
ByteBuddy是Java平台上的一款强大的代码生成库,它允许开发者在程序运行期间动态地创建新的Java类或修改已有类的字节码。这个库的独特之处在于它无需借助于外部编译器,可以在运行时直接对字节码进行操作,极大地...
本文将详细解析一个具体的Java类——`UniqId`,它用于生成唯一ID。该类通过结合当前时间戳、随机数、主机地址及线程ID来确保ID的唯一性,适用于多种场景。 #### UniqId类详解 ##### 基本结构 `UniqId`类主要由...
在IT领域,特别是Java开发中,能够通过编程方式读取网页内容并生成静态页面是一项非常实用的技能。根据给定的文件信息,我们将深入探讨如何使用Java语言读取网页并生成静态HTML页面,同时理解其背后的原理和技术要点...
FreeMarker是一个强大的、基于模板的Java模板引擎,广泛用于生成动态内容,如HTML、XML或其他任何文本格式。本项目以"使用FreeMarker模版引擎自动生成Java项目源代码"为主题,旨在展示如何利用FreeMarker自动化生成...
这段代码可以用来生成随机数,并根据概率分布判断返回的数字,例如,生成彩票号码、奖券号码等。 概率随机数的应用非常广泛,例如: * 在游戏开发中,用于生成随机事件,例如,游戏中的随机奖励或随机敌人攻击。 *...
j2html是一个开源的Java库,专为开发者设计,提供了一种类型安全的方式来生成HTML代码。这个库的核心理念是将Java的强类型特性与HTML的生成过程相结合,避免了传统字符串拼接导致的错误和不易维护的问题。通过j2html...
Java代码生成器是一种工具,它能够自动生成符合特定需求的Java源代码,从而减少程序员的手动编写工作,提高开发效率。在上述代码中,我们看到一个名为`CodeUtil`的类,它实现了简单的HTML文件的生成,这可以视为一个...