生成静态页面的技术是如何实现的

问题描述

在浏览很多论坛或者网站的时候,一般都是大型的门户网站或者论坛.发现都是.html的静态页面.比如: http://www.domain.com/thread-htm-fid-240.html 的形式.我觉得这个肯定是在后台通过程序将JSP页面生成的html页面.我想问的就是这个是如何实现的? 通过什么技术 或者是 什么设计模式 ?这样做的有点和缺点都有哪些?有点我认为可以减少对数据库的操作,增加搜索引擎的抓取几率吧,不知道理解的对不对.在本站和网络上也搜索了不少,但是感觉说的都太模糊了.想请做过这方面的朋友给详细介绍一下.因为本人也是做java开发的,一直都做的是企业的项目开发,没有涉及过这方面的问题. 现在想学习一下.提高竞争力.

解决方案

用Velocity吧 Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象。 当Velocity应用于web开发时,界面设计人员可以和java程序开发人员同步开发一个遵循MVC架构的web站点,也就是说,页面设计人员可以只 关注页面的显示效果,而由java程序开发人员关注业务逻辑编码。Velocity将java代码从web页面中分离出来,这样为web站点的长期维护提 供了便利,同时也为我们在JSP和PHP之外又提供了一种可选的方案。 Velocity的能力远不止web站点开发这个领域,例如,它可以从模板(template)产生SQL和PostScript、XML,它也可以被当 作一个独立工具来产生源代码和报告,或者作为其他系统的集成组件使用。Velocity也可以为Turbine web开发架构提供模板服务(template service)。Velocity+Turbine提供一个模板服务的方式允许一个web应用以一个真正的MVC模型进行开发。Velocity的Eclipse插件的Update地址是:http://propsorter.sourceforge.net/veloeclipseVelocity 的 JavaDoc: http://www.oschina.net/uploads/doc/velocity-1.5/index.html把页面做成模板生成,速度都很快的,很多大公司(taobao.com)都用这个框架,
解决方案二:
不一定是生成html,也可能是地址栏重写,urlrewrite,可以看下http://wenku.baidu.com/view/f0f89972f242336c1eb95ed7.html不过一般生成静态页面有两种方式,一种就是采用模板,例如freemaker或Velocity,另一种是Mapping方式生成静态页面,给你点代码看看freemaker生成静态页面/** * 生成静态页面主方法 * @param contextServletContext * @param data一个Map的数据结果集 * @param templatePathftl模版路径 * @param targetHtmlPath生成静态页面的路径 */static final String templatePath = "/WEB-INF/freemaker/"; //模板存放的路径//指定ServletContext生成静态页面public static void crateHTML(ServletContext context,Map data,String htmlPath,String filename,String ftlname,String bianma){Configuration freemarkerCfg = new Configuration();// 加载模版freemarkerCfg.setServletContextForTemplateLoading(context, "/");freemarkerCfg.setEncoding(Locale.getDefault(), "UTf-8");try {// 指定模版路径ftlname = templatePath+ftlname;Template template = freemarkerCfg.getTemplate(ftlname,"UTf-8");template.setEncoding("UTf-8");// 静态页面路径htmlPath = context.getRealPath(htmlPath)+"/"+filename;;File htmlFile = new File(htmlPath);Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), bianma)); // 处理模版template.process(data, out);out.flush();out.close();} catch (Exception e) {e.printStackTrace();}}//Mapping方式生成静态页面public static void createHTML4Mapping(HttpServletRequest request,HttpServletResponse response,String jsp_url,String html_url){FileOutputStream fos = null;try {ServletContext sc = request.getSession().getServletContext();RequestDispatcher rd = sc.getRequestDispatcher(jsp_url);final ByteArrayOutputStream os = new ByteArrayOutputStream();final ServletOutputStream stream = new ServletOutputStream(){public void write(byte[] data,int offset, int length){os.write(data,offset,length);}public void write(int b)throws IOException{os.write(b);}};final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));HttpServletResponse rep = new HttpServletResponseWrapper(response){public ServletOutputStream getOutputStream(){return stream;}public PrintWriter getWriter(){return pw;}};rd.include(request, rep);pw.flush();fos = new FileOutputStream(html_url);os.writeTo(fos);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally{try {fos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}
解决方案三:
.html也有可能是动态的。静态化有很多种实现方式。你可以基于模板,自己裸写一样可以实现,原理都差不多。比如一个新闻页面,其它内容来自于数据库,页头页尾等都比较固定,你可以在你的jsp或者ui servlet里头,将整个页面生成一个html文件,最终提供web访问。正如前边的回帖所言,有很多框架可以直接拿来用。不用自己再造轮子。
解决方案四:
地址是看不出静态的.url rewrite广泛使用....----静态化,核心是置标/模板技术.将特定的标记替换成具体的内容...了解一下一般的CMS系统,基本都有类似技术.
解决方案五:
使用FreemarketFreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成 HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。  FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写  FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序  虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据  FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件  FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境  FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库  最重要的是 FreeMarker是免费的

