`
jean7155
  • 浏览: 61518 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

利用SpringMVC进行RSS发布

web 
阅读更多
1. maven的pom.xml的配置
	<dependency>
  	    <groupId>org.springframework</groupId>
  	    <artifactId>spring-core</artifactId>
  	    <version>${org.springframework.version}</version>
  	</dependency>
  	<dependency>
  	    <groupId>org.springframework</groupId>
  	    <artifactId>spring-context</artifactId>
  	    <version>${org.springframework.version}</version>
  	</dependency>
  	<dependency>
  	    <groupId>org.springframework</groupId>
  	    <artifactId>spring-context-support</artifactId>
  	    <version>${org.springframework.version}</version>
  	</dependency>
  	<dependency>
  	    <groupId>org.springframework</groupId>
  	    <artifactId>spring-web</artifactId>
  	    <version>${org.springframework.version}</version>
  	</dependency>
  	<dependency>
  	    <groupId>org.springframework</groupId>
  	    <artifactId>spring-webmvc</artifactId>
  	    <version>${org.springframework.version}</version>
  	</dependency>
  	<dependency>
  	    <groupId>javax.servlet</groupId>
  	    <artifactId>servlet-api</artifactId>
  	    <version>2.5</version>
  	    <scope>provided</scope>
  	</dependency>
  	<!-- rss -->
  	<dependency>
		<groupId>net.java.dev.rome</groupId>
		<artifactId>rome</artifactId>
		<version>1.0.0</version>
	</dependency>



2. web.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>igrp</display-name>
  
  <!-- spring context loader config -->
  
  
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  
  <servlet>
		<servlet-name>igrp</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<servlet-mapping>
		<servlet-name>igrp</servlet-name>
		<url-pattern>/</url-pattern>
		<url-pattern>/m/*</url-pattern> // 用于MOBILE的访问
    	<url-pattern>/t/*</url-pattern>         // 用于TABLET的访问
	</servlet-mapping>
	
	<servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.js</url-pattern>
  </servlet-mapping>
  
  <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.css</url-pattern>
  </servlet-mapping>
  
  <servlet-mapping>
     <servlet-name>default</servlet-name>
     <url-pattern>*.png</url-pattern>
  </servlet-mapping>
	
        // RSS的配置主要在igrp-servlet.xml中

	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/igrp-servlet.xml,/WEB-INF/applicationContext*.xml</param-value>
	</context-param>
  
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>


3. xxx-servlet.xml的配置
<!-- 激活@Controller模式 -->
     <context:annotation-config />
     
     <!-- 对包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 需要更改 -->
     <context:component-scan base-package="com.igrp.web.controller" />
     
     <!-- mobile mvc config -->
      
     <mvc:annotation-driven>
        <mvc:argument-resolvers>
            <bean class="org.springframework.mobile.device.site.SitePreferenceWebArgumentResolver" />           
            <bean class="org.springframework.mobile.device.DeviceWebArgumentResolver" />
        </mvc:argument-resolvers>
    </mvc:annotation-driven>
      
    <mvc:interceptors>
        <!-- Resolve the device which has generated the request -->
        <bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" />
     
        <!-- User's site preference -->
        <bean class="org.springframework.mobile.device.site.SitePreferenceHandlerInterceptor" />
     
        <!-- Redirects users to the device specific site -->
        <bean class="org.springframework.mobile.device.switcher.SiteSwitcherHandlerInterceptor" factory-method="urlPath">
            <constructor-arg value="/m" />
            <constructor-arg value="/t" />
            <constructor-arg value="/igrp" />
        </bean>
    </mvc:interceptors>
     
    <!-- Device aware view resolving -->
    <bean id="liteDeviceDelegatingViewResolver" class="org.springframework.mobile.device.view.LiteDeviceDelegatingViewResolver">
        <constructor-arg>
            <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                <property name="prefix" value="/jsp/" />
                <property name="suffix" value=".jsp" />
            </bean>
        </constructor-arg>
     
        <property name="mobilePrefix" value="m/" />
        <property name="tabletPrefix" value="t/" />
        <property name="enableFallback" value="true" />
    </bean>
    
    <!--  rss configuration -->

    <bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
		<property name="order" value="1" />
		<property name="mediaTypes">
			<map>
				<entry key="rss" value="application/rss+xml" />
			</map>
		</property>

		<property name="defaultViews">
			<list>
				<bean class="com.igrp.rss.CustomRssViewer" />
			</list>
		</property>
		<property name="ignoreAcceptHeader" value="true" />
	</bean>


4. controller
@Controller
public class RSSFeedController extends GenericController {
	
	@RequestMapping(value="/rssfeed", method = RequestMethod.GET)
	public ModelAndView getFeedInRss() {
		List<RSSFeed> items = new ArrayList<RSSFeed>();
		
		RSSFeed feed1 = new RSSFeed();
		feed1.setTitle("Spring tutorial1");
		feed1.setUrl("http://www.mkyong.com/spring-mvc/tutorial-1");
		feed1.setSummary("Tutorial 1 summary ...");
		feed1.setCreateDate(new Date());
		items.add(feed1);
		
		RSSFeed feed2  = new RSSFeed();
		feed2.setTitle("Spring MVC Tutorial 2");
		feed2.setUrl("http://www.mkyong.com/spring-mvc/tutorial-2");
		feed2.setSummary("Tutorial 2 summary ...");
		feed2.setCreateDate(new Date());
		items.add(feed2);
		
		ModelAndView mav = new ModelAndView();
		mav.setViewName("rssViewer");
		mav.addObject("feedContent", items);
		
		return mav;

		
	}

}



5. RSS的类:com.igrp.rss.CustomRSSViewer
public class CustomRssViewer extends AbstractRssFeedView {

	@Override
	protected List<Item> buildFeedItems(Map<String, Object> model,
			HttpServletRequest request, HttpServletResponse response) throws Exception {

		@SuppressWarnings("unchecked")
		List<RSSFeed> listContent = (List<RSSFeed>) model.get("feedContent");
		List<Item> items = new ArrayList<Item>(listContent.size());
		
		for(RSSFeed 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;
	}

	@Override
	protected void buildFeedMetadata(Map<String, Object> model, Channel feed,
			HttpServletRequest request) {

		feed.setTitle("Mkyong Dot Com");
		feed.setDescription("Java Tutorials and Examples");
		feed.setLink("http://www.mkyong.com");
		
		super.buildFeedMetadata(model, feed, request);
	}
	
	

}

public class RSSFeed {
	
	private String title;
	private String url;
	private String summary;
	private Date createDate;
       
        // setter and getter
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics