<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    CXF restful webserice同時支持幾種協(xié)議 json, xml... 很簡單

    1. 假設(shè)我們有個服務(wù)  (都是從別處拿來的代碼)

    mport javax.ws.rs.*;
    import javax.ws.rs.core.Response;


    @Path(value 
    = "/student/{id}")
    public interface StudentService
    {
        @GET
        @Path(value 
    = "/info")
        Student getStudent(@PathParam(
    "id"long id, @QueryParam("name")
        String name);

        @GET
        @Path(value 
    = "/info2")
        UserResponse getStudent(@QueryParam(
    "name") String name);
    }

    服務(wù)實現(xiàn)類:


    import javax.ws.rs.core.Response;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;

    public class StudentServiceImpl implements StudentService
    {
        
    public Student getStudent(long id, String name)
        {
            Student s 
    = new Student();
            s.setId(id);
            s.setName(name);
            
    try
            {
                s.setBirthday(
    new SimpleDateFormat("yyyy-MM-dd").parse("1983-04-26"));
            }
            
    catch (ParseException e)
            {
                e.printStackTrace();
            }
            
    return s;
        }

        
    public Response getStudent1(String name)
        {
            Student s 
    = new Student();
            s.setId(
    1);
            s.setName(name);
            
    try
            {
                s.setBirthday(
    new SimpleDateFormat("yyyy-MM-dd").parse("1983-04-26"));
            }
            
    catch (ParseException e)
            {
                e.printStackTrace();
            }

            
    return Response.ok(s).build();
            
    //return s;
        }

        
    public UserResponse getStudent(String name)
        {
            Student s 
    = new Student();
            s.setId(
    1);
            s.setName(name);
            
    try
            {
                s.setBirthday(
    new SimpleDateFormat("yyyy-MM-dd").parse("1983-04-26"));
            }
            
    catch (ParseException e)
            {
                e.printStackTrace();
            }

            
    return new UserResponse("ok", s);
        }

    返回數(shù)據(jù)包裝類

    import javax.xml.bind.annotation.*;

    @XmlRootElement(name 
    = "Response")
    @XmlAccessorType(XmlAccessType.FIELD)
    public class UserResponse
    {
        
    private String status;

        
    private Student data;

        
    public UserResponse()
        {
        }

        
    public UserResponse(String status, Student data)
        {
            
    this.status = status;
            
    this.data = data;
        }

        
    public String getStatus()
        {
            
    return status;
        }

        
    public void setStatus(String status)
        {
            
    this.status = status;
        }

        
    public Object getData()
        {
            
    return data;
        }

        
    public void setData(Student data)
        {
            
    this.data = data;
        }
    }

    普通類


    import javax.xml.bind.annotation.XmlAccessType;
    import javax.xml.bind.annotation.XmlAccessorType;
    import javax.xml.bind.annotation.XmlRootElement;
    import java.util.Date;

    @XmlRootElement(name 
    = "Student")
    @XmlAccessorType(XmlAccessType.FIELD)
    public class Student
    {
        
    private long id;
        
    private String name;
        
    private Date birthday;

        
    public long getId()
        {
            
    return id;
        }

        
    public void setId(long id)
        {
            
    this.id = id;
        }

        
    public String getName()
        {
            
    return name;
        }

        
    public void setName(String name)
        {
            
    this.name = name;
        }


        
    public Date getBirthday()
        {
            
    return birthday;
        }

        
    public void setBirthday(Date birthday)
        {
            
    this.birthday = birthday;
        }
    }



    Spring 服務(wù)聲明


        <import resource="classpath:META-INF/cxf/cxf.xml"/>
        
    <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/>
        
    <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>
        
    <import resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"/>


        
    <bean id="rsStudentServiceImpl" class="ex3.StudentServiceImpl" />

        
    <jaxrs:server id="test" address="/student" >
            
    <jaxrs:serviceBeans>
                
    <ref bean="rsStudentServiceImpl" />
            
    </jaxrs:serviceBeans>
             
             <!-- 這里設(shè)置了對應(yīng)關(guān)系, 按理說默認(rèn)就應(yīng)該是這樣, 你可以試試. 當(dāng)然可以自定義  -->
            
    <jaxrs:extensionMappings>
              
    <entry key="json" value="application/json"/>
              
    <entry key="xml" value="application/xml"/>
            
    </jaxrs:extensionMappings>
        
    </jaxrs:server>

    web.xml 就不貼了, 和普通的一樣.



    2. 訪問方法有3種, 可以實現(xiàn)獲取不同格式的內(nèi)容.

    http://localhost:8080/student/student/3/info2.json?name=abcss
    http://localhost:8080/student/student/3/info2.xml?name=abcss

    http://localhost:8080/student/student/3/info2?name=abcss&_type=xml
    http://localhost:8080/student/student/3/info2?name=abcss&_type=json

    還有一種辦法就是在請求時設(shè)置Accept:

            HttpGet get = new HttpGet(
                    
    "http://127.0.0.1:8080/student/student/3/info2?name=Fetion");
            HttpClient httpclient 
    = new DefaultHttpClient();

            get.addHeader(
    "ACCEPT""application/xml");

            HttpResponse response 
    = httpclient.execute(get);

            StatusLine st 
    = response.getStatusLine();

        InputStream ins 
    = response.getEntity().getContent();
        
    byte[] b = new byte[1024];
        StringBuilder sb 
    = new StringBuilder();
        
    while (ins.read(b) != -1)
        {
            sb.append(
    new String(b, "UTF-8"));
        }
        System.out.println(sb.toString());

    簡單吧.... 呵呵


    posted on 2010-07-20 00:30 Scud(飛云小俠) 閱讀(9683) 評論(1)  編輯  收藏 所屬分類: SOA

    評論

    # re: CXF restful webserice同時支持幾種協(xié)議 json, xml... 很簡單 2012-08-30 16:58 jiangli

    服務(wù)器端參數(shù)是個對象形式,客戶端傳過去對象的json格式,能不能接收?  回復(fù)  更多評論   

    <2010年7月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計

    公告

    文章發(fā)布許可
    創(chuàng)造共用協(xié)議:署名,非商業(yè),保持一致

    我的郵件
    cnscud # gmail


    常用鏈接

    留言簿(15)

    隨筆分類(113)

    隨筆檔案(103)

    相冊

    友情鏈接

    技術(shù)網(wǎng)站

    搜索

    積分與排名

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 久久久久久久亚洲精品| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 亚洲精品尤物yw在线影院| 两个人www免费高清视频| 免费的一级片网站| 亚洲性一级理论片在线观看| 嫩草影院免费观看| 国产成人免费AV在线播放| 狠狠色香婷婷久久亚洲精品| 久久亚洲欧洲国产综合| 99久久免费国产香蕉麻豆| 欧洲精品码一区二区三区免费看| 亚洲AV综合色区无码一区| 全免费a级毛片免费看不卡| 在线观看免费视频一区| 亚洲精品无码久久久久YW| 亚洲成av人片天堂网| 在线视频免费国产成人| 免费播放美女一级毛片| 亚洲一区二区三区高清| 免费成人在线观看| 成年人网站免费视频| 91精品成人免费国产| 欧洲亚洲国产精华液| 亚洲男人天堂影院| 亚洲人成网77777色在线播放| 成人免费无毒在线观看网站| 无码免费一区二区三区免费播放 | 亚洲午夜在线一区| 亚洲色偷拍另类无码专区| 日韩免费观看一级毛片看看| 69免费视频大片| 免费无码又爽又刺激网站| 添bbb免费观看高清视频| 亚洲午夜精品一区二区公牛电影院 | 国内精品免费久久影院| 特级av毛片免费观看| 亚洲精品永久在线观看| 亚洲区精品久久一区二区三区| 亚洲日韩激情无码一区| 亚洲男女内射在线播放|