`
jean7155
  • 浏览: 63099 次
  • 性别: 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
}

分享到:
评论

相关推荐

    springmvc 改造

    在“springmvc 改造”这个主题中,我们主要关注的是如何对现有的SpringMVC配置进行调整,以满足特定的需求或优化应用程序的行为。下面我们将详细探讨SpringMVC配置的几个关键方面: 1. **路径配置**: 在SpringMVC...

    利用springmvc编写的简单的用户管理模块

    在本项目中,我们利用SpringMVC来实现一个简单的用户管理模块,涵盖了用户的基本操作,如添加、删除、修改和查询。 【用户管理模块】 用户管理模块是许多系统的核心部分,它负责处理用户的注册、登录、信息更新和...

    SpringMVC的Restful风格Demo

    REST(Representational State Transfer)的核心理念是将网络资源作为服务的主体,通过统一的接口进行操作。主要由以下几个核心概念组成: 1. **资源(Resource)**:网络上的每一个实体都可以被看作一个资源,例如...

    SpringMVC PPT_springmvc_

    SpringMVC 提供了 MockMVC 工具,可以方便地对 Controller 进行单元测试,无需部署到服务器。 总结,SpringMVC 以其强大的功能和灵活性,成为了 Java Web 开发的主流框架之一。通过理解并熟练掌握上述知识点,...

    springMVC教案.rar

    SpringMVC是Spring框架的一个模块,专为构建Web应用程序提供模型-视图-控制器(MVC)架构。它是Java开发人员在构建Web应用时的...通过学习,你可以了解到如何利用SpringMVC的强大功能来构建高效、可维护的Web应用程序。

    springMVC资料

    在这个版本中,你可以学习到如何使用@RequestMapping、@Autowired等注解简化代码,以及如何利用SpringMVC提供的工具和库来实现更复杂的web功能。 总的来说,这份"springMVC资料"涵盖了SpringMVC的基础知识、高级...

    SpringMVC+ibatis整合

    - **事务管理**:SpringMVC和iBatis整合后,可以利用Spring的声明式事务管理,简化事务控制。 - **缓存支持**:iBatis支持二级缓存,结合Spring的缓存抽象,可以实现更高效的缓存策略。 - **AOP编程**:Spring...

    SpringMVC完整使用教程

    SpringMVC 是一款基于 Java 的轻量级 Web 开发框架,是 Spring 框架的重要组成部分,用于构建 Web 应用程序。...通过深入学习和实践,开发者可以更好地利用 SpringMVC 构建高效、健壮的 Web 应用。

    SpringMVC完整文档PDF

    这份文档可能从快速入门示例开始,引导读者理解基本概念,然后逐步深入,探讨更高级的话题,如拦截器、AOP(面向切面编程)在SpringMVC中的应用,以及如何集成WebSocket进行实时通信。此外,它可能还会讨论最佳实践...

    SpringMVC学习编程代码

    此外,SpringMVC支持数据绑定和验证,可以通过`@ModelAttribute`注解将请求参数绑定到Java对象,并利用`@Valid`和`Validator`接口进行数据验证。 对于异常处理,SpringMVC提供了`@ExceptionHandler`注解,可以用来...

    SpringMVC+Mysql实例详解

    SpringMVC是Spring框架的一部分,专门用于构建Web应用程序。...通过这个实例,你可以了解如何利用SpringMVC的注解驱动、依赖注入特性,以及如何与MySQL数据库无缝集成,为开发高效、健壮的Web应用奠定基础。

    springMVC拦截器项目

    SpringMVC 拦截器项目是一个典型的 Web 应用开发示例,它利用 SpringMVC 框架中的拦截器(Interceptor)机制来实现特定的功能,如权限控制、日志记录、性能统计等。SpringMVC 是 Spring 框架的一部分,专为构建基于 ...

    springMVC练手代码

    2. **配置文件**:SpringMVC的配置通常在XML文件(如`servlet-context.xml`)中进行,包括视图解析器、模型-视图映射、拦截器、以及bean的定义。这些配置会指导SpringMVC如何处理请求和响应。 3. **模型(Model)**:...

    SpringMVC+sqlitejdbc的jar集合

    SpringMVC中的Service层可以利用SQLiteJDBC进行数据操作,通过Repository接口封装数据访问逻辑,保持业务逻辑与数据访问的分离。 **集成步骤** 1. **添加依赖**:在项目的pom.xml文件中引入SpringMVC和SQLiteJDBC...

    SpringMVC5.0jar包集合

    SpringMVC是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。在本文中,我们将深入探讨SpringMVC 5.0...通过理解和掌握这些关键特性,你将能够更好地利用SpringMVC构建高质量的Web应用。

    SpringMVC+Hibernate+EXT

    EXTJS还提供了强大的数据包装和远程数据通信机制,如Ajax和Store,能够轻松与后端服务如SpringMVC+Hibernate进行交互。 【整合】 SpringMVC+Hibernate+EXT的整合是Web开发中的常见模式,用于构建高效、功能丰富的...

    springmvc实战项目sample

    SpringMVC支持使用注解进行开发,如`@Controller`、`@RequestMapping`、`@Service`、`@Autowired`等,简化了XML配置。 6. **异常处理** 可以通过`@ExceptionHandler`注解自定义全局异常处理,或者配置`...

    springmvc+mybatis+postgresql+maven整合

    在本项目中,我们主要探讨的是如何将SpringMVC、MyBatis、PostgreSQL数据库以及Maven构建工具进行有效的整合,以实现一个高效且模块化的Web应用开发环境。以下是关于这些技术及其整合的关键知识点的详细说明: **1....

    SpringMVCC.zip

    - SpringMVC支持模型属性的数据绑定,并可集成Hibernate Validator进行数据验证。 12. **上传文件**: - 使用MultipartFile接口处理文件上传,配置MultipartResolver来处理multipart请求。 13. **异常处理**: ...

Global site tag (gtag.js) - Google Analytics