Rss,Atom,基本上是Web2.0的基本特征,今天终于有时间决定实现一下。对于动态的Rss,Atom其实就是选取最新的内容,迭迨一下生成一个固定格式的xml文件就可以了。其实也很简单。
我用webwork2,用freemarker做模版,在网上找了一个标准的Rss2.0格式就生成我的模版文件rss.ftl
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[我的小站]]></title>
<link>http://leaf.jdk.cn/</link>
<description><![CDATA[泡出好心情,泡出好技术]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2006 PaoPao v4.0]]></copyright>
<webMaster><![CDATA[rory.cn@gmail.com (Rory Ye)]]></webMaster>
<generator>PaoPao v4.0</generator>
<image>
<title>我的小站</title>
<url>http://leaf.jdk.cn/logo.gif</url>
<link>http://leaf.jdk.cn</link>
<description>莫多泡泡2006</description>
</image>
<#list blogs as blog>
<item>
<link>http://leaf.jdk.cn/entry.action?entryId=${blog.id}</link>
<title><![CDATA[${blog.title}]]></title>
<author>${blog.authorMail}(${blog.author})</author>
<category><![CDATA[ ${blog.categories} ]]></category>
<pubDate>${blog.pubDate}</pubDate>
<guid>http://leaf.jdk.cn/entry.action?id=${blog.id}</guid>
<description><![CDATA[${blog.content}]]></description>
</item>
</#list>
</channel>
</rss> 我在rss.action里面去取blogs就可以了。
public String execute() throws Exception {
PaginationSupport ps = blogManager.getBlogsByPage(0);
blogs = new ArrayList();
for(Iterator ite = ps.getItems().iterator(); ite.hasNext();){
Blog blog = (Blog)ite.next();
WrapRssBlog wrapBlog = new WrapRssBlog();
wrapBlog.setId(blog.getId());
wrapBlog.setAuthor(blog.getAuthor().getNickname());
wrapBlog.setAuthorMail(blog.getAuthor().getMail());
wrapBlog.setTitle(blog.getTitle());
wrapBlog.setContent(StringUtil.extractText(blog.getContent()));
wrapBlog.setPubDate(DateUtil.formatRssDate(blog.getPostTime()));
StringBuffer sb = new StringBuffer();
for(Iterator ite2 = blog.getCategories().iterator(); ite2.hasNext();){
Category cate = (Category) ite2.next();
sb.append(" ")
.append(cate.getName());
}
wrapBlog.setCategories(sb.toString());
blogs.add(wrapBlog);
}
return super.execute();
}
这里把blog包装了一下,主要是处理了一下日期,内容,还有把分类拼成字符串。关于日期的处理,参考了飞云小侠写的rss日期的研究。实现代码如下。
public static String formatRssDate(Date date){
SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z",Locale.US);
//TODO TimeZone
SimpleTimeZone zone = new SimpleTimeZone(8,"GMT");
sdf.setTimeZone(zone);
return sdf.format(date);
}
这样就得到了这样的日期
Thu, 6 Apr 2006 16:01:36 GMT
做好了这些,配置一下action
<action name="rss" class="cn.jdk.leaf.action.RssAction">
<result name="success" type="freemarker">/WEB-INF/pages/rss.ftl</result>
</action>
不过像这样配置的话,你访问
http://xxx.xxx.com/rss.action看到的不是一个xml
因为返回结果的contentType是text/html.而不是xml,这样是不行的。看了一下webwork源码。原来可以这样简单的解决。改成这样配置就可以了。
<action name="rss" class="cn.jdk.leaf.action.RssAction">
<result name="success" type="freemarker">
<param name="location">/WEB-INF/pages/rss.ftl</param>
<param name="contentType">application/xml</param>
</result>
</action>
简单吧。其实你还可以把这个contentType改成其他类型的。比如excle的。这样用户执行就可以得到一个xls文件。哈哈。
分享到:
相关推荐
本示例中,我们探讨的是如何将Spring、Hibernate、WebWork和FreeMarker这四个组件整合到一起,实现一个强大的后端服务架构。 首先,`web.xml`是部署描述符文件,它是Java EE Web应用程序的核心配置文件。在这里,...
本源码实例只供学习。。 请一并下载webwork+spring+hibernate+freemarker (A)demo_lib 配合才能使用(此为项目的lib包。。) 请打开mark.txt参考操作
此外,它还支持多种结果类型,包括JSP、FreeMarker模板等,使得视图层的实现更加灵活。 **Hibernate** 是一个对象关系映射(ORM)框架,它简化了数据库操作,让开发者可以使用面向对象的方式来处理数据库事务。...
综上所述,"webwork+spring+hibernate+freemarker"的组合提供了一个强大的Java Web开发环境,能够方便地处理业务逻辑、数据库交互和视图展示。对于学习或实践Java Web开发的人员来说,理解和掌握这四个框架的协同...
webwork+Spring+ibatis 此为webwork+Spring+ibatis+freemarker 源码实例 因为包大,只好分开。。请一并下载webwork+Spring+ibatis_lib放入些实例中,,才能运行! 解压后,请参考mark.txt文件操作,即可!
"webwork+spring+ibatis" 的实例通常会展示如何将这三个框架集成到一个完整的Web项目中。这个实例可能包含以下部分: 1. **环境配置**:安装和配置Java开发环境,如JDK,以及相关的开发工具,如IDEA或Eclipse。 2. ...
在提供的文档“webwork+spring+hibernate架构.doc”中,可能详细阐述了这三者如何协同工作,包括配置文件设置、依赖注入的使用、事务管理策略以及具体实例的开发步骤。而“webwork.doc”则可能专门介绍了WebWork框架...
个关于freemarker+webwork+spring+ibatis的demo文档
在Webwork+Spring+Hibernate集成中,Spring通常作为整体架构的胶水,负责各组件的连接和协调。它可以管理Webwork的Action,通过依赖注入提供所需的Service和DAO。同时,Spring可以配置Hibernate SessionFactory,...
### Spring+WebWork+iBatis 组合实例详解 #### 一、概述 在Java Web开发领域,Spring、WebWork与iBatis是三个非常重要的框架。本篇将结合具体的配置文件来详细介绍这三个框架是如何协同工作的,以及它们各自在项目...
在IT行业中,Web开发是一个广泛且重要的领域,而...综上所述,"webwork+spring+hibernate"整合提供了强大的Web应用开发能力,尤其在处理表单的增删改查方面,通过这三个框架的协作,可以高效、灵活地实现业务逻辑。
【标题】:“WebWork+Spring+Hibernate网络购物系统”是一个基于特定技术栈的电商项目实现。这个系统利用了WebWork、Spring和Hibernate这三个关键的技术框架,构建了一个完整的、功能丰富的在线购物平台。WebWork...
WebWork与FreeMarker整合开发是Java Web开发中的一个重要实践,这两种技术结合可以提供高效且灵活的MVC(Model-View-Controller)框架解决方案。WebWork是一个轻量级的Web应用程序框架,它处理业务逻辑和控制流程,...
【WebWork+Spring+Hibernate整合开发】是一种常见的Java Web应用程序架构模式,用于构建高效、可扩展的业务系统。WebWork是Action-based MVC框架,Spring是一个全面的企业级应用框架,而Hibernate则是流行的对象关系...
WebWork+Spring+Hibernate整合
### 如何实现WebWork+Spring+Hibernate框架结合 随着企业级应用需求的不断增加和技术的不断发展,集成多种技术栈成为一种趋势。WebWork+Spring+Hibernate是早期比较流行的一种技术组合,它们各自解决的问题域不同,...
WebWork+Spring+Hibernate整合开发网络书城是一个典型的Java Web应用程序开发框架的集成,这三种技术分别承担了不同的职责,共同构建了一个高效、灵活的后台系统。本资源提供了一个完整的网络书城项目的第一讲,旨在...
webwork+spring+hibernate整合开发网络书城 第5讲
WebWork+Spring+Hibernate整合开发