rome创建rss

[quote]
1.RSS标准

RSS标准比较混乱,主要有以下3个系列

RSS 0.9x / 2.0 : RSS技术诞生于1999年的网景公司(Netscape),其发布了一个0.9版本的规范。2001年,RSS技术标准的发展工作被Userland Software公司的戴夫 温那(Dave Winer)所接手。陆续发布了0.9x的系列版本。当W3C小组发布RSS 1.0后,Dave Winer不承认其有效性。并于2002年9月独自把RSS升级到了2.0版本(Really Simple Syndication),并交由哈佛大学Technology at Harvard Law进行维护。
RSS 1.0 : 在RSS发展过程中,为使RSS成为一个通用的规范,并进一步标准化。一个联合小组根据W3C新一代的Resource Description Framework (RDF) 对RSS进行了重新定义,发布了RSS 1.0版,并把RSS定义为“RDF Site Summary”。现在RSS 1.0版由W3C联合小组维护。
Atom : Atom是一个项目的名字,主要是开发一个新的博客摘要格式以解决目前RSS存在的问题(混乱的版本号,不是一个真正的开放标准,表示方法的不一致,定义贫乏等等)。
2.如何实现RSS

RSS标准虽然混乱,但是其本质都是XML文档。你可以只使用notepad, 按照某个RSS标准, 手写一个xml, 并提供给客户端。

现在也有许多开源项目来提供RSS的解决方案。

Rome https://rome.dev.java.net/

RSSLibJ http://enigmastation.com/rsslibj/

RSSLib4J http://devzone.stealthp.org/cms/index.php?page=RSSLib4J

使用这些解决方案可以更方便的处理RSS.

3.用 Rome 实现 RSS 服务

目前Rome最新版本为rome-0.9. 本例是在Struts的Action中实现的RSS服务.

新建一个RssAction

java 代码
import other classes...
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.io.SyndFeedOutput;

public class RssAction extends DispatchAction {

private static final String MIME_TYPE = "application/xml; charset=UTF-8";

// Rome中RSS的可选标准
// rss_0.90, rss_0.91, rss_0.92, rss_0.93, rss_0.94, rss_1.0, rss_2.0, atom_0.3
private static final String RSS_TYPE = "rss_2.0";

public ActionForward newsFeed(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
NewsFeedBA newsFeedBA = new NewsFeedBA();
newsFeedBA.doExecute();
outputRssFeed(response, newsFeedBA.getFeed());
return null;
}

public ActionForward blogFeed(ActionMapping mapping,
ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws Exception {
String uid = request.getParameter("userId");
BlogFeedBA blogFeedBA = new BlogFeedBA();
blogFeedBA.setUserId(uid);
blogFeedBA.doExecute();
outputRssFeed(response, blogFeedBA.getFeed());
return null;
}

//将SyndFeed写入HttpServletResponse
private boolean outputRssFeed(HttpServletResponse response, SyndFeed feed) {
boolean result = false;
feed.setFeedType(RSS_TYPE);
response.setContentType(MIME_TYPE);
SyndFeedOutput output = new SyndFeedOutput();
try {
output.output(feed, response.getWriter());
result = true;
} catch (IOException e) {
e.printStackTrace();
} catch (FeedException e) {
e.printStackTrace();
}
return result;
}
}

然后在业务逻辑中,查询数据库,用返回的数据组织相应的Feed.

java 代码
public SyndFeed createFeed(List news) {
SyndFeed feed = new SyndFeedImpl();

feed.setTitle("My RSS Service : news ");
feed.setLink("http://www.myHomePage.com");
feed.setDescription("My first RSS service .");

feed.setEntries(getEntries(news));
return feed;
}

private List getEntries(List news) {
List entries = new ArrayList();
SyndEntry entry;
SyndContent description;

for (NewsDTO dto : news) {
entry = new SyndEntryImpl();
entry.setTitle(dto.getTitle());
entry.setLink(dto.getLink());
entry.setPublishedDate(new Date());

description = new SyndContentImpl();
description.setType("text/html");
description.setValue(dto.getContent());

entry.setDescription(description);
entries.add(entry);
}
return entries;
}

在struts-config.xml中配置RssAction

xml 代码
<action path="/rss" type="com.web.action.RssAction"
parameter="method"
scope="request">
action>

启动Tomcat,并访问/rss.do?method=newsFeed 就可以得到新闻的RSS

访问/rss.do?method=blogFeed&userId=123 就可以得到123的blog的RSS了。

现在IE7和Opera都集成了RSS功能。

见:http://wangcheng.iteye.com/blog/53778
[/quote]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我! 毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip毕设新项目-基于Java开发的智慧养老院信息管理系统源码+数据库(含vue前端源码).zip
### 回答1: 可以使用以下 SQL 语句创建唯一约束并验证其是否生效: ALTER TABLE Rome ADD CONSTRAINT IX_Rname UNIQUE (Rname DESC); -- 验证约束是否生效 SELECT COUNT(*) FROM Rome GROUP BY Rname HAVING COUNT(*) > 1; 如果返回结果为 0,则表示约束生效,否则表示约束未生效。 ### 回答2: 要为数据表Rome创建按照Rname降序排列的唯一约束,可以使用ALTER TABLE语句来添加约束。具体的步骤如下: 1. 使用以下语句在Rome表中创建唯一约束: ALTER TABLE Rome ADD CONSTRAINT IX_Rname UNIQUE (Rname DESC); 2. 执行上述语句后,系统将会在Rome表中创建一个名为IX_Rname的唯一约束,该约束会根据Rname列的值进行降序排列。 3. 验证该约束是否生效,可以通过插入重复的Rname值来尝试违反唯一约束: INSERT INTO Rome (Rname) VALUES ('John'); INSERT INTO Rome (Rname) VALUES ('John'); 如果唯一约束生效,则第二条插入语句将会执行失败并抛出错误提示,提示该操作违反了唯一约束。 4. 另外,您还可以使用以下语句来查看Rome表的约束信息,以确保约束已经被正确添加: SHOW CONSTRAINTS FROM Rome; 通过执行以上步骤,您就可以成功创建按照Rname降序排列的唯一约束,并验证该约束是否生效。 ### 回答3: 要为数据表Rome创建按照Rname降序排列的唯一约束,我们可以使用以下的SQL语句: ALTER TABLE Rome ADD CONSTRAINT IX_Rname UNIQUE (Rname DESC); 这个语句会向Rome表添加一个新的唯一约束,限制了Rname这一列的值必须是唯一的,并且按照降序排列。 为了验证这个约束是否生效,我们可以插入一些具有重复Rname值的数据,然后检查是否会有报错信息。例如,我们可以插入以下的SQL语句: INSERT INTO Rome (Rname) VALUES ('Alex'); INSERT INTO Rome (Rname) VALUES ('John'); INSERT INTO Rome (Rname) VALUES ('Alex'); 如果唯一约束生效,执行最后一条插入语句时应该会出现一个报错信息,提示违反了唯一约束IX_Rname。这证明了这个约束已经成功应用在Rname列上。如果没有出现报错信息,那么可能代表约束没有生效或者已经被绕过。 因此,要验证一个约束是否生效,可以通过尝试插入测试数据并观察是否会出现违反约束的报错信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值