高性能 java web页面静态化使用httpclient生成静态页面
2014-11-19 16:33
134 查看
package com.wwxl.util; import java.io.*; import org.apache.commons.httpclient.*; import org.apache.commons.httpclient.methods.*; import org.apache.commons.httpclient.params.HttpMethodParams; import org.apache.log4j.Logger; /** * 静态页面引擎技术 * @author 邓文伟 * */ public class HtmlGenerator{ private Logger logger = Logger.getLogger(HtmlGenerator.class); HttpClient httpClient = null; //HttpClient实例 GetMethod getMethod =null; //GetMethod实例 String page = null; String webappname = null; BufferedWriter fw = 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,"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 page) 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://www.baidu.com","c:/a.html"); System.out.println("静态页面已经生成到c:/a.html"); } }
添加pom依赖 <dependency> <groupId>commons-httpclient</groupId> <artifactId>commons-httpclient</artifactId> <version>3.1</version> </dependency> <!-- log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency>
相关文章推荐
- 高性能 java web页面静态化使用httpclient生成静态页面
- 高性能Java Web 页面静态化实例
- 高性能Java Web 页面静态化技术
- 高性能Java Web 页面静态化技术
- Java Web项目--使用Servlet生成一个页面
- 高性能Java Web 页面静态化技术(原创)
- Java Web项目--使用JSP生成一个页面
- php 静态化页面 生成静态页面
- 高性能Java Web 页面静态化技术
- 网站性能优化,使用velocity实现页面静态化,实现实时更新静态页面
- 使用HTTPCLIENT生成静态HTML页面
- 高性能Java Web 页面静态化技术(原创)
- xslt 静态化页面的生成程序
- Re:[转]使用xmldom在服务器端生成静态html页面
- C#通过动态页面生成静态页面
- Java Web实践专题——图形验证码的生成与使用
- 使用该JavaBean可以将数据在JSP页面中以表格的形式显示出来,并具有动态排序、动态生成查询、自动分页功能
- 在ASP中使用FSO组件生成HTML页面
- ASP.NET基础教程-Web 自定义控件的使用-根据属性值从数据库中提取数据并在页面上自动生成一个表格
- 使用asp动态生成页面,并将页面保存为word