转自: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"); } }
相关推荐
因此,开发过程中可能涉及到了数据库操作(如JDBC连接MySQL或Oracle)、数据处理(如使用Java集合框架)以及数据可视化技术。 "包含html静态页面"意味着此项目中包含了HTML文件,它们是构成用户界面的基本元素。...
Java 生成静态HTML页面是一种常见的优化网站性能的技术,它可以减轻服务器和数据库的负载,提高页面加载速度,并且有利于搜索引擎优化(SEO)。以下是一些关于如何使用Java实现这一目标的方法: 1. **动态页面到...
"web"指的是Web开发,涵盖了HTML、CSS、JavaScript等前端技术,以及PHP、Python、Java等后端语言,以及相关的Web框架如Spring、Django或Node.js。"课程设计"则强调这是一个教学性质的项目,目的是为了让学生在实践中...
包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。 包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python...
在IT行业中,SparkWeb是一个基于Spark框架开发的Web应用程序,它提供了一个用户友好的界面来管理和操作Spark集群。本文将详细讲解如何在登录SparkWeb之后修改首页的便签,这通常涉及到对源码的理解和一些基本的Web...
综上所述,这个项目可能涵盖了Java Web开发的核心技术,包括后端的数据操作(Hibernate和JDBC)、模板引擎(FreeMarker)、前端交互(jQuery)以及Eclipse或MyEclipse的项目管理。博客作者分享了如何整合这些技术,...
【Jsp教学ppt课件(中)】是一个关于JavaServer Pages(JSP)技术的教育资料,由作者原创整理并分享。这份课件是整个系列的中篇,旨在帮助学习者深入理解JSP的核心概念和实际应用。由于内容较多,作者将其分为上、中、...
JSP(JavaServer Pages)是一种由Sun Microsystems公司提出的动态网页开发技术,它是Java EE平台的一部分,用于构建动态Web应用程序。JSP技术允许开发人员将静态HTML、CSS、JavaScript与Java代码结合在一起,使得...
【个人博客系统】是一个基于SSI(Server Side Includes)框架构建的项目,主要应用于网页动态包含技术,使得开发者可以在静态HTML页面中嵌入动态内容。这个博客系统由我亲手制作,确保了代码的独特性和原创性,旨在...
在项目结构方面,FamilySys可能遵循了标准的Maven或Gradle构建工具的目录规范,包括src/main/java(存放Java源代码)、src/main/resources(存放配置文件和其他资源)以及src/main/webapp(存放Web应用的静态资源和...
【知识点详解】 在Java Web开发中,JSP(JavaServer Pages)经常被用来构建动态网页。JSP动态树的生成是指在网页上动态地展示层级结构数据,...这种技术在很多Web应用中都有广泛的应用,如文件管理系统、权限管理等。
1. **JSP基础**:JSP是Java Web应用的重要组成部分,它将动态内容与静态内容结合在一起,通过内置对象(如Request、Response、Session、Application等)处理HTTP请求和响应。JSP页面在服务器端执行,并生成HTML返回...
【标签】中的"Servlet与JSP"是指该新闻发布系统可能基于Java Web技术栈构建,Servlet作为服务器端的Java应用程序接口,用于处理HTTP请求,而JSP(JavaServer Pages)则是一种动态网页技术,允许开发者在HTML页面中...
Tomcat是Java Servlet和JavaServer Pages(JSP)技术的标准实现,是开源且轻量级的Web应用服务器。它的核心设计基于Servlet容器,使得它能够处理HTTP请求并将其转发给相应的Servlet进行处理。书中会详细讲解Tomcat...
它允许在静态HTML中嵌入Java代码,通过服务器端处理这些代码,生成HTML页面并返回给客户端。JSP的核心概念包括以下几个方面: 1. **页面指令**:例如`<%@ page>`、`<%@ include>`和`<jsp:include>`,用于定义页面...
总之,使用JSP实现的在线考试系统为初学者提供了一个了解Web开发和教育信息化的实例。通过深入研究,可以掌握动态网站开发的基本流程,提升Java Web编程能力。同时,对于实际项目开发,应注重代码质量、安全性和可...
- MongoDB:非关系型数据库,适合处理大量结构化和半结构化数据。 5. **服务器架构**: - LAMP(Linux, Apache, MySQL, PHP)/LEMP(Linux, Nginx, MySQL, PHP):常见的Web服务器架构,用于部署和运行网站。 - ...
1. **JSP技术基础**:JSP(JavaServer Pages)是Java平台上的动态网页技术,它将静态HTML和动态Java代码结合在一起,使得开发者可以轻松创建服务器端的Web应用。JSP通过在页面中嵌入Java表达式和脚本来处理数据和...
在宠物商店项目中,JSP用于展示商品信息、用户界面等静态内容,同时结合EL(Expression Language)和JSTL(JavaServer Pages Standard Tag Library)标签库,可以方便地访问和处理后台数据,提高代码的可读性和可...