spring mvc: 生成RSS源
准备:
从相同的maven
存储库页面下载 Rome 库及其依赖项rome-utils,jdom和slf4j。和所需的依赖关系
<!-- rss源依赖 --> <!-- https://mvnrepository.com/artifact/com.rometools/rome --> <dependency> <groupId>com.rometools</groupId> <artifactId>rome</artifactId> <version>1.8.0</version> </dependency> <!-- https://mvnrepository.com/artifact/com.rometools/rome-utils --> <dependency> <groupId>com.rometools</groupId> <artifactId>rome-utils</artifactId> <version>1.8.0</version> </dependency> <!-- https://mvnrepository.com/artifact/org.jdom/jdom --> <dependency> <groupId>org.jdom</groupId> <artifactId>jdom</artifactId> <version>2.0.2</version> </dependency> <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.7</version> </dependency>
访问地址:
http://localhost:8080/gugua3/rss/getrss
项目: gugua3
包:springweb
配置文件:web.xml, applicationContext.xml, springweb-servlet.xml
web.xml
<web-app> <display-name>Archetype Created Web Application</display-name> <!--配置文件路径--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <!-- 字符过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- 监听转发 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>springweb</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springweb</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
applicationContext.xml
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 默认:注解映射支持 --> <mvc:annotation-driven/> <!-- 静态资源配置 --> <mvc:resources location="/pages/**" mapping="/pages/"/> <!-- 自动扫描包名,controller --> <context:component-scan base-package="springweb"/> </beans>
springweb-servlet.xml
将RSSFeedViewer.java作为视图文件
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/> <bean id="rssViewer" class="springweb.RSSFeedViewer"/> </beans>
RSSMessage.java
package springweb; import java.util.Date; public class RSSMessage { String title; String url; String summary; Date createDate; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getSummary() { return summary; } public void setSummary(String summary) { this.summary = summary; } public Date getCreateDate() { return createDate; } public void setCreateDate(Date createDate) { this.createDate = createDate; } }
//视图模板(相当于jsp)
RSSFeedViewer.java
获取RSSController传过来的值:
List<RSSMessage> listContent = (List<RSSMessage>) model.
get
(
"feedContent"
);
package springweb; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.view.feed.AbstractRssFeedView; import com.rometools.rome.feed.rss.Channel; import com.rometools.rome.feed.rss.Content; import com.rometools.rome.feed.rss.Item; public class RSSFeedViewer extends AbstractRssFeedView { //xml说明 protected void buildFeedMetadata(Map<String, Object> model, Channel feed, HttpServletRequest request) { feed.setTitle("YiibaiPoint Dot com"); feed.setDescription("java Yiibai and Examples"); feed.setLink("http://www.yiibai.com"); super.buildFeedMetadata(model, feed, request); } @Override protected List<Item> buildFeedItems(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { // TODO Auto-generated method stub List<RSSMessage> listContent = (List<RSSMessage>) model.get("feedContent"); List<Item> items = new ArrayList<Item>(listContent.size()); for(RSSMessage tempContent: listContent) { Item item = new Item(); Content content = new Content(); content.setValue(tempContent.getSummary()); item.setContent(content); item.setTitle(tempContent.getTitle()); item.setLink(tempContent.getUrl()); item.setPubDate(tempContent.getCreateDate()); items.add(item); } return items; } }
RSSController.java
package springweb; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class RSSController { @RequestMapping(value="/rss/getrss", method=RequestMethod.GET) public ModelAndView getFeedInRss() { List<RSSMessage> items = new ArrayList<RSSMessage>(); RSSMessage content = new RSSMessage(); content.setTitle("spring教程"); content.setUrl("http://www.baidu.com"); content.setSummary("你好教程教程....."); content.setCreateDate(new Date()); items.add(content); RSSMessage content2 = new RSSMessage(); content2.setTitle("spring mvc教程"); content2.setUrl("http://www.sina.com.cn"); content2.setSummary("spring mvc教程教程...."); content2.setCreateDate(new Date()); items.add(content2); ModelAndView mv = new ModelAndView(); mv.setViewName("rssViewer"); mv.addObject("feedContent", items); return mv; } }