高性能Java Web 页面静态化技术
2014-12-03 17:17
169 查看
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; /** * 静态页面引擎技术 */ 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 Web 页面静态化技术(原创)
- 高性能Java Web 页面静态化技术(原创)
- 高性能Java Web 页面静态化技术
- 高性能Java Web 页面静态化技术
- 高性能 java web页面静态化使用httpclient生成静态页面
- 高性能 java web页面静态化使用httpclient生成静态页面
- 高性能Java Web 页面静态化实例
- PHP页面静态化技术
- PHP页面静态化技术
- 使PHP页面静态化技术,php动态页面转html静态页面
- PHP文件缓存技术之页面静态化
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(三)
- Java web----页面静态化
- 一起谈.NET技术,构建高性能ASP.NET站点之一 剖析页面的处理过程(前端)
- php页面静态化技术;学习笔记
- 缓存技术(页面静态化)与mysql优化
- 大型网站提速关键技术(页面静态化,memcached,MySql优化)(一)
- 黑马程序员_ASP.Net页面静态化技术
- 各种系统性能优化技术,采用vilocity实现商品页面静态化
- 静态化技术页面另类更新方法