免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3564 | 回复: 0

动态页面生成静态HTML文件 [复制链接]

论坛徽章:
0
发表于 2011-11-04 15:12 |显示全部楼层
package com.kingsoft.main;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

/**
* 类描述:
*
* @author King_wangyao
*         概述:常见的分类信息首页,需读取至少六次数据库;其他子页面,五至十几次次不等,在使用数据库连接的情况下,Tomcat可以支撑的并发量也十分有限
*         。 系统资源主要消耗在两方面: 1、数据库操作,频繁的从数据库返回结果; 2、Tomcat解析JAVA文件。
*         将动态页面按一定规则创建一匹.html纯静态页面的过程,称之为生成静态页面。 优点 无须访问数据库,节省了最大的系统消耗。
*         Tomcat直接返回.html静态文件,无须解析JAVA文件,最大限度的提高效率。 安全,避免了非法传递参数所导致的错误。 缺点
*         生成的大量.html静态页面需要占用较多的硬盘空间。 失去了动态页面所具有交互性能。 运行稳定的动态页面是生成.html静态页面的前提。
*         起初,.html静态页面是通过系统频繁的访问(抓取)动态页面,得到运行结果,再而保存为.html档而来的.因此,
*         抓取这一部分操作将是生成静态页面的核心
*         ;而如何尽可能减少抓取后的解析操作,取决于动态页面(例:Jsp页面);以何种规则保存这些.html静态页面
*         、如何利用静态页面与用户交互等等也是避不可少的.归纳以下几点: 1、定义规则
*         绝大部分Jsp页面作用将不再是面对用户,而是供系统调用,得到运行结果
*         ,从而保存为.html档.因此,Jsp应该根据核心代码的规则,替换所有.jsp标签及连接.由.html代替。 2、路径
*         若.html静态页面太多,将不可避免的存放在不同的文件夹下。 在所有Jsp页面里指定以根目录开头的绝对路径,是解决办法之一。 3、交互性能
*         静态页面不可避免的失去了交互性能
*         ,例如:无法统计信息的阅读次数,无法得到Session信息等等.但也并非没有解决的办法,思路是将整张静态页面分割成若干张小页面
*         ,小页面依旧可以是.html静态页面,也可以是.Jsp动态页面.例如,可以嵌套某一零高度零宽度的.Jsp文件专门用作统计信息的阅读次数。
*         4、优化 若信息量比较大,.html静态页面占用硬盘容量也会随之增大.将静态页面共有的部分组织成一张新的.html页面,
*         再令所有静态页面嵌套这样一个文件有助于降低页面体积.(注意该体积只能降低页面的文件大小,无助于提高访问效率) 5、风险
*         风险主要集中在生成静态页面的这个过程
*         .网络异常可能导致返回的Jsp页面运行结果为空白、频繁读取可能导致Jsp页面未显示完整就保存为.html档等等,都是要考虑的问题。
*
*
*
*         为了节省系统消耗,我们经常将即将生成的页面转化为一个静态的页面,然后存放在硬盘中,以减少系统消耗。
*
*
*
*/
public class CreateHtml {
public static void makeHtml() {
  try {
   URL url = new URL("http://www.baidu.com/");

   // 本实事例通过读取百度页面来生成静态页面,你要是想把自己程序里面要生成的jsp页面转化成静态页面,则可以在url构造器的参数中的参数写上:如http://localhost:8081/NEW/new.do?cmd=list&sortId=2
   URLConnection conn = url.openConnection();// 获得连接
   BufferedReader br = new BufferedReader(new InputStreamReader(conn
     .getInputStream()));
   BufferedWriter bw = new BufferedWriter(new FileWriter(
     "D:/baidu.html"));
   String str = null;
   while ((str = br.readLine()) != null) {
    bw.write(str);
   }
   bw.close();
   br.close();
  } catch (MalformedURLException e) {
   e.printStackTrace();
  } catch (IOException e) {
   e.printStackTrace();
  }
}

public static void main(String[] args) {
  makeHtml();
}
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP