Cosmos框架是一个由国内开发人员开发的一款J2EE中间层框架,框架的主页在:
http://code.google.com/p/cosmos4j/
在1.0.3中,增加了一个将动态页面静态化的工具过滤器,下面把这个过滤器的使用简单介绍一下:
刚刚讨论了很多关于页面静态化的帖子,在这里把Cosmos中关于页面静态化的解决方案贴出来,应该说这个方案能基本上解决上面帖子讨论的所有问题,包括分页。
第一步、在开发中,一定要将所有链接转化成静态链接,即:*****.html的格式;
第二部、部署Cosmos中所附带的静态化的过滤器,部署方法如下:
<filter>
<display-name>static</display-name>
<filter-name>static</filter-name>
<filter-class>com.microbrain.cosmos.web.filters.StaticEnableFilter</filter-class>
<init-param>
<param-name>relative</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>root</param-name>
<param-value>E:/Web/cosmos/</param-value>
</init-param>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>static</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
这个过滤器包括三个参数,分别是relative、root以及encoding,relative是指产生的静态文件是否就在应用程序的相对目录里,如果是相对目录,则root参数则可以使用相对路径,root参数是指产生的静态文件所放置的根目录,而encoding是指产生的HTML文件的编码。
第三步、配置Apache,使其能够达到以下目标:检查静态文件是否存在,存在则给用户返回静态文件,如果不存在,则重写URL,导向用户到动态页面,并在动态页面中加入一个参数cosmosStaticFile=/index.html,这个参数的存在可以触发上面配置的过滤器,使该过滤器能够将输出的响应页面保存到root参数配置的根目录下的文件/index.html中,根据cosmosStaticFile值的不同,可以保存不同的静态页面,下面是一个URL重写的样例配置:
RewriteEngine On
RewriteLog logs/cosmos-rewrite.log
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} !-f
RewriteRule ^/develop/([^-]+)-local-commands.html$ /dev/domainLocalCommands?forward=development.localCommands&domain=$1&cosmosStaticFile=/develop/$1-local-commands.html [PT,QSA,L]
上面的配置中RewriteCond来判断当前访问的静态页面是否存在,不存在则执行下面的URL重写规则,在重写规则中除了普通的动态页面参数之外,增加了一个参数为cosmosStaticFile=/develop/$1-local-commands.html,这个参数将会触发上面的过滤器,将这个URL的响应写到/develop/$1-local-commands.html文件中去。
最后,通过上述步骤,已经基本上实现了动态页面自动静态化的过程了,现在唯一需要开发人员在开发中注意的是,如果一旦发布新的帖子,或者内容,需要通过程序去清理上面配置目录里的相关静态页面,从而在下次访问的时候,能重新产生该页面。
其实这个做法,在PHP开发人员中,似乎知道的比较多,Java这么做的人并不多,但实际上,利用Java的过滤器,比起PHP来说,方便太多了,而且,可以能达到良好的扩展性和低耦合度。
分享到:
相关推荐
Struts-menu是一个在Java Web开发中用于生成动态菜单的开源组件,主要应用于基于Struts框架的应用程序。这个组件能够帮助开发者从XML配置文件中提取数据,生成用户界面的菜单结构,使得应用程序的导航部分更加灵活和...
2. Apache:另一个常见的Web服务器,Apache以其丰富的模块化结构著称,可以满足多种需求。与Nginx结合使用时,可以将Apache作为动态内容处理器,Nginx处理静态内容和反向代理。 二、应用服务器 1. Tomcat:对于...
系统总体框架设计以开放、标准化、模块化、易用性和性能优化为核心,遵循“一个数据中心、一个基础平台、一套标准体系,多个业务应用”的原则。系统从下至上分为五个层次:标准和规范支撑体系、网络基础设施层、数据...
1. Selenium:一个用于Web应用程序的自动化测试工具,支持多种浏览器和编程语言,如Java、Python、C#等。 2. Appium:针对移动应用的自动化测试框架,支持iOS和Android平台,同样支持多种编程语言。 3. JMeter:...
【标题】"java+Web审批流程.rar"是一个包含基于Java...对于学习Java Web开发和了解审批流程自动化的人来说,这是一个很好的实践案例。然而,由于部署需要一定的技术背景,初学者可能需要花费更多的时间去理解和实践。
Java编程事项是一个涵盖广泛的主题,它包含了众多关于Java语言编程的最佳实践、常见陷阱以及高效编程技巧。这篇由多个来源整理转贴的资料,以.htm格式呈现,旨在帮助开发者提升编程技能,避免常见错误,理解Java的...
1. **抽象**:抽象是面向对象编程的一个关键概念,它关注于事物的核心特征,忽略不相关的细节。在Java中,抽象可以通过抽象类和接口来实现,使开发者能够定义类的骨架而不必提供具体实现,从而促进代码的复用和模块...
- 自定义一个类,实现`INotifyPropertyChanged`接口,以通知UI当数据源属性变化时。 - 在XAML中声明自定义类的对象,并将其作为静态资源。 - 控件可以通过`{StaticResource}`标记引用这个资源,并绑定到其属性。 ...
Java 基础知识及面试题 Java 是一门易于编程的跨平台编程语言,同时又是一个开发、应用、执行和部署的平台。Java 的主要特性包括平台...数组是一个指向数组的引用对象,集合框架包括 Iterator 也是一个迭代器接口。
- 每个可执行的Java程序都应包含一个`main`方法作为入口点。 - 避免删除源代码中的`main`方法,即使在调试过程中也不应该移除,因为这有助于保持代码的完整性。 #### 三、资源管理与异常处理 **3.1 资源管理** - ...
在这个特定的场景下,"不明飞行物:互联网转载"可能是指一个关于JavaScript技术的项目或讨论,因为标签明确指出了“JavaScript”。 JavaScript,作为互联网开发中的核心语言,它的应用无处不在,从网页交互到服务器...
【C#仪表画法】是关于使用C#编程...这个教程提供了一个基础的实现框架,开发者可以根据实际情况进行扩展和修改,以适应不同的应用场景。通过学习和实践这部分内容,开发者可以提升在C#中进行图形界面设计和定制的能力。
的被使用,被调用,而是深刻的介入到一个领域中去,J2EE 等框架软件设计的目的是将一个领域中不变的东西先定义好,比如 整体结构和一些主要职责(如数据库操作 事务跟踪 安全等),剩余的就是变化的东西,针对这个领域...
香香企业文章管理系统是全站采用主流DIV CSS框架布局,功能强大,操作人性化,有五种不同模式,可以适用于广泛的新闻发布型网站,让不懂代码但又想建立自己网站的朋友,通过后台简单的配置,就能拥有一个个性化的...
八、静态化 1、支持同时存在动态和静态的页面,自由切换; 2、支持伪静态 3、支持纯静态,多种方式批量生成静态内容页(◆商业版) 4、支持设置是否启用首页静态页,无需在空间后台修改默认页设置,方便操作; ...