`

网站静态化知识点梳理

阅读更多

*、在进行网站静态化开发时,对于系统中引入的页面也想实现以引入html方式,这样当被引入的页面发生改变时,不需要对所有引用页面进行静态化,而只需要进行被引入页面的静态化即可。

案例:jquery动态加载html页面之load
http://www.360doc.com/content/15/0610/14/18139076_477138156.shtml

 

*、网站静态化核心之一:发起请求获取网页源码

/**
 * 模拟浏览器请求,给定的url返回网页源码
 * @param urlPath 网页地址
 * @param requestMethod GET或POST,默认是GET
 * @param codeType GBK或UTF-8,默认是GBK
 */
public static String getHtmlCode(String urlPath , String requestMethod , String codeType) {
	String aimHtml = null;
	try {
		URL url=new URL(urlPath);
	HttpURLConnection httpConn=(HttpURLConnection)url.openConnection();
	
	//设置参数
	httpConn.setDoOutput(true);     	//需要输出
	httpConn.setDoInput(true);      	//需要输入
	httpConn.setUseCaches(false);   	//不允许缓存
	httpConn.setRequestMethod(StringUtils.isBlank(requestMethod) ? "GET" : requestMethod);   //设置GET方式连接
	//httpConn.setConnectTimeout(1000 * 10); //链接超时10秒
	//httpConn.setReadTimeout(1000 * 6); //读取超时6秒
	//设置请求属性
	httpConn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
	httpConn.setRequestProperty("Accept-Encoding", "gzip, deflate, sdch");
	httpConn.setRequestProperty("Accept-Language", "en-US,en;q=0.8");//唯一一处:关键点关键点关键点
	httpConn.setRequestProperty("Connection", "Keep-Alive");
	httpConn.setRequestProperty("Charset", StringUtils.isBlank(codeType) ? "GBK" : codeType);
	httpConn.setRequestProperty("Cache-Control", "max-age=0");
	httpConn.setRequestProperty("Upgrade-Insecure-Requests", "1");
	httpConn.setRequestProperty("User-Agent", "Mozilla/5.0");
	httpConn.connect();
	
	//获得响应状态
	int resultCode=httpConn.getResponseCode();
	if(HttpURLConnection.HTTP_OK==resultCode){
	    StringBuffer sb=new StringBuffer();
	    String readLine=new String();
	    BufferedReader responseReader=new BufferedReader(new InputStreamReader(httpConn.getInputStream(),StringUtils.isBlank(codeType) ? "GBK" : codeType));
	    while((readLine=responseReader.readLine())!=null){
		sb.append(readLine).append("\n");
	    }
	    responseReader.close();
	    aimHtml = sb.toString();
	}
	}catch(Exception e) {
		aimHtml = null;
		logger.error(urlPath+"网址访问失败!",e);
	}
	return aimHtml;
}

 

*、静态化网站核心之二是将源码写入文件且不出现乱码

/**
 * 将解析结果写入指定的静态HTML文件中
 * 
 * @param pageContent
 *            文本内容
 * @param fileUrl
 *            目标全路径
 * @throws Exception
 */
private static void writeHtml(String pageContent, String fileUrl)
		throws Exception {
	try {
		OutputStreamWriter fw = new OutputStreamWriter(
				new FileOutputStream(fileUrl), "UTF-8");
		fw.write(pageContent);
		if (fw != null) {
			fw.close();
		}
	} catch (Exception e) {
		logger.error(fileUrl + "文件写入失败!", e);
		throw e;
	}
}

 

*、静态时数据结构+urlwriter会提高效率,具体根据情境分析,(*^__^*) 嘻嘻……

分享到:
评论

相关推荐

    JAVA核心知识点整理.pdf

    Java是一种广泛使用的面向对象编程语言,其核心特性之一就是多态性。多态性赋予了Java代码灵活性和可扩展性,使得程序可以处理多种不同类型的对象而无需知道具体...在实际开发中,这些知识点是Java程序员必备的基础。

    JAVA核心面试知识点整理

    JAVA核心面试知识点整理 Java是目前企业开发中最常用的编程语言之一,Java面试知识点涵盖了Java语言的方方面面,包括Java基础知识、Java高级知识、Java设计模式、Java框架等等。以下是Java核心面试知识点的整理。 ...

    JavaSE知识点梳理

    ### JavaSE知识点梳理 #### 一、Java入门 ##### 1.1 Java概述 Java是一种高级编程语言,它强调面向对象编程(OOP),并具备跨平台性。跨平台性的实现依赖于Java虚拟机(JVM)。Java语言的设计初衷是为了简化编程...

    面向对象相关知识点整理

    以上是面向对象编程中有关方法的基本知识点整理,包括静态方法和实例方法的定义与调用、抽象方法、方法重载与复写等。通过理解这些基本概念,可以帮助开发者更好地掌握面向对象编程的核心思想。

    部编版四年级语文下册期末总复习知识点梳理[知识点梳理].pdf

    【知识点梳理】 这篇文档主要梳理了部编版四年级语文下册期末复习的重要知识点,涵盖了汉字的正确读音、书写、词语辨析、多音字、形近字、近义词、反义词、词语搭配、词语归类、句子积累以及考试热点等内容。 **...

    springboot知识点整理

    学习尚硅谷视频整理的文档 Spring Boot 1 1 Spring Boot入门 4 1.1 简介 4 1.2 微服务(martin fowler发表了一篇文章) 5 1.3 环境约束 7 1.4 第一个Spring Boot项目(jar):HelloWorld 8 1.5 入门案例详解 11 ...

    JAVA核心知识点整理学习.pdf

    JAVA核心知识点整理学习 Java是一种广泛使用的高级编程语言,它的核心知识点涵盖了Java编程语言的基础知识、Java虚拟机(JVM)的工作机制、Java的内存管理机制等方面。下面是对Java核心知识点的整理和学习。 目录 ...

    C++常用知识点整理

    C++是一种广泛使用的...以上就是C++的一些基本知识点,包括高级语言与低级语言的区别、结构化和面向对象编程的概念、软件危机、结构类型和链表数据结构的使用。理解和掌握这些知识点对于深入学习和使用C++至关重要。

    关于汽车介绍的静态网站

    在构建一个关于汽车介绍的静态网站时,我们需要关注多个关键知识点,这些知识点涵盖了网页设计、内容组织、用户体验以及技术实现等方面。以下是对这些知识点的详细阐述: 1. **网页设计**: - **布局与排版**:...

    JAVA核心面试知识点整理.pdf

    Java核心技术面试知识点整理主要围绕Java程序员在面试中可能遇到的考点和重要知识点进行详细阐述,内容涵盖了JVM内存管理、垃圾回收机制、引用类型、IO/NIO模型、集合框架、类加载机制等多个方面,目的是帮助程序员...

    javaweb期末复习知识点整理

    JavaWeb期末复习知识点整理 JavaWeb是Java技术在Web应用中的一个重要组成部分,主要涉及服务器端编程和交互。这里我们详细梳理一下复习时需要关注的知识点。 1. Web应用概述: - URL与URI:URL(统一资源定位器)...

    JAVA核心知识点整理_分享.pdf

    这份"JAVA核心知识点整理_分享.pdf"文档涵盖了Java技术体系的关键点,包括JVM(Java虚拟机)的深入理解,这对于任何Java开发者来说都是至关重要的。以下是根据文档内容整理的一些核心知识点: ### JVM(Java ...

    电磁场与电磁波课程知识点总结

    电磁场与电磁波课程的知识点覆盖了从基本电磁理论到应用的各个层面,以下是根据给定文件内容整理的知识点: 1. 麦克斯韦方程组的理解和掌握:麦克斯韦方程组是电磁学的基石,它包括四个基本方程,描述了电场和磁场...

    2020年最新Java核心知识点整理.pdf

    标题为《2020年最新Java核心知识点整理》,描述为对Java基础到进阶的全部学习资料进行整理,这些内容旨在提供给Java学习者,帮助他们系统性地掌握Java编程。文件还特别提到了JVM(Java虚拟机)以及GC(垃圾回收)等...

Global site tag (gtag.js) - Google Analytics