`
yjp
  • 浏览: 22064 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

静态HTML生成原理

阅读更多
虽然在性能上讲,即使将JSP或ACTION转换成HTML文件还是不如将某张JSP或某个ACTION缓存起来再作应响这种策略。但是,对大型的系统,JSP页面和ACTION可能成千上万,页每张JSP或每个ACTION反回的数据大概有几K左右。当然,我们只是缓存访问最频繁的页面,即使最繁的页面也可能有很多,所以也不能全部缓存。再说,缓存起来的数据也要定时更新,如果多了,定时更新也存在一定的问题,这就是为什么要静态HTML的理由了。
废话就不多说了,下面我们讨论一下如何将JSP或ACTION转换成HTML。其实这是一个非常简单的过程,你只要理解response对象的作用和知道如何正确编码就可以了。大家都知道,JSP在执行前是先被转译成Java文件,再编译成class文件再服务的。在每个JSP实例都有个service方法,而这个service方法将动态数据解释成以html标记的内容,然后再用response的writer对象将一段一段地内容写向服务器,完毕后刷新writer对象和关闭它,最后客户端所得到的就是html内容了。
既然是这样,如果在客户访某个JSP或ACTION前,我们先在服务端访问它,然后将得到的内容存到一个字节数组中,当客户端要访问我们在服务端已经访问过的ACTION或JSP时,我们直接用response的OutputStream将储存这个页面或ACTIONR的字节数组输出到客户端。这不就是避勉当每一次请求那个action或jsp都要执行一次吗?如果这样是可行的话,那么剩下的就是如何在服务端虚构一个客户来访问要缓存一页面了。
在虚构客户这方面,最直接的做法就是用一个SERVLET,在SERVLET的doPost或doGet方法中要实现:一、可以请求某个JSP或ACTION。二、在请求之后能获取一个InputStream。三、这个InputStream所读取的数据能保存到特定的地方。
要实现doPost或doGet方法中的三个方面的要求有很多做法,但都基于读取服务器响应的数据。有种比较麻烦的实现是:1.创建一个OutputStream。2.用这个OutputStream来创建一个ServletOutputStream。3.用这个OutputStream创建一个OutputStreamWriter。4.用这个OuputStreamWriter创建一个PrintWriter。5.用上面创建的ServletOutputStream和PrintWriter和response对象来新建一个HttpSerlvetResponse对象。6.用request对象在指定的URL上获取一个RequestDispatcher对象。7.用这个RequestDispatcher对象的include(req,res)方法,将请求的数据转到request和刚才新建一那个response对象上。8.最后调用PrintWriter的close和OuputStream的close。
经过上面一系列的处理,服务端响应的数据将写到特定的OutputStream上了。下面是代码:
String fileForOuput = “C://xxx.html”;
FileOutputStream os = new FileOutputStream(fileForOuput);
final ServletOutputStream stream = new ServletOutputStream()
{
      public void write(byte[] data, int offset, int length) {
                         try {
os.write(data, offset, length);
} catch (IOException e) {
e.printStackTrace();
}
      }
      public void write(int b) throws IOException {
              os.write(b);
      }
};
final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));
HttpServletResponse rep = new HttpServletResponseWrapper(response)
{
          public ServletOutputStream getOutputStream() {
                   return stream;
           }

           public PrintWriter getWriter() {
                  return pw;
           }
};
String url = http://localhost:port/page;
RequestDispatcher rd = request.getRequestDispatcher(url);
rd.include(request, rep);
pw.flush();
pw.close();
os.close();
这种方法是可行的,但比较罗索,代码比较长,URL和URLConnection为我们封装了上面的几步,我们只要从它那里直接获取InputStream以相应的编码格式读取服务器响应的html内容,再保存就可以了。
如果真的要生成HTML的话,也不能“一劳永逸”式地实现,因为JSP和ACTION都是态动的,在不同时该所生成的内容可能不同,这就要一个底级线程定期实现上面的操作和注销缓存或删除旧的html文件以达到更新目的。
0
0
分享到:
评论

相关推荐

    CMS生成静态网页简单原理

    ### CMS生成静态网页简单原理深度解析 在当前的互联网时代,内容管理系统(Content Management System,简称CMS)成为构建网站的重要工具之一。CMS系统以其强大的编辑、管理功能,为非技术背景的用户提供了创建和维护...

    asp静态页生成程序,在线html静态页批量生成程序,网站转html程序代码

    1. **静态页生成原理**:静态页生成程序通过遍历网站的所有动态ASP页面,并将其内容抓取到HTML文件中。这些HTML文件不依赖服务器上的脚本执行,而是直接由浏览器读取并显示。在ASP中,这通常涉及到解析URL,执行相应...

    PHP生成静态HTML的技术原理

    静态HTML生成技术则是通过在用户请求之前预先将PHP页面的内容转换为HTML文件,存储在服务器上。这样,当用户再次访问同一页面时,服务器直接返回已生成的HTML,无需再执行PHP脚本,从而减少了处理时间。 实现PHP...

    静态生成\php生成静态原理程序.rar

    在IT行业中,静态生成是一种常见的网站优化技术,它涉及到将动态生成的内容转化为静态HTML页面,以便提高网站的加载速度和搜索引擎优化(SEO)。本压缩包文件"静态生成\php生成静态原理程序.rar"包含了名为"php生成...

    静态生成\ASP生成静态程序原理.rar

    在IT行业中,静态生成是一种网页制作技术,它将动态生成的内容转换为静态HTML页面,以提高网站的加载速度和搜索引擎优化(SEO)。本文件“静态生成\ASP生成静态程序原理.rar”显然关注的是如何利用ASP(Active ...

    AQ静态页生成工具 v2.3

    AQ静态页生成工具 v2.3 是一款专为此目标设计的专业软件,致力于通过将动态网页转化为静态HTML页面,从而提高网站加载速度和稳定性。该工具的最新更新,2011.10.29 版本,带来了显著的功能改进和用户体验提升。 ...

    C#生成html静态页面示例

    在提供的示例中,可能包括了将动态数据转换为静态HTML页面的逻辑。例如,一个常见的应用场景是,网站每天会根据数据库中的内容自动生成新的HTML页面,以便于提高网站的加载速度和搜索引擎优化。 要运行这些示例,你...

    HHFtohtml 静态页面生成控件

    本控件使用简单,只需两步即可给网站配置使用,而且不是采用地址重写生成伪静态页面。 是可以生成真实的静态页面,方便搜索引擎收录,减轻服务器负荷。 运行原理: 运行引子页面(index.html)后,自动产生各种需要的...

    web静态网页生成器

    "Web静态网页生成器"是一种工具,主要用于自动化创建和构建静态HTML页面。在互联网发展初期,静态网页是最常见的形式,它们由纯HTML代码组成,不包含任何服务器端脚本,如PHP、Java或ASP等。静态网页加载速度快,对...

    通用静态页面生成系统

    这种系统通过自动化处理,可以将动态数据转化为静态HTML页面,使得用户在浏览时无需直接与数据库交互,从而提高用户体验。 在描述中提到的“通过参数的设置,自动获取数据后生成源数据”这一过程,实际上指的是系统...

    静态页面生成例子 ASP

    然而,对于某些不需要频繁更新或者需要快速加载的页面,生成静态HTML文件可以提高用户体验和搜索引擎的抓取效率。 静态页面生成技术的基本原理是:当用户请求一个动态页面时,服务器并不直接执行脚本返回结果,而是...

    asp.net生成静态HTML页面

    ASP.NET生成静态HTML页面是一种常见的优化网站性能和SEO(搜索引擎优化)的技术。它涉及将原本由服务器动态生成的ASP.NET(通常使用C#语言编写)网页转换为纯HTML文件,这些文件可以直接由Web服务器提供,而无需每次...

    织梦cms手机生成静态页插件_织梦cms手机生成静态页插件_

    织梦CMS手机生成静态页插件的工作原理如下: 1. **插件安装**:下载并安装插件,通常通过织梦后台的“模块”->“上传安装”进行操作。确保插件文件UTF-8.xml或GBK.xml与系统编码兼容,GBK适用于旧版本的织梦系统,...

    静态页面生成

    总结起来,静态页面生成是提升网站性能和SEO的重要手段,尤其在ASP环境中,通过预先生成与关键词相关的静态HTML页面,可以提高搜索引擎可见性,加快页面加载速度,并提高整体的用户体验。同时,合理地管理和运用静态...

    全自动静态网页生成器StaticHtml

    StaticHtml是一款全自动静态网页生成器,它旨在帮助用户将动态网站快速转化为静态HTML页面,以提高网站的加载速度和搜索引擎优化。使用此类工具的主要原因是静态网页对于访问者来说加载更快,同时降低了服务器处理...

    网站生成静态页面的方案和工具

    1. 工作原理:FreeMarker读取XML或HTML模板文件,根据给定的数据模型替换模板中的占位符,生成最终的静态HTML页面。 2. 特性:FreeMarker支持条件语句、循环结构、函数调用等编程元素,让模板具有一定的动态能力,...

    .net生成静态页面

    这需要在路由处理程序中进行特殊配置,当请求未找到静态HTML时,再执行常规的动态生成过程,并将结果保存为静态文件。 3. **缓存策略**:结合ASP.NET的OutputCache特性,可以将动态页面的输出缓存为文件,当请求...

    asp.net 静态页面生成

    一、ASP.NET静态页面生成原理 1. 请求处理:当用户请求一个页面时,ASP.NET框架会检查该页面是否已经作为静态HTML存在。如果存在,Web服务器会直接返回这个静态文件,而无需执行任何服务器端代码。 2. 动态转静态...

    ASP生成html静态网页文件 v1.1.rar

    本例主要说明用模板生成静态的原理, 实际应用需要各们站长自己修改整合。 现在生成静态常用方法有两种:一是用模板替换(此例),二是用XMLHttp组件读取数据保存为html静态文件。另外一种用XMLHttp组件的,我还...

Global site tag (gtag.js) - Google Analytics