转自:http://blog.csdn.net/wuyanwen888/article/details/9125511
package com.yancms.util; import java.io.*; import org.apache.commons.httpclient.*; import org.apache.commons.httpclient.methods.*; import org.apache.commons.httpclient.params.HttpMethodParams; /** * 静态页面引擎技术(突乱了乱码问题UTF-8) * @author 吴彦文 * */ public class HtmlGenerator extends BaseLog { HttpClient httpClient = null; //HttpClient实例 GetMethod getMethod =null; //GetMethod实例 BufferedWriter fw = null; String page = null; String webappname = null; BufferedReader br = null; InputStream in = null; StringBuffer sb = null; String line = null; //构造方法 public HtmlGenerator(String webappname){ this.webappname = webappname; } /** 根据模版及参数产生静态页面 */ public boolean createHtmlPage(String url,String htmlFileName){ boolean status = false; int statusCode = 0; try{ //创建一个HttpClient实例充当模拟浏览器 httpClient = new HttpClient(); //设置httpclient读取内容时使用的字符集 httpClient.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"UTF-8"); //创建GET方法的实例 getMethod = new GetMethod(url); //使用系统提供的默认的恢复策略,在发生异常时候将自动重试3次 getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler()); //设置Get方法提交参数时使用的字符集,以支持中文参数的正常传递 getMethod.addRequestHeader("Content-Type","text/html;charset=UTF-8"); //执行Get方法并取得返回状态码,200表示正常,其它代码为异常 statusCode = httpClient.executeMethod(getMethod); if (statusCode!=200) { logger.fatal("静态页面引擎在解析"+url+"产生静态页面"+htmlFileName+"时出错!"); }else{ //读取解析结果 sb = new StringBuffer(); in = getMethod.getResponseBodyAsStream(); //br = new BufferedReader(new InputStreamReader(in));//此方法默认会乱码,经过长时期的摸索,下面的方法才可以 br = new BufferedReader(new InputStreamReader(in,"UTF-8")); while((line=br.readLine())!=null){ sb.append(line+"\n"); } if(br!=null)br.close(); page = sb.toString(); //将页面中的相对路径替换成绝对路径,以确保页面资源正常访问 page = formatPage(page); //将解析结果写入指定的静态HTML文件中,实现静态HTML生成 writeHtml(htmlFileName,page); status = true; } }catch(Exception ex){ logger.fatal("静态页面引擎在解析"+url+"产生静态页面"+htmlFileName+"时出错:"+ex.getMessage()); }finally{ //释放http连接 getMethod.releaseConnection(); } return status; } //将解析结果写入指定的静态HTML文件中 private synchronized void writeHtml(String htmlFileName,String content) throws Exception{ fw = new BufferedWriter(new FileWriter(htmlFileName)); OutputStreamWriter fw = new OutputStreamWriter(new FileOutputStream(htmlFileName),"UTF-8"); fw.write(page); if(fw!=null)fw.close(); } //将页面中的相对路径替换成绝对路径,以确保页面资源正常访问 private String formatPage(String page){ page = page.replaceAll("\\.\\./\\.\\./\\.\\./", webappname+"/"); page = page.replaceAll("\\.\\./\\.\\./", webappname+"/"); page = page.replaceAll("\\.\\./", webappname+"/"); return page; } //测试方法 public static void main(String[] args){ HtmlGenerator h = new HtmlGenerator("webappname"); h.createHtmlPage("http://localhost:8080/yanCms/three/three?parent_id=10&id=103&type=10","c:/a.html"); System.out.println("静态页面已经生成到c:/a.html"); } }
相关推荐
有关Java页面静态化
Java页面静态化视频教程,将动态化页面转为静态化页面,减少服务器压力
JSP页面静态化总结_动态页面变为静态页面以减少访问数据库的次数提高速度.zip
NULL 博文链接:https://xh584990686.iteye.com/blog/1392265
动态页面静态化技术,c#技术 动态页面静态化技术,c#技术
java中有的不需要与后台联动,只需开发静态页面,改资料提供了样板案例,并附有代码,方便调试,只需在原有基础上开发,修改
java动态生成静态网页技术.
java CMS 生成静态页面 通过后台发布来改变网站内容
java 静态_非静态 字段_方法_代码块 子类父类构造_初始化顺序! 三个class 让你清清楚楚 第一个class java代码如下: package initialOrder; class Parent { // 静态变量 public static String p_StaticField...
一个比较实用的页面静态化代码,可以很好地实现静态化的效果
商品展示静态页面 1 目标 完成网站的商品展示页面静态效果,目标成果如下: 2 步骤 2.1 将common文件夹...showProducts.jsp页面使用include技术将3个页面包含进来,将showProducts.jsp划分成下面的样子: head.jsp le
php进行页面静态化的一个事例,包含数据库。
44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip44.java数组静态初始化.zip...
URL重写 页面静态化 伪静态化,实现页面静态化。
web静态页面
php 页面静态化
asp.net 动态页面静态化 asp.net 动态页面静态化
ASP.NET 动态页面静态化,ASP.NET 动态页面静态化
前端可视化静态页面和可视化大屏是 Web 前端开发中常见的两种应用场景。下面我将分别介绍它们的特点和常用的技术。 可视化静态页面 可视化静态页面主要用于展示数据和信息,并通过图表、图形等可视化元素呈现给用户...
java整站静态生成方案一 实例工程源码java整站静态生成方案一 实例工程源码java整站静态生成方案一 实例工程源码java整站静态生成方案一 实例工程源码java整站静态生成方案一 实例工程源码java整站静态生成方案一 ...