本文目录一览:
- java静态初始化器 代码一: public class Test { public static int _i; static{ _i = 10;
- 如何实现网页静态化
- 新闻发布时候的静态页面生成 java
- 在java中,怎么把动态页面转为静态页面?
java静态初始化器 代码一: public class Test { public static int _i; static{ _i = 10;
不一样,代码二的复制是在非静态代码块里面,所以必须要在Test类被实例化(一般是new)的时候才会执行,这个要测试也不难,自己写个main方法直接打印Test._i的值就可以看出不同了
如何实现网页静态化
方法一:使用现成的插件,比如:ISAPI_Rewrite、IIS Rewrite、Apache HTTP服务器的mod_rewrite等,它们都是基于正则表达式解析器开发的重写引擎。它们的使用方法查看它们自带的帮助即可。 方法二:自己写的代码实现动态网页静态化,方法也有好几种:
- 创建FSO对象,利用此对象将所需的内容动态创建到文件中生成HTML页面;
- 利用模板技术,将模板中特殊代码的值替换为从表单或是数据库字段中接受过来的值 生成HTML文件;
- 使用Server.Transfer转换技术, 方法三:使用HttpWebRequest请求客户端的方式,获取返回资源,生成静态页面。一般这样只需要获取网页内容即可,其它资源可放置在服务器上,自动加载。(注:此方法缺点明显,需要大量更改匹配URL,建议慎用) 方法四:在asp中有IhttpModule接口。Ihttpmodule可以简单理解为一个可以在执行像.aspx,或者mvc中control/action前,添加我们自定义的操作的东西。 我们只需要编写这么一个HttpModule就可以了,当用户第一次请求asp处理时,我们可以在ihttpmodule中拦截到这个请求,然后获取到这次请求应该返回的html代码,然后我们返回这些html给用户,并保存刚才我们获取到的html到文件内,当用户下次请求时,我们只需要直接返回我们已经保存的html文件即可
新闻发布时候的静态页面生成 java
给你思路:
- 使用java+freeMarker实现。
- 使用java的IO写HTML文档。
- 使用URLRewriter将*.jsp伪装成*.html来访问。
- 将html的内容存入数据库中,在运行时读取出来在服务端输出成html。最后把请求转至html 第一种最简单,不知道你用过没有。简单的说,就是你想生成一个动态的html,你只需要html页面的静态部分写死,作为模板,动态的数据部分,用java的Map封装起来,然后交给freeMarker,它会帮你写入html文档中。最后给你生成你想要的html文档。这个html文档具有你的静态结构,加上动态数据。我给你个示例。
import java.io.ByteArrayOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Locale;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
/**
* 使用freeMarker模板生成报表的动态数据代码
* @author wzj
* 2013-09-18
*/
public class ReportFreeMarker {
private static Configuration cfg = new Configuration();
private static final String FTL_FILE = "chart_templet_";
static {
try {
cfg.setDefaultEncoding("utf-8");
cfg.setClassForTemplateLoading(ReportFreeMarker.class, "");
cfg.setObjectWrapper(new DefaultObjectWrapper());
} catch (Exception e) {
e.printStackTrace();
}
}
// public static void main(String[] args) throws Exception {
// new ReportFreeMarker().execute("chart_templet.ftl");
// }
/**
* 根据type来决定使用哪个模板文件,生成对应的柱图,饼图(1-柱图,2-饼图)
* @param parameterMap 参数集
* @param type 图表类别
* @return
* @throws Exception
*/
public String buildChartCode(Map parameterMap, int type) throws Exception {
Template t = cfg.getTemplate(FTL_FILE + type + ".ftl");
t.setEncoding("utf-8");
String result = null;
Writer out = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
out = new OutputStreamWriter(bos);
t.process(parameterMap, out);
out.flush();
result = new String(bos.toByteArray());
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
if (out != null) {
out.close();
}
if (bos != null) bos.close();
bos = null;
}
return result;
}
// File tmp = new File("./tmp.xml"); //写成tmp.xml测试
// if ( tmp.exists() ) tmp.delete();
// Writer out = null;
// try {
// out = new OutputStreamWriter(new FileOutputStream(tmp), "utf-8");
// t.process(root, out);
// out.flush();
// } catch (Exception e) {
// e.printStackTrace();
// throw e;
// } finally {
// if (out != null) {
// out.close();
// }
// }
// }
//下面是调用
ReportFreeMarker marker = new ReportFreeMarker();
Map root = new HashMap();
root.put(CHART_XLIST, xlist);
root.put(CHART_YLIST, ylist);
String content = null;
try {
content = marker.buildChartCode(root, chartType); //根据模板生成图表xml代码
} catch (Exception e) {
e.printStackTrace();
throw new ReportException(ERROR_FREEMARKER_FAILED + "(" + e.getMessage() + ")");
}
}
这样,你最后可以得到一个包含动态数据的静态html页面的代码,保存成一个文件。
html body
#list ylist as item !--这就是动态的,要封装成map传入-- table/table
/#list
/body
/html
在java中,怎么把动态页面转为静态页面?
方法:
import java.io.*;
import java.net.URL;
/**
* Title:动态页面静态化
* Description: longing.chen@hotmail.com
* Copyright: Copyright (c) 2006
* Company:
* @author bobo
* @version 1.0
*/
public class StaticHTMLFile {
/**
*
* @param page 存放静态页面的本地文件路径
* @param url_addr 所要生成的静态页的URL地址
* @return
*/
public static boolean PrintPage(String page, String url_addr) {
URL url;
String rLine = null;
PrintWriter fileOut = null;
InputStream ins = null;
try {
url = new URL(url_addr);
ins = url.openStream();
BufferedReader bReader = new BufferedReader(new InputStreamReader(ins, "gb2312")); //获取编码为gb2312的文件
FileOutputStream out = new FileOutputStream(page);
OutputStreamWriter writer = new OutputStreamWriter(out, "gb2312");
fileOut = new PrintWriter(writer);
//循环取取数据,并写入目标文件中
while ((rLine = bReader.readLine()) != null) {
String tmp_rLine = rLine;
int str_len = tmp_rLine.length();
if (str_len > 0) {
fileOut.println(tmp_rLine);
fileOut.flush();
}
tmp_rLine = null;
}
url = null;
return true;
} catch (IOException e) {
System.out.println("error: " + e.getMessage());
e.printStackTrace();
return false;
} catch (Exception es) {
System.out.println(es.getMessage());
return false;
} finally { //关闭资源
fileOut.close();
try {
ins.close();
} catch (IOException ex) {
//关闭输入流出错
}
}
}
public static void main(String[] args) {
PrintPage("c:/sina.html", " ");
}
}