接手一个在appfuse框架下开发的多站点管理系统,现在内容客户必须要生成静态页面,我知道这是老生常谈的问题,但是,我想在java开源的模板引擎中,一定有办法直接利用模板引擎将数据结合页面模板生成静态页面,有没高手做过类似案例,可供借鉴!
网上大多是根据动态链接获取数据生成静态页面,个人认为不是最好的解决方案!
还有页面静态化需要注意哪些问题?希望有过经验的朋友给介绍下!
网上流传一种方案是:
利用freemaker生成静态页面
FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写
FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序
虽然FreeMarker具有一些编程的能力,但通常由Java程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据(如下图)
FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件
FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境
FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库
我们可以使用freemaker制作需要生成的静态页面样式。然后可利用动态绑定数据,将数据绑定到
一个simpleHash中后,使用template.process()生成一张静态页面。或者其他页面的。
然后写到文件系统中。利用这种机制我们就可以轻松的实现模板生成静态页面了。
public static String xmlGenerate(TableDecorator table)throws Exception{
StringWriter writer = new StringWriter();
FreemakerEngine engine = FreemakerEngine.getInstance();
freemarker.template.Template template = engine.getTemplate("hibernate.ftl");
SimpleHash model = new SimpleHash();
model.put("table", table);
template.process(model, writer);
ByteArrayOutputStream os = new ByteArrayOutputStream();
os.write(writer.getBuffer().toString().getBytes());
os.flush();
os.close();
return new String(os.toByteArray());
但是,spring框架自身的mvc,可否在此基础上获取流,做页面静态化呢?
欢迎大家讨论!
以下是我结合楼下的经验,思考并实现的方案,现简要总结如下:
楼上三位同志,说的都很好,给我很大启发,总结三位经验,俺这里两天思考并实现的解决方案如下:
1、考虑到java众多开源模板引擎的强大功能,绝对在项目中不可丢弃而自己来写一套类似的标签,有点浪费的感觉,而且也得不偿失,项目时间也不允许!
2、其实仔细分析web mvc框架,不难发现,其中的模板引擎大都是将视图层准备好的数据用模板引擎将数据展现出来,模板引擎自身不会告诉视图层我需要哪些数据来展现在页面上,
也就是说,模板标签中没有跟视图层交互的标签,告诉视图层我需要哪些数据,你准备好给我来展现。
3、我在此思路上,加上这样的自定义标签,写一个统一的接口程序,在视图层先解析这些标签,然后交由控制层,由控制层来根据这些标签准备好数据提供给视图层,视图层把数据
传给模板引擎,由模板引擎解析数据,完成页面数据展现,这样现有所有程序无需任何改动。
4、在开发自定义标签时,需要设计动态传参,让一个模板适应不同栏目的需要,那么栏目id就需要动态传入,而每个自定义标签跟一个类绑定,根据标签提供的参数获取数据,并按标签指定的方式返回数据;
5、如何实现网页静态,我是动态创建静态页,一篇文章在添加时并没有真正生成静态页面,只是内含一个script,调用公共生成静态页接口,我是通过楼上的所说的用filter实现这样的接口,截获流输出页面,大家都很熟悉的了,
如此这般,三下子就搞定了基本的难题,现在想想,这其中有几个好处是:
1、不需要动手写自己的标签,能很好的利用现有的模板引擎!
2、程序显示逻辑简单容易开发,俺不懂的也就一天搞定,如果是你俩小时恐怕就搞定了,时间用的少就是最大的优惠啦!
3、容易扩展,如果随着模块的增加,往页面上展示的数据的不同,可以多定义一个简单的标签并多写一个类去获取数据就可以了;
4、网站页面、生成静态页程序、动态显示接口和系统管理程序都可分布部署.
文笔不好,描述的也许不清楚,大体就这个意思吧!
欢迎讨论更好方案!
分享到:
相关推荐
标题所反映的知识点是:基于J2EE架构的分布式静态页面生成的分析与设计。这涉及到J2EE架构在分布式企业级应用系统中进行静态页面生成的方法和技术。J2EE架构是一种用于简化企业级解决方案开发、部署和管理的技术架构...
**企业解决方案**: J2EE被广泛应用于大型企业系统,如CRM(Customer Relationship Management)、ERP(Enterprise Resource Planning)、B2B(Business-to-Business)交易系统等。其强大的可扩展性和稳定性使其成为...
它可以缓存页面或静态内容,改善系统性能。 6. **页面布局**: - **SiteMesh**:用于网页布局和装饰,将页面内容和布局模板分离,使设计和维护更加容易。 在选择这些开源项目时,开发者应考虑项目的需求、团队...
J2EE的这些特性,不仅加速了市场新解决方案的发布,而且其组件化的解决方案摆脱了特定供应商产品和API的限制,提供了更高的灵活性和选择性。 #### 二、分布式多层应用程序模型 在J2EE的架构下,应用逻辑被分解并...
J2EE(Java 2 Enterprise Edition)是Java平台上的企业级应用解决方案,它包括了许多Java 2平台的优点,如跨平台兼容性、JDBC数据库访问、CORBA技术和安全模式。J2EE提供对EJB、Servlets API、JSP和XML等技术的全面...
**Java企业版(J2EE)技术概述** Java企业版(Java 2 Platform, ...其组件模型和规范化的API,为企业级软件开发提供了高效、稳定和安全的解决方案。学习J2EE不仅需要理论知识,更需要通过实践来加深理解和提升技能。
J2EE的核心目标是提供一套完整的解决方案来构建和部署可移植、健壮、可伸缩且安全的多层企业级应用程序。 ##### 1.2 J2EE四层模型 J2EE架构通常被划分为四个层次:客户层、表示层、业务逻辑层和数据访问层。 - **...
然而,随着微服务架构和云技术的兴起,J2EE的复杂性也受到挑战,许多现代企业转向了Spring框架和轻量级容器,如Tomcat,它们提供了更灵活、更轻便的解决方案。 总的来说,J2EE是企业级Java应用开发的重要基石,它...
JSP页面在服务器端运行,将动态数据嵌入到静态页面中,然后返回给客户端。JSP的核心概念包括指令、脚本元素、表达式和自定义标签,这些都是理解JSP编程的基础。 2. **Servlet**:Servlet是Java用于处理HTTP请求的...
J2EE(Java 2 Platform, Enterprise Edition)是Java平台上的企业级应用开发框架,它提供了一种跨平台、多层架构的解决方案,能够支持大型、分布式、高并发的Web应用程序,包括网上书店在内的各种电子商务系统。...
FusionCharts在服务器端导出图片的J2EE实践是将动态生成的图表转化为静态图片的过程,这对于满足某些特定应用场景非常有用。通过理解FusionCharts的工作原理和J2EE环境下的图片生成机制,开发者可以构建更高效、更...
在教务管理信息化方面,基于J2EE的系统可以提供高效、稳定且可扩展的解决方案。J2EE平台包含一系列服务、API和协议,这些能够支持事务处理、安全、资源管理、以及网络通信等功能,从而满足教务管理系统对数据一致性...
传统的客户端/服务器(C/S)两层结构主要用于通过静态页面在Internet上发布信息,而浏览器/服务器(B/S)三层结构则通过在服务器端生成动态页面来集成数据生成和数据表现,使得动态页面变得庞大且难以维护。...
- **定义**:J2EE 是一种基于 Java 2 平台来简化企业级解决方案的开发、部署和管理的架构。 - **基础**:J2EE 建立在 Java 2 标准版(J2SE)的基础上,继承了 J2SE 的优点,如“编写一次、随处运行”的特性、方便...
通过这种方式,开发者可以构建出可扩展、可维护的企业级解决方案,满足大规模、多用户环境的需求。 总结来说,J2EE架构是一个全面的框架,它包含了从静态网页到动态Web应用的演进,提供了MVC设计模式来组织应用,...
【酒店管理系统】是一种专为酒店运营设计的信息技术解决方案,它涵盖了酒店日常运营的各个环节,包括预订、入住、退房、客房管理、财务管理、员工管理等多个功能模块。在Java j2ee平台上开发的酒店管理系统,利用了...
Java Platform, Enterprise Edition(J2EE)是Java技术的企业版,提供了一整套的企业级应用程序开发解决方案。J2EE平台包括了多种技术规范和API,例如Servlet、JSP、EJB、JMS等,能够满足企业级应用程序的开发需求...
JSP页面可以包含静态HTML代码和动态Java代码。JSP技术的主要特点是: * 可以动态生成Web内容 * 可以与Servlet集成,实现复杂的Web应用程序 * 可以使用JavaBeans、EJB和其他Java技术 三、Servlet和JSP的结合 ...