程序可以从这里下载:http://download.csdn.net/detail/caoyuan10036/3975039
一、功能描述:
在我们浏览网站的时候,会看到很多频道,文章的头上会有一个RSS订阅的图标,点进去后会进入feed(供RSS阅读器订阅的一个地址)页面,然后把地址栏的地址复制下来,这就是我们要放入RSS阅读器订阅的feed,放入RSS阅读器后,变可以订阅此内容了。效果图有点烂,可功能都差不多实现了:
二、RSS阅读
阅读RSS主要用了ROME组件,导入jar包后就可以使用,很简单的,提供一个地址,便可以在jsp页面中显示出本地址所有文章,贴上Rome组件的RSS阅读jsp代码:
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.*"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ page import="db.Database" %>
Insert title here
<%
request.setCharacterEncoding("utf-8");
String xmlmsg = request.getParameter("xmlmsg");//得到传来的feed地址,通过表单传来就行
//----------------------------------这是我扩展的功能,可以去掉---------------------------------
//这里是我扩展的功能,首先查询磁条RSS的feed是否已经订阅过了,如果订阅过了则提示‘已订阅’
Number | Title | Time |
---|---|---|
<%=i+1%> | <%=entry.getTitle()%> | <%=entry.getPublishedDate()%> |
package com.dao;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.jdom.Attribute;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.Format;
import org.jdom.output.XMLOutputter;
import db.Database;
public class ProductRss {
public void cereateRss(String channel2) throws IOException, SQLException{
Document doc = new Document(); //创建空白文档
/*
* 创建PI并添加到文档
*/
// Map map = new HashMap();
// map.put("type","text/xsl");
// map.put("href","products.xsl");
// ProcessingInstruction pi = new ProcessingInstruction("xml-stylesheet",map);//处理指令
//将处理指令添加
// doc.addContent(pi);
/*
* 创建文档类型并添加到文档
*/
// DocType type = new DocType("productsDetails"); //文档类型
// type.setPublicID("public.dtd"); //设为 public
// //type.setSystemID("system.dtd"); //设为 system
// //添加文档类型
// doc.addContent(type);
Database db = new Database();//连接数据库
Connection conn = db.getconn();
Statement stmt = conn.createStatement();
String sql = "select * from article where channel=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1,channel2);
ResultSet rs = ps.executeQuery();
/**/
Element root = new Element("rss"); //创建一个元素
doc.setRootElement(root); //将该元素做为根元素
Attribute version = new Attribute("version","2.0"); //创建属性
root.setAttribute(version); //为product设置属性
/**/
Element channel = new Element("channel");
root.addContent(channel); //将product做为productsDetails的子元素
//为product创建子元素,并将其content分别设为100.00,red
channel.addContent(new Element("title").setText("文章列表"));
channel.addContent(new Element("link").setText("www.baidu.com"));
channel.addContent(new Element("description").setText("这是我的rss小例子,希望能成功"));
while(rs.next()){
Element item = new Element("item");
channel.addContent(item); //将product做为productsDetails的子元素
item.addContent(new Element("title").setText(rs.getString("title")));
item.addContent(new Element("link").setText("detail.jsp?id="+rs.getString("id")));
item.addContent(new Element("author").setText(rs.getString("author")));
item.addContent(new Element("description").setText(rs.getString("description")));
}
XMLOutputter outp = new XMLOutputter(Format.getPrettyFormat());
File file = new File("D:\\305\\c\\RomeRssReader\\WebContent\\data.xml");//生成的feed
OutputStream out = new FileOutputStream(file);
outp.output(doc, out); //输出XML文档
System.out.print("XML 文档生成完毕!");
out.close();
}
}
其实feed就是一个xml文件..里面有特定的标签的....我们生成feed就是用jdom去生成这个xml文件。
整个程序代码:在这里下载 http://download.csdn.net/detail/caoyuan10036/3975039