`

Java Web 页面静态化技术(非原创)

 
阅读更多

 

转自:http://blog.csdn.net/wuyanwen888/article/details/9125511

 

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;

/**
 * 静态页面引擎技术(突乱了乱码问题UTF-8)
 * @author 吴彦文
 *
 */
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程序 html静态页面

    因此,开发过程中可能涉及到了数据库操作(如JDBC连接MySQL或Oracle)、数据处理(如使用Java集合框架)以及数据可视化技术。 "包含html静态页面"意味着此项目中包含了HTML文件,它们是构成用户界面的基本元素。...

    利用Java生成静态HMTL页面.doc

    Java 生成静态HTML页面是一种常见的优化网站性能的技术,它可以减轻服务器和数据库的负载,提高页面加载速度,并且有利于搜索引擎优化(SEO)。以下是一些关于如何使用Java实现这一目标的方法: 1. **动态页面到...

    web课设.rar

    "web"指的是Web开发,涵盖了HTML、CSS、JavaScript等前端技术,以及PHP、Python、Java等后端语言,以及相关的Web框架如Spring、Django或Node.js。"课程设计"则强调这是一个教学性质的项目,目的是为了让学生在实践中...

    毕设&课设&项目&实训-富安娜电商网站 网页原创设计 首页、购物车、详情页、登录、注册等静态页面编写 .zip

    包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python...

    SparkWeb 登录后修改首页便签的方法(原创)

    在IT行业中,SparkWeb是一个基于Spark框架开发的Web应用程序,它提供了一个用户友好的界面来管理和操作Spark集群。本文将详细讲解如何在登录SparkWeb之后修改首页的便签,这通常涉及到对源码的理解和一些基本的Web...

    原创 用FreeMarker宏 和 Jquery 做树(Hbiernate和JDBC版)

    综上所述,这个项目可能涵盖了Java Web开发的核心技术,包括后端的数据操作(Hibernate和JDBC)、模板引擎(FreeMarker)、前端交互(jQuery)以及Eclipse或MyEclipse的项目管理。博客作者分享了如何整合这些技术,...

    Jsp教学ppt课件(中)

    【Jsp教学ppt课件(中)】是一个关于JavaServer Pages(JSP)技术的教育资料,由作者原创整理并分享。这份课件是整个系列的中篇,旨在帮助学习者深入理解JSP的核心概念和实际应用。由于内容较多,作者将其分为上、中、...

    最新原创基于JSP的BLOG博客微薄管理系统

    JSP(JavaServer Pages)是一种由Sun Microsystems公司提出的动态网页开发技术,它是Java EE平台的一部分,用于构建动态Web应用程序。JSP技术允许开发人员将静态HTML、CSS、JavaScript与Java代码结合在一起,使得...

    个人博客系统

    【个人博客系统】是一个基于SSI(Server Side Includes)框架构建的项目,主要应用于网页动态包含技术,使得开发者可以在静态HTML页面中嵌入动态内容。这个博客系统由我亲手制作,确保了代码的独特性和原创性,旨在...

    FamilySys.zip

    在项目结构方面,FamilySys可能遵循了标准的Maven或Gradle构建工具的目录规范,包括src/main/java(存放Java源代码)、src/main/resources(存放配置文件和其他资源)以及src/main/webapp(存放Web应用的静态资源和...

    jsp动态树的生成.doc

    【知识点详解】 在Java Web开发中,JSP(JavaServer Pages)经常被用来构建动态网页。JSP动态树的生成是指在网页上动态地展示层级结构数据,...这种技术在很多Web应用中都有广泛的应用,如文件管理系统、权限管理等。

    jsp图书店销售管理系统

    1. **JSP基础**:JSP是Java Web应用的重要组成部分,它将动态内容与静态内容结合在一起,通过内置对象(如Request、Response、Session、Application等)处理HTTP请求和响应。JSP页面在服务器端执行,并生成HTML返回...

    锋网新闻发布

    【标签】中的"Servlet与JSP"是指该新闻发布系统可能基于Java Web技术栈构建,Servlet作为服务器端的Java应用程序接口,用于处理HTTP请求,而JSP(JavaServer Pages)则是一种动态网页技术,允许开发者在HTML页面中...

    tomcat架构解析_刘光瑞(著) 人民邮电出版社_ 2017-05-01.7z

    Tomcat是Java Servlet和JavaServer Pages(JSP)技术的标准实现,是开源且轻量级的Web应用服务器。它的核心设计基于Servlet容器,使得它能够处理HTTP请求并将其转发给相应的Servlet进行处理。书中会详细讲解Tomcat...

    泽舟网JSP探针 v0.05 -源码.zip

    它允许在静态HTML中嵌入Java代码,通过服务器端处理这些代码,生成HTML页面并返回给客户端。JSP的核心概念包括以下几个方面: 1. **页面指令**:例如`<%@ page>`、`<%@ include>`和`<jsp:include>`,用于定义页面...

    使用JSP实现的在线考试系统

    总之,使用JSP实现的在线考试系统为初学者提供了一个了解Web开发和教育信息化的实例。通过深入研究,可以掌握动态网站开发的基本流程,提升Java Web编程能力。同时,对于实际项目开发,应注重代码质量、安全性和可...

    河源在线品网

    - MongoDB:非关系型数据库,适合处理大量结构化和半结构化数据。 5. **服务器架构**: - LAMP(Linux, Apache, MySQL, PHP)/LEMP(Linux, Nginx, MySQL, PHP):常见的Web服务器架构,用于部署和运行网站。 - ...

    [影音娱乐]泉城JSP播客系统_video.zip

    1. **JSP技术基础**:JSP(JavaServer Pages)是Java平台上的动态网页技术,它将静态HTML和动态Java代码结合在一起,使得开发者可以轻松创建服务器端的Web应用。JSP通过在页面中嵌入Java表达式和脚本来处理数据和...

    JavaWeb宠物商店.zip

    在宠物商店项目中,JSP用于展示商品信息、用户界面等静态内容,同时结合EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)标签库,可以方便地访问和处理后台数据,提高代码的可读性和可...

Global site tag (gtag.js) - Google Analytics