神奇好望角 The Magical Cape of Good Hope

          庸人不必自擾,智者何需千慮?
          posts - 26, comments - 50, trackbacks - 0, articles - 11
            BlogJava :: 首頁(yè) ::  :: 聯(lián)系 :: 聚合  :: 管理

          隨筆分類(35)

          最新評(píng)論

          JAX-RS 從傻逼到牛叉 6:參數(shù)注入

          Posted on 2011-12-29 16:34 蜀山兆孨龘 閱讀(4408) 評(píng)論(4)  編輯  收藏 所屬分類: Java EESOA

          《JAX-RS 從傻逼到牛叉 3:路徑匹配》中,我們已經(jīng)見過如何使用 @PathParam@QueryParam@MatrixParam 分別注入 URI 中的路徑參數(shù)、矩陣參數(shù)和查詢參數(shù),以及如何編程訪問這些參數(shù)。本文介紹表單參數(shù)、HTTP 頭部參數(shù)和 Cookie 參數(shù)的注入。

          表單參數(shù)

          HTTP 請(qǐng)求也可以使用提交表單的方式。這時(shí)請(qǐng)求方法一般是 POST,當(dāng)然春哥也無(wú)法阻止你用 GET。在前面我們雖然介紹過處理 POST 請(qǐng)求的例子,但那只是利用了 JAX-RS 對(duì) JAXB 的支持,并沒有涉及到對(duì)具體請(qǐng)求參數(shù)的注入。JAX-RS 提供了 @FormParam 注解來注入 POST 請(qǐng)求的參數(shù),例如:

          @POST
          public Response createMovie(@FormParam("title") String title) {
              // 此處省略若干行
          }
              

          這兒省略了 @Consumes 注解,JAX-RS 會(huì)自動(dòng)默認(rèn)為 @Consumes(MediaType.APPLICATION_FORM_URLENCODED),也就是 application/x-www-form-urlencoded 格式的請(qǐng)求。如果請(qǐng)求格式為 multipart/form-data,就必須顯示指明:

          @POST
          @Consumes(MediaType.MULTIPART_FORM_DATA)
          public Response createMovie(@FormParam("title") String title) {
              // 此處省略若干行
          }
              

          JAX-RS 還支持文件的上傳和下載,以后再介紹。

          HTTP 頭部參數(shù)

          注入 HTTP 頭部參數(shù)簡(jiǎn)單得不能再簡(jiǎn)單了:

          @GET
          @Path("xxx")
          @Produces(MediaType.TEXT_PLAIN)
          public String xxx(@HeaderParam("User-Agent") String userAgent) {
              // 此處省略若干行
          }
              

          如果有很多頭部參數(shù),為了避免臃腫的參數(shù)列表,可以注入一個(gè)頭部對(duì)象,然后編程訪問頭部參數(shù):

          @GET
          @Path("xxx")
          @Produces(MediaType.TEXT_PLAIN)
          public String xxx(@Context HttpHeaders headers) {
              // 此處省略若干行
          }
              

          Cookie 參數(shù)

          注入 Cookie 參數(shù)同樣的簡(jiǎn)單:

          @GET
          @Path("xxx")
          @Produces(MediaType.TEXT_PLAIN)
          public String xxx(@CookieParam("userName") String userName) {
              // 此處省略若干行
          }
              

          如果希望編程訪問,則可以像編程訪問那樣注入一個(gè) HttpHeaders 對(duì)象,然后通過它的 getCookies() 方法來獲取所有的 Cookie。


          評(píng)論

          # re: JAX-RS 從傻逼到牛叉 6:參數(shù)注入  回復(fù)  更多評(píng)論   

          2014-05-22 16:04 by 8
          785

          # re: JAX-RS 從傻逼到牛叉 6:參數(shù)注入  回復(fù)  更多評(píng)論   

          2014-05-22 16:05 by 8
          8

          # re: JAX-RS 從傻逼到牛叉 6:參數(shù)注入  回復(fù)  更多評(píng)論   

          2014-05-22 16:05 by 8
          9

          # re: JAX-RS 從傻逼到牛叉 6:參數(shù)注入[未登錄]  回復(fù)  更多評(píng)論   

          2015-05-04 12:32 by abc
          13
          主站蜘蛛池模板: 阿城市| 玉山县| 武冈市| 四子王旗| 辽源市| 子长县| 林甸县| 盐边县| 黄山市| 瑞昌市| 黄平县| 深州市| 白银市| 吉首市| 兴海县| 吴桥县| 赤城县| 嵊泗县| 鹤壁市| 石台县| 三河市| 乌什县| 达州市| 宁乡县| 商丘市| 杨浦区| 乌审旗| 五峰| 普宁市| 绥化市| 纳雍县| 长沙市| 包头市| 麻栗坡县| 嘉兴市| 楚雄市| 磐石市| 澄迈县| 彭水| 泉州市| 忻城县|