Java项目生成静态页面的代码
2023-06-13 09:14:10 时间
不外乎有以下因素:
1、从页面加载时间来看:静态页面不需要与数据库建立连接,尤其是访问数据量较大的页面,这种页面大多要查很多结果集,因此建立连接次数就增多了,时间不可观,而静态页面则省去了这些时间。
2、从便于搜索引擎抓取的角度来讲:搜索引擎更喜欢静态的网页,静态网页与动态网页相比,搜索引擎更喜欢静的,更便于抓取,搜索引擎SEO排名更容易提高,一些大门户站页面大多都采用静态或伪静态网页来显示,更便于搜索引擎抓取与排名。
3、从安全性来看:静态网页不宜遭到黑客攻击,因为黑客不知道你的网站的后台、网站采用程序、数据库的地址。
4、从稳定性来看:哪天数据库服务器挂了,动态网页就拜拜了!而要运行一个静态网页的发布服务器,相信大家都知道配置不是太高也行的吧?呵呵。
因此,我认为,生成静态页面具有可行性。
那么怎么把动态网页的代码生成静态网页呢?又存在哪呢?原理其实很简单。
1、利用Freemark模板生成静态页面,网上搜一下大把大把的代码随你挑,我就不在这里??铝恕
我很讨厌这种方式,因为对于一个数据量较大的页面来讲工作量太大,要写模板,语法又比较怪异,不流行!
2、也是我偶尔想起来的。用Java中URLConnection抓取某个URL网页源码(这是原理核心)生成html文件,就是这么简单!就是这么Easy!
代码奉上!
1)、以下是捕捉网页源码程序:
复制代码代码如下:
1、从页面加载时间来看:静态页面不需要与数据库建立连接,尤其是访问数据量较大的页面,这种页面大多要查很多结果集,因此建立连接次数就增多了,时间不可观,而静态页面则省去了这些时间。
2、从便于搜索引擎抓取的角度来讲:搜索引擎更喜欢静态的网页,静态网页与动态网页相比,搜索引擎更喜欢静的,更便于抓取,搜索引擎SEO排名更容易提高,一些大门户站页面大多都采用静态或伪静态网页来显示,更便于搜索引擎抓取与排名。
3、从安全性来看:静态网页不宜遭到黑客攻击,因为黑客不知道你的网站的后台、网站采用程序、数据库的地址。
4、从稳定性来看:哪天数据库服务器挂了,动态网页就拜拜了!而要运行一个静态网页的发布服务器,相信大家都知道配置不是太高也行的吧?呵呵。
因此,我认为,生成静态页面具有可行性。
那么怎么把动态网页的代码生成静态网页呢?又存在哪呢?原理其实很简单。
1、利用Freemark模板生成静态页面,网上搜一下大把大把的代码随你挑,我就不在这里??铝恕
我很讨厌这种方式,因为对于一个数据量较大的页面来讲工作量太大,要写模板,语法又比较怪异,不流行!
2、也是我偶尔想起来的。用Java中URLConnection抓取某个URL网页源码(这是原理核心)生成html文件,就是这么简单!就是这么Easy!
代码奉上!
1)、以下是捕捉网页源码程序:
importjava.io.BufferedReader;
importjava.io.File;
importjava.io.IOException;
importjava.io.InputStreamReader;
importjava.net.MalformedURLException;
importjava.net.URL;
importjava.net.URLConnection;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
importorg.apache.commons.io.FileUtils;
importorg.apache.commons.lang.StringUtils;
/**
*@authorXing,XiuDong
*/
publicclassHTMLGenerator{
publicstaticfinalStringgenerate(finalStringurl){
if(StringUtils.isBlank(url)){
returnnull;
}
Patternpattern=Pattern.compile("(http://|https://){1}[\\w\\.\\-/:]+");
Matchermatcher=pattern.matcher(url);
if(!matcher.find()){
returnnull;
}
StringBuffersb=newStringBuffer();
try{
URL_url=newURL(url);
URLConnectionurlConnection=_url.openConnection();
BufferedReaderin=newBufferedReader(newInputStreamReader(urlConnection.getInputStream()));
StringinputLine;
while((inputLine=in.readLine())!=null){
sb.append(inputLine);
}
}catch(MalformedURLExceptione){
e.printStackTrace();
}catch(IOExceptione){
e.printStackTrace();
}
returnsb.toString();
}
/**
*TestCode
*Target:http://www.google.cn/
*/
publicstaticvoidmain(String[]args)throwsIOException{
Stringsrc=HTMLGenerator.generate("http://www.google.cn/");
Filefile=newFile("C:"+File.separator+"index.html");
FileUtils.writeStringToFile(file,src,"UTF-8");
}
}
2)、将源码写入Html文件,这个需要根据用户的需求了,我根据我项目中遇到的情况写了以下代码:
/**
*generitehtmlsourcecode
*
*@authorXing,XiuDong
*@date2009.06.22
*@paramrequest
*@paramurl
*@paramtoWebRoot
*@paramencoding
*@throwsIOException
*/
publicvoidgenHtml(HttpServletRequestrequest,Stringurl,booleantoWebRoot,Stringencoding)throwsIOException{
if(null==url){
url=request.getRequestURL().toString();
}
StringcontextPath=request.getContextPath();
Stringseq=StringUtils.substring(String.valueOf(newDate().getTime()),-6);
StringctxPath=super.getServlet().getServletContext().getRealPath(File.separator);
if(!ctxPath.endsWith(File.separator)){
ctxPath+=File.separator;
}
StringfilePath=StringUtils.substringAfter(url,contextPath);
filePath=filePath.replaceAll("\\.(do|jsp|html|shtml)$",".html");
StringsavePath="";
StringautoCreatedDateDir="";
if(!toWebRoot){
savePath=StringUtils.join(newString[]{"files","history",""},File.separator);
String[]folderPatterns=newString[]{"yyyy","MM","dd",""};
autoCreatedDateDir=DateFormatUtils.format(newDate(),StringUtils.join(folderPatterns,File.separator));
filePath=StringUtils.substringBefore(filePath,".html")+"-"+seq+".html";
}
Filefile=newFile(ctxPath+savePath+autoCreatedDateDir+filePath);
FileUtils.writeStringToFile(file,HTMLGenerator.generate(url),encoding);
}
来源:http://blog.csdn.net/xxd851116
相关文章
- Java设置全局变量_java如何定义全局变量
- java h2数据库_JAVA 项目中使用 H2 数据库
- JAVA多线程面试题_java多线程的实现方式
- java除法保留两位小数_JAVA除法保留小数点后两位的两种方法
- java工程师_Java工程师是青春饭吗?[通俗易懂]
- java启动器_JAVA基础:Java 启动器如何查找类
- java图书馆新地址_值得你关注的16个顶级 Java 开源项目!小白必看
- Java static(三) – 静态代码块
- java 随机数算法_Java随机数算法原理与实现方法实例详解
- Java编程基础
- JAVA生成uuid_java接口default方法
- idea创建java项目的步骤_Java为什么新建不了项目
- java中静态变量与实例变量有何区别
- Java清除字符串中重复出现的字符详解编程语言
- 实现Java程序操作MySQL数据库(java调用mysql)
- 利用Redis存储Java对象的方法(redis存储java对象)
- Java static静态修饰符详解:静态变量、静态方法及静态代码块
- Linux上部署Java项目实践指南(linux部署java项目)
- 版本配置Linux系统的默认Java版本(linux默认java)
- 机制Redis与Java中过期机制的比较(redisjava过期)
- Java程序如何在Linux上顺利部署?快来了解一下!(java部署到Linux)
- Java运行在Linux系统上免费下载(linux java下载)
- 基于Linux操作系统上实现 Java 编程(linux r java)
- Java和Redis的配合安装方法(java redis安装)
- 项目Java项目中展现Redis新型性能优势(redis运用在java)
- java的基本数据类型及属性
- java自动生成略缩图示例代码