一般生成HTML页时,都会用freemarker,但是每次都要编写模板文件,有时根据项目需求使用它略显麻烦。这里使用httpclient的get方法,去读某个动态的URL,然后把读出的内容再保存成HTML的,下面例子介绍一下:
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod; import org.apache.commons.httpclient.params.HttpMethodParams; import java.io.*; /** * Created with GQ. * User: Administrator * Date: 13-11-1 * Time: 下午1:52 */ public class HtmlGenerator { 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) { System.out.println("静态页面引擎在解析" + 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) { System.out.println("静态页面引擎在解析" + url + "产生静态页面" + htmlFileName + "时出错:" + ex.getMessage()); } finally { //释放http连接 getMethod.releaseConnection(); } return status; } //将解析结果写入指定的静态HTML文件中 private synchronized void writeHtml(String htmlFileName, String content) throws Exception { // 指定生成文件的编码方式为UTF-8,避免中文乱码 PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFileName),"UTF-8"))); // fw = new BufferedWriter(new FileWriter(htmlFileName)); 此方法生成的文件编码格式为:ANSI,会导致中文乱码(另存为文件时可查看具体编码格式) fw = new BufferedWriter(out); 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(""); h.createHtmlPage("http://localhost:8098/app/common/reg.jsp", "c:/reg.html"); } }
相关推荐
2. **网站静态化**:静态化是将动态生成的网页转化为静态HTML文件的过程。这通常通过爬虫程序实现,抓取网页内容后保存为静态文件。静态化的好处包括更快的加载速度、更少的服务器资源消耗、更好的SEO性能。 3. **...
5. **静态化处理**:在处理HTML页面时,静态化是一种常见的技术,它将动态内容转化为静态HTML,以便于缓存和提高访问速度。HttpClient在静态化过程中,需要正确解析HTML中的编码信息,以避免在保存或展示时出现乱码...
4. 生成HTML:根据抓取的数据构造静态HTML页面的结构。 5. 写入文件:使用StreamWriter将生成的HTML写入本地文件系统。 在实际应用中,可能还需要考虑异常处理、缓存策略、多线程抓取以提高效率、以及遵守网站的...
它们允许我们将数据插入到预定义的HTML模板中,生成最终的HTML页面。模板引擎通常支持条件语句、循环和变量,使得页面生成更加灵活。 3. **页面渲染**:使用模板引擎,我们可以将数据和模板结合,生成HTML字符串。...
当获取到`httpclient`请求的数据后,这些数据会被填充到模板中,生成最终的静态HTML页面。`freemarker`的语法简洁,支持条件判断、循环、变量操作等,使得动态数据的渲染变得非常灵活。 实现静态化分页的步骤通常...
在本例中,我们通过Jsoup获取到了京东商品页面的静态HTML代码,但价格信息并未包含在内。通过分析页面源码发现,商品价格是通过JavaScript异步调用接口填充的。通过观察接口的URL结构,我们可以发现,其中包含了商品...
在.NET框架中,生成静态页源码是一种常见的优化网站性能的技术。它涉及到将动态生成的网页转换为HTML文件,这些文件可以直接由Web服务器提供,而无需每次请求时都执行服务器端的代码。这种方式减少了服务器的负载,...
标题中的“一个生成静态的例子”指的是使用编程语言(如C#)来创建静态网页或静态化网站的过程。在IT行业中,生成静态意味着将动态内容转化为HTML等静态格式,以提高网站加载速度、优化SEO(搜索引擎优化)并降低...
【自动生成HTML工具】是一种利用编程语言,如C#,创建的应用程序,旨在自动化生成静态HTML页面的过程。这种工具的主要功能是从指定的URL抓取网页内容,并将其保存为本地的HTML文件,使得用户无需在线访问即可查看...
静态化可以将原本动态生成的HTML页面转化为静态HTML文件,减少服务器处理负担,加快页面加载速度,对用户和搜索引擎都有积极影响。本文将详细介绍第三种Asp.net页面静态化的实现思路,即基于网页抓取技术。 首先,...
在`frameHtml`项目中,可能会利用Jsoup来解析从HttpClient获取的HTML内容,然后根据需求生成静态页面文件。 此外,标签中提到了"教程",这表明`frameHtml`可能包含了一个逐步的指南,指导开发者如何使用HttpClient...
通过一个URLConnection或者一个保存有网页内容的字符串来初始化Parser,或者使用静态函数来生成一个Parser对象。 ParserFeedback的代码很简单,是针对调试和跟踪分析过程的,一般不需要改变。而使用Lexer???? ...
本项目名为"C#实现HTML页面转jpg图片格式",主要目标是通过输入任意的网页链接,在本地指定文件夹生成对应的jpg格式网页截图,同时解决可能出现的白屏问题。 首先,我们需要理解HTML页面的本质,它是一种基于文本的...
在Asp.net开发中,生成HTML文件是一种常见的需求,例如用于静态化网页、生成报表或者构建电子邮件模板等。本文将详细讲解如何利用Asp.net的强大力量来生成HTML文件,包括基于模板和URL的方式。 首先,让我们了解...
- **定义**:页面静态化是指将动态生成的网页转化为静态HTML页面的过程,通常用于提高网站访问速度、降低服务器负载。 - **流程图**:页面静态化一般包括以下几个步骤: - 用户请求动态页面。 - 后端生成动态内容...
本主题主要关注如何使用`httpclient4.*`库来绕过验证码获取公司信息,以及结合`jsoup`解析静态网页信息和`htmlUnit`处理动态网站的抓取。以下是对这些知识点的详细说明: 1. **httpclient4.***: Apache HttpClient...
3. **分页处理**:HTML页面可能很长,转换为PDF时需要考虑如何分页。这通常依赖于转换工具的实现。例如,iText和Flying Saucer等库支持在转换过程中自动分页,根据设定的纸张大小和边距进行内容布局。 4. **样式...
静态网页的内容在服务器端就已经生成,当用户请求时,服务器直接发送HTML源码到客户端。而动态网页则根据用户请求和服务器端的数据实时生成内容。对于静态网页的抓取,我们无需处理JavaScript执行或Ajax异步请求,...
在C#编程中,有时我们需要获取网页的源代码,但有些网页的内容是通过JavaScript动态生成的,单纯使用HttpClient或WebClient等方法无法获取到完整的HTML,因为它们不会执行页面上的JavaScript代码。在这种情况下,...
对于含有JavaScript的HTML,可能需要在转换前先进行预处理,例如使用像JsRender或Puppeteer这样的库来渲染页面并获取最终的静态HTML。 描述中还提到"**如果其中有图片最好事先截图再将html分割放入**"。这是因为...