成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

jersey 框架傳輸格式 (2) xml

The question / 1903人閱讀

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

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

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

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)類(lèi)型的輸入接口 Source(DOMSource, SAXSource, StreamSource) 和輸出接口, Result(DOMResult, SAXResult, StreamReault)。jersey 可以使用JAXP的輸入類(lèi)型最為REST方法的參數(shù)。

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

    // 返回 類(lèi)型。
    return streamSource;
}

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


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

優(yōu)缺點(diǎn):JAXP的缺點(diǎn)是需要編碼解析XML,這樣正加了開(kāi)發(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的開(kāi)發(fā)效率更高,相對(duì)于JAXP的性能更高。開(kāi)發(fā)過(guò)程簡(jiǎn)化,執(zhí)行邏輯簡(jiǎn)化,是的JAXP帶來(lái)的優(yōu)勢(shì)就可以基本忽略不計(jì),綜合考量,實(shí)現(xiàn)起來(lái)更簡(jiǎn)單的JAXB更適合REST開(kāi)發(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í)體類(lèi)
@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ù)值為T(mén)RUE來(lái)屏蔽。

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

@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)》一書(shū)。如有版權(quán)侵犯,請(qǐng)聯(lián)系郵箱[ychangsheng@gmail.com]。本人及時(shí)修改。

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

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

相關(guān)文章

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

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

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

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

    摘要:當(dāng)不存在子類(lèi),也不存在子類(lèi)時(shí),規(guī)范中定義,在這種情況下,為服務(wù)動(dòng)態(tài)生成一個(gè)名為的實(shí)例,并自動(dòng)探測(cè)匹配資源。其中是中的基類(lèi),它繼承于情況二當(dāng)不存在子類(lèi),但是存在子類(lèi)時(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元查看
<