成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

jersey 框架傳輸格式 (2) xml

The question / 1858人閱讀

摘要:作為日常開發(fā)中一種常用的傳輸格式。對(duì)應(yīng)的,定義了三種標(biāo)準(zhǔn)類型的輸入接口和輸出接口,。實(shí)體類如果請(qǐng)求的傳輸數(shù)據(jù)量很大,并且無(wú)需和外系統(tǒng)對(duì)接的場(chǎng)景,建議使用屬性來(lái)組織,這樣可以極大的減小格式的數(shù)據(jù)包的規(guī)模。如有版權(quán)侵犯,請(qǐng)聯(lián)系郵箱。

XML作為日常開發(fā)中一種常用的傳輸格式。jersey 也做了很優(yōu)秀的支持。

我學(xué)習(xí) 《Java RESTful Web Service 實(shí)戰(zhàn)》 一書。書中有些知識(shí)點(diǎn),不太常用,但是比較重要,特寫下次筆記已備忘。

jersey是遵循 JAX-RS2.0規(guī)范的一個(gè)實(shí)現(xiàn),旨在使用java提供RESTful服務(wù)的框架

java 中對(duì)xml文檔的處理有兩大標(biāo)準(zhǔn),JAXBJAXP

JAXB (Java API for XML Processing)

JAXP (Java Architecture for XML Binding, jsr-222)

JAXP 標(biāo)準(zhǔn)
JAXP 包含了 DOM,SAX,StAX三種解析xml的技術(shù)標(biāo)準(zhǔn)。

對(duì)應(yīng)的,JAXP定義了三種標(biāo)準(zhǔn)類型的輸入接口 Source(DOMSource, SAXSource, StreamSource) 和輸出接口, Result(DOMResult, SAXResult, StreamReault)。jersey 可以使用JAXP的輸入類型最為REST方法的參數(shù)。

