查找资料,用到了开源技术 rsslibj。
public class RssController { @Autowired Service service; static final String domain = "http://www.you.com"; static final String info = "/news/info/"; /** * 创建一个自定义的RSS的 * @return * @throws InstantiationException * @throws IllegalAccessException * @throws ClassNotFoundException */ @RequestMapping(value="") @ResponseBody public String writerRSS(HttpServletResponse response) throws InstantiationException, IllegalAccessException, ClassNotFoundException { Channel channel=new Channel(); channel.setDescription("网站站"); channel.setLink(domain); channel.setTitle("网站名称"); channel.setImage("http://www.you.com/images/logo.png", "LOGO Image", "网站名称"); channel.addItem(domain+"/theme/1", "专题1","专题1"); 此处即你需要在rss服务中的频道项目 List<News> newsList= service.findNewsList(); for (News news: newsList) { channel.addItem(domain+info+new.getId(), "新闻","新闻"); } response.setContentType("application/xml"); PrintWriter pw; try { pw = response.getWriter(); pw.print(channel.getFeed("rss")); pw.flush(); pw.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
至此 ,访问就可以访问该服务啦。
期间遇到了“java.lang.IllegalStateException: writer”异常,其实就是少了pw.flush();加上之后一切OK!