乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Spring 3.x MVC 入門3 -- 使用內(nèi)容協(xié)商來實現(xiàn)多視圖

       老鼠愛上美貓 2012-08-09

      ContentNegotiatingViewResolver

      這個解析器是做什么用的?

      RESTful服務(wù)中很重要的一個特性即是同一資源,多種表述我們使用ContentNegotiatingViewResolver就可以做到,這個視圖解析器允許你用同樣的內(nèi)容數(shù)據(jù)來呈現(xiàn)不同的view

       

      如下面描述的三種方式:

       

      方式1  使用擴展名

      http://www./user.xml    呈現(xiàn)xml文件

      http://www./user.json    呈現(xiàn)json格式

      http://www./user       使用默認view呈現(xiàn),比如jsp等

      -----------------------------------------------------------------------------------------------------

      方式2  使用http request header的Accept

      GET /user HTTP/1.1

      Accept:application/xml

       

      GET /user HTTP/1.1

      Accept:application/json

       

      ….

      -----------------------------------------------------------------------------------------------------

       

      方式3  使用參數(shù)

      http://www./user?format=xml

      http://www./user?format=json

       

      這三種方式各自的優(yōu)缺點這里就不再介紹了

      如何使用ContentNegotiatingViewResolver?

      假設(shè)我們有這么一個目標:

      /user/{userid}.json    用于返回一個描述User的JSON

      /user/{userid}        用于返回一個展示User的JSP頁面

      /user/{userid}.xml     用于返回一個展示User的XML文件

       

      配置文件說明   (具體例子下篇文章放上)

      我們知道有accept header,擴展名以及參數(shù)這三種方式,配置文件中

       

      這里是解析器的執(zhí)行順序,如果有多個的話(前面多次解釋過)

      <property name="order" value="1"></property>

       

      --------------------------------------------------------------------------------------------------------------

       

      如果所有的mediaType都沒匹配上,就會使用defaultContentType

      <property name="defaultContentType" value="text/html" />

       

      這里是是否啟用擴展名支持,默認就是true

      例如  /user/{userid}.json

      <property name="favorPathExtension" value="true"></property>

      這里是是否啟用參數(shù)支持,默認就是true

      例如  /user/{userid}?format=json

      <property name="favorParameter" value="false"></property>

      這里是否忽略掉accept header,默認就是false

      例如     GET /user HTTP/1.1

      Accept:application/json

      <property name="ignoreAcceptHeader" value="true"></property>

       

      我們的例子是采用.json , .xml結(jié)尾的,所以關(guān)掉兩個

       

      --------------------------------------------------------------------------------------------------------------

      這里是擴展名到mimeType的映射,

      例如 /user/{userid}.json  中的   .json  就會映射到   application/json

      <property name="mediaTypes">

                 <map>

                    <entry key="json" value="application/json" />

                    <entry key="xml" value="application/xml" />                     </map>

      </property>

      注:

      ContentNegotiatingViewResolver是根據(jù)客戶提交的MimeType(如 text/html,application/xml)來跟服務(wù)端的一組viewResover的MimeType相比較,如果符合,即返回 viewResover的數(shù)據(jù).
      而 /user/123.xml, ContentNegotiatingViewResolver會首先將 .xml 根據(jù)mediaTypes屬性將其轉(zhuǎn)換成 application/xml,然后完成前面所說的比較.

       

       

      ContentNegotiatingViewResolver的處理流程(左上角入口)

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多