@RestController实现spring自己风格的rest的webservice(不用jax-rs包)

来源:互联网 发布:上海最专业的seo公司 编辑:程序博客网 时间:2024/06/03 15:34
package com.jimmy.mywebservice.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.bind.annotation.RestController;

import com.jimmy.mywebservice.bean.User;

@RestController
public class StuRestController {

@Autowired User userDetails;  
    @RequestMapping(value="/springcontent",  
            method=RequestMethod.GET,produces={"application/xml", "application/json"})  
    @ResponseStatus(HttpStatus.OK)  
    public User getUser() {  
    User userDetails = new User();  
        userDetails.setUserName("Krishna");  
        userDetails.setEmailId("krishna@gmail.com"); 
        System.out.println("test ");
        return userDetails;  
    }  
  
    @RequestMapping(value="/springcontent.htm", method=RequestMethod.GET)  
    @ResponseStatus(HttpStatus.OK)  
    public String getUserHtml() {  
        //Test HTML view  
        return "example";  
    }  
}


配置spring-mvc.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.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-4.0.xsd">


<context:component-scan base-package="com.jimmy.mywebservice" />


<bean id="userDetails" class="com.jimmy.mywebservice.bean.User"/>
<mvc:annotation-driven content-negotiation-manager="contentManager"/>
<bean id="contentManager"
                class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
                <property name="favorPathExtension" value="true"/>
                <property name="ignoreAcceptHeader" value="true" />
                <property name="defaultContentType" value="text/html" />
                <property name="useJaf" value="false"/>
                <property name="mediaTypes">
               <map>
                   <entry key="json" value="application/json" />   //重要
                   <entry key="html" value="text/html" />                 //重要
                   <entry key="xml" value="application/xml" />       //重要

               </map>
                </property>
        </bean>
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

</beans>


访问方式:

方式一:http://localhost:8080//springcontent.xml

输出:<user userName="Krishna" emailId="krishna@gmail.com"/>

方式二:http://localhost:8080//springcontent.json

输出:{"userName":"Krishna","emailId":"krishna@gmail.com"}

0 1