时间: 2024-10-16 08:32:50

生成静态页面的技术是如何实现的的相关文章

推荐阅读:php技术生成静态页面的实现

我们先回顾一些基本的概念. 一.PHP脚本与动态页面. PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合,也可以类,函数封装等形式,以模板的方式对用户请求进行处理.无论以何种方式,它的基本原理是这样的.由客户端提出请求,请求某一页面 -----> WEB服务器引入指定相应脚本进行处理 -----> 脚本被载入服务器 -----> 由服务器指定的PHP解析器对脚本进行解析形成HTML语言形式 ----> 将解析后的HTML语句以包的方式传回给浏览器.由此不难看出,

SQL Server静态页面导出技术1

server|静态|页面 本段文章节选自铁道出版社新出的<用BackOffice建立Intranet/Extranet应用>一书(现已在海淀图书城有售).本书详尽地讲述了如何使用微软BackOffice系列产品来组建Intranet/Extranet应用.通过它您将掌握NT的安装和设置.使用IIS建立Web站点.通过ILS建立网络会议系统.用Exchange建立企业的邮件和协作系统.用SQL Server建立Web数据库应用.用Proxy Server建立同Internet安全可靠的连接.用M

SQL Server静态页面导出技术2

server|静态|页面 本段文章节选自铁道出版社新出的<用BackOffice建立Intranet/Extranet应用>一书(现已在海淀图书城有售).本书详尽地讲述了如何使用微软BackOffice系列产品来组建Intranet/Extranet应用.通过它您将掌握NT的安装和设置.使用IIS建立Web站点.通过ILS建立网络会议系统.用Exchange建立企业的邮件和协作系统.用SQL Server建立Web数据库应用.用Proxy Server建立同Internet安全可靠的连接.用M

比较详细PHP生成静态页面教程_php技巧

一,PHP脚本与动态页面. PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合,也可以类,函数封装等形式,以模板的方式对用户请求进行处理.无论以何种方式,它的基本原理是这样的.由客户端提出请求,请求某一页面 -----> WEB服务器引入指定相应脚本进行处理 -----> 脚本被载入服务器 -----> 由服务器指定的PHP解析器对脚本进行解析形成HTML语言形式 ----> 将解析后的HTML语句以包的方式传回给浏览器.由此不难看出,在页面发送到浏览器后,PHP

网站生成静态页面,及网站数据采集的攻、防原理和策略_小偷/采集

发布时间:2005年11月27日 晚 文章作者:翟振凯 (小琦) 交流方式: 个人站:http://www.xiaoqi.net     技术站:http://www.iisvs.net 商业站:http://www.iisvs.com QQ:53353866 22336848 关于本文:         本着互联网共享主义精神,特写此文献给建站新手,授人以鱼,不如授人以渔,本文所讲的只是方法和原理,希 望大家看完此文,能够从中得到些帮助和启发.         本文从一个ASP程序员的角度用大

php 静态化页面 生成静态页面

前言: 目前网络上好多网站的新闻发布系统都采用了动态服务器技术生成静态HTML的做法,这样做的好处是:一是能减轻其服务器的负担,二是因为生成了HTML静态页面,所以其网站被搜索引擎搜索到的机率更大一些.笔者的网站曾经使用PHP这一动态技术来构建新闻发布系统,其原理也就是应用了PHP生成HTML静态页面的技术,相关平台是 Windows XP Sp2+php4.32+mysql,因此,在这里,想简单地谈一下这种做法的思路.这篇文章适合于对PHP+MYSQL数据库操作,SQL语句以及网页设计有点基础

谈PHP生成静态页面分析 模板+缓存+写文件_php技巧

一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权限限制等,但是,对应一些我们经常频频使用的文件,比方说,开发的新闻发布系统,我们不希望很多用户都读取数据库才显示结果,这样一方面消耗了服务器的资源,另一方面占去了浏览者大量可贵的响应时间,所有,有了"静态页面话"的做法,当前很多网站都采用这种技术,一般都是由管理后台控制,或者生成html直

asp.net生成静态页面怎么给静态页面的图片动态加水印

问题描述 asp.net生成静态页面怎么给静态页面的图片动态加水印 解决方案 解决方案二:通常你会有几个地方可以控制图片的加入动作比如上传图片那么加水印可以在这个时候进行对已有的图片可以进行批量处理加水印的方法ImagewaterMask=Image.FromFile("水印图片地址");Imageimg=Image.FromFile("需要加水印的图片地址");Graphicsg=Graphics.FromImage(img);g.DrawImage(waterM

PHP生成静态页面注意几点

一 : 引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权限限制等,但是,对应一些我们经常频频使用的文件,比方说,开发的新闻发布系统,我们不希望很多用户都读取数据库才显示结果,这样一方面消耗了服务器的资源,另一方面占去了浏览者大量可贵的响应时间,所有,有了"静态页面话"的做法,当前很多网站都采用这种技术,一般都是由管理后台控制,或者生成htm