java// StAX
@POST
@Path("stream")
@Consumes(MediaTYpe.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public StreamSource getStreamSource( 
// 接收 類型
javax.xml.transform.stream.StreamSource streamSource) {

    // 返回 類型。
    return streamSource;
}

```java
// SAX
@POST
@Path("sax")
@Consumes(MediaTYpe.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public SAXSource getSAXSource(
// 接受 類型
javax.xml.transform.sax.SAXSource saxSource
){
// 返回 類型
return saxSource;
}


```java // DOM @POST @Path("doc") @Consumes(MediaTYpe.APPLICATION_XML) @Produces(MediaType.APPLICATION_XML) public Document getDocument( // 接受 類型 org.w3c.dom.Document document){ // 返回 類型 return document; }

優(yōu)缺點(diǎn):JAXP的缺點(diǎn)是需要編碼解析XML,這樣正加了開發(fā)成本,但對(duì)于業(yè)務(wù)邏輯的實(shí)現(xiàn)沒(méi)有實(shí)際貢獻(xiàn)。JAXB只需要在POJO中定義相關(guān)的注解(早起人們是使用XML配置文件老做這件事),使其和XML的schema對(duì)應(yīng),無(wú)需對(duì)XML進(jìn)行程序是解析,彌補(bǔ)了JAXP的這一缺點(diǎn)。

使用JAXB的開發(fā)效率更高,相對(duì)于JAXP的性能更高。開發(fā)過(guò)程簡(jiǎn)化,執(zhí)行邏輯簡(jiǎn)化,是的JAXP帶來(lái)的優(yōu)勢(shì)就可以基本忽略不計(jì),綜合考量,實(shí)現(xiàn)起來(lái)更簡(jiǎn)單的JAXB更適合REST開發(fā)。

jersey支持使用JAXBElement作為REST方法參數(shù)形式,也支持直接使用POJO作為REST方法參數(shù)的形式,這種形式更為常用。示例代碼如下。

java@POST
@Path("jaxb")
@Consumes(MediaTYpe.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Book getEntity(JAXBElement booElement){
    Book book = booElement.getValue();
    System.out.println(book.getBookName());
    return book;
}

// book 實(shí)體類
@XmlRootElement
public class Book implements Serializable {

    @XmlAttribute(name = "bookId")
    public Long getBookId(){
        return bookId;
    }

    @XmlAttribute(name = "bookName")
    public String getBookName(){
        return bookName;
    }

    @XmlAttribute(name = "publisher")
    public String getPublisher(){
        return publisher;
    }
}
Content-Type: application/xml

如果REST請(qǐng)求的傳輸數(shù)據(jù)量很大,并且無(wú)需和外系統(tǒng)對(duì)接的場(chǎng)景,建議使用屬性來(lái)組織XML,這樣可以極大的減小XML格式的數(shù)據(jù)包的規(guī)模。

XML_SECURITY_DISABLE

jersey 默認(rèn)設(shè)置了 XMLConstants.FEATURE_SECURE_PROCESSING屬性,當(dāng)屬性或元素過(guò)多的時(shí)候,回報(bào) well-formedness error這樣的錯(cuò)誤信息。這是可以通過(guò)設(shè)置MessageProperties.XML_SECURITY_DISABLE的參數(shù)值為TRUE來(lái)屏蔽。

服務(wù)器和客戶端示例代碼如下。

@ApplicationPath("/*")
public class AirResourceConfig extends ResourceConfig {
    public AirResourceConfig () {
        packages("com.example");
        property(MessageProperties.XML_SECURITY_DISABLE, Boolean.TRUE);
    }
}

以上文字片段以及圖片,部分來(lái)自于 《Java RESTful Web Service 實(shí)戰(zhàn)》一書。如有版權(quán)侵犯,請(qǐng)聯(lián)系郵箱[[email protected]]。本人及時(shí)修改。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64234.html

相關(guān)文章

  • jersey 框架傳輸格式 (2) xml

    摘要:作為日常開發(fā)中一種常用的傳輸格式。對(duì)應(yīng)的,定義了三種標(biāo)準(zhǔn)類型的輸入接口和輸出接口,。實(shí)體類如果請(qǐng)求的傳輸數(shù)據(jù)量很大,并且無(wú)需和外系統(tǒng)對(duì)接的場(chǎng)景,建議使用屬性來(lái)組織,這樣可以極大的減小格式的數(shù)據(jù)包的規(guī)模。如有版權(quán)侵犯,請(qǐng)聯(lián)系郵箱。 XML作為日常開發(fā)中一種常用的傳輸格式。jersey 也做了很優(yōu)秀的支持。 我學(xué)習(xí) 《Java RESTful Web Service 實(shí)戰(zhàn)》 一書。書中有...

    betacat 評(píng)論0 收藏0
  • jersey 框架傳輸格式 (1) 基礎(chǔ)類型

    摘要:在學(xué)習(xí)中看到框架支持幾乎多有的原生類型的傳輸格式。是遵循規(guī)范的一個(gè)實(shí)現(xiàn),旨在使用提供服務(wù)的框架原生類型中整型數(shù)值浮點(diǎn)型數(shù)值編碼字符型數(shù)值布爾類型值都提供支持,并且提供了,基礎(chǔ)類型的數(shù)組形式的支持。 在學(xué)習(xí)jersey中看到j(luò)ersey框架支持幾乎多有的java原生類型的傳輸格式。 我學(xué)習(xí) 《Java RESTful Web Service 實(shí)戰(zhàn)》 一書。書中有些知識(shí)點(diǎn),不太常用,但是...

    liangzai_cool 評(píng)論0 收藏0
  • 記錄第一次搭建基于JAX-RS的REST風(fēng)格DEMO

    摘要:中引入了模塊的概念,默認(rèn)情況下,中將不再包含的包,而在時(shí)關(guān)于這個(gè)都是捆綁在一起的。 因?yàn)槭浅鯇W(xué)REST風(fēng)格,所以并不打算馬上就用springMVC這些框架去實(shí)現(xiàn)restful,所以先用jersey搭建一個(gè)rest的demo上手玩玩,本文記錄了搭建所需要引入的jar包,以及搭建過(guò)程碰到的坑,希望能讓大家有所收獲,歡迎交流! 1、Maven jar包引入 ...

    ybak 評(píng)論0 收藏0
  • JAX-RS 2.0 中 REST 的四種服務(wù)類型

    摘要:當(dāng)不存在子類,也不存在子類時(shí),規(guī)范中定義,在這種情況下,為服務(wù)動(dòng)態(tài)生成一個(gè)名為的實(shí)例,并自動(dòng)探測(cè)匹配資源。其中是中的基類,它繼承于情況二當(dāng)不存在子類,但是存在子類時(shí)。以上就是規(guī)范中定義的四種服務(wù)的方式。 最近在學(xué)習(xí) jersey 框架。他是 目前比較流行的 基于 JAX-RS 2.0 規(guī)范實(shí)現(xiàn)的 RESTful 框架。 我是跟著 《Java RESTful Web Service 實(shí)...

    bbbbbb 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<