📄 rss.java
字号:
package com.laoer.bbscs.web.action;
import java.net.*;
import java.util.*;
import javax.servlet.http.*;
import org.apache.commons.logging.*;
import org.apache.struts.action.*;
import org.jdom.*;
import org.jdom.output.*;
import com.laoer.bbscs.bean.*;
import com.laoer.bbscs.comm.*;
import com.laoer.bbscs.service.*;
import com.laoer.bbscs.service.config.*;
import com.laoer.bbscs.web.form.*;
import com.sun.syndication.feed.synd.*;
import com.sun.syndication.io.*;
import com.laoer.bbscs.service.web.Pages;
import com.laoer.bbscs.service.web.PageList;
public class Rss
extends BaseAction {
private static final Log logger = LogFactory.getLog(Rss.class);
private ForumService forumService;
private SysConfig sysConfig;
private BoardService boardService;
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) {
ForumBaseForm forumBaseForm = (ForumBaseForm) form;
SyndFeed feed = new SyndFeedImpl();
feed.setFeedType("rss_2.0");
String postLink = "";
if (forumBaseForm.getBid() == 0) {
feed.setTitle(this.getSysConfig().getForumName());
feed.setLink(this.getSysConfig().getForumUrl());
feed.setDescription(this.getSysConfig().getWebName() + " - " + this.getSysConfig().getForumName());
List entries = new ArrayList();
SyndEntry entry;
SyndContent description;
List newfs = this.getForumService().findForumsAllNew(50);
for (int i = 0; i < newfs.size(); i++) {
Forum f = (Forum) newfs.get(i);
try {
postLink = BBSCSUtil.absoluteActionURL(request,
"/main.bbscs?action=read&bid=" + f.getBoardID() + "&postID=" +
f.getMainID()).toString();
}
catch (MalformedURLException ex) {
postLink = "";
}
entry = new SyndEntryImpl();
entry.setTitle(f.getTitle());
entry.setLink(postLink);
description = new SyndContentImpl();
if (f.getEditType() == 0) {
description.setType("text/plain");
}
else {
description.setType("text/html");
}
description.setValue(BBSCSUtil.getSpeShortString(f.getDetail(), 400, ""));
entry.setDescription(description);
entries.add(entry);
}
feed.setEntries(entries);
try {
SyndFeedOutput output = new SyndFeedOutput();
//String feedStr = output.outputString(feed);
Document messagesDocument = output.outputJDom(feed);
Format format = Format.getPrettyFormat();
format.setOmitDeclaration(true);
XMLOutputter xmlo = new XMLOutputter(format);
request.setAttribute("xmlo", xmlo);
request.setAttribute("messagesDocument", messagesDocument);
return mapping.findForward(this.FORWARD_AJAX);
}
catch (Exception ex1) {
logger.error(ex1);
}
}
else {
if (forumBaseForm.getPage() == 0) {
forumBaseForm.setPage(1);
}
long bid = forumBaseForm.getBid();
Board board = this.getBoardService().getBoardByID(bid);
if (board != null) {
if (board.getBoardType() == 2 || board.getBoardType() == 3) {
String forumLink = "";
try {
forumLink = BBSCSUtil.absoluteActionURL(request, "/forum.bbscs?action=index&bid=" + bid).toString();
}
catch (MalformedURLException ex2) {
forumLink = "";
}
feed.setTitle(this.getSysConfig().getForumName() + " - " + board.getBoardName());
feed.setLink(forumLink);
feed.setDescription(this.getSysConfig().getWebName() + " - " + this.getSysConfig().getForumName() +
" - " + board.getBoardName());
List entries = new ArrayList();
SyndEntry entry;
SyndContent description;
Pages pages = new Pages();
pages.setPage(forumBaseForm.getPage());
pages.setPerPageNum(40);
pages.setFileName("");
PageList pl = this.getForumService().findForumsMainWWW(bid, pages);
List flist = pl.getObjectList();
for (int i = 0; i < flist.size(); i++) {
Forum f = (Forum) flist.get(i);
try {
postLink = BBSCSUtil.absoluteActionURL(request,
"/main.bbscs?action=read&bid=" + f.getBoardID() + "&postID=" +
f.getMainID()).toString();
}
catch (MalformedURLException ex) {
postLink = "";
}
entry = new SyndEntryImpl();
entry.setTitle(f.getTitle());
entry.setLink(postLink);
description = new SyndContentImpl();
if (f.getEditType() == 0) {
description.setType("text/plain");
}
else {
description.setType("text/html");
}
description.setValue(BBSCSUtil.getSpeShortString(f.getDetail(), 400, ""));
entry.setDescription(description);
entries.add(entry);
}
feed.setEntries(entries);
try {
SyndFeedOutput output = new SyndFeedOutput();
//String feedStr = output.outputString(feed);
Document messagesDocument = output.outputJDom(feed);
Format format = Format.getPrettyFormat();
format.setOmitDeclaration(true);
XMLOutputter xmlo = new XMLOutputter(format);
request.setAttribute("xmlo", xmlo);
request.setAttribute("messagesDocument", messagesDocument);
return mapping.findForward(this.FORWARD_AJAX);
}
catch (Exception ex1) {
logger.error(ex1);
}
}
}
}
return mapping.findForward(this.FORWARD_ERROR);
}
public ForumService getForumService() {
return forumService;
}
public SysConfig getSysConfig() {
return sysConfig;
}
public BoardService getBoardService() {
return boardService;
}
public void setForumService(ForumService forumService) {
this.forumService = forumService;
}
public void setSysConfig(SysConfig sysConfig) {
this.sysConfig = sysConfig;
}
public void setBoardService(BoardService boardService) {
this.boardService = boardService;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -