神奇好望角 The Magical Cape of Good Hope

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

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

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

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

          表單參數(shù)

          HTTP 請(qǐng)求也可以使用提交表單的方式。這時(shí)請(qǐng)求方法一般是 POST,當(dāng)然春哥也無(wú)法阻止你用 GET。在前面我們雖然介紹過(guò)處理 POST 請(qǐng)求的例子,但那只是利用了 JAX-RS 對(duì) JAXB 的支持,并沒(méi)有涉及到對(duì)具體請(qǐng)求參數(shù)的注入。JAX-RS 提供了 @FormParam 注解來(lái)注入 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ì)象,然后編程訪問(wèn)頭部參數(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) {
              // 此處省略若干行
          }
              

          如果希望編程訪問(wèn),則可以像編程訪問(wèn)那樣注入一個(gè) HttpHeaders 對(duì)象,然后通過(guò)它的 getCookies() 方法來(lái)獲取所有的 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ù)注入[未登錄](méi)  回復(fù)  更多評(píng)論   

          2015-05-04 12:32 by abc
          13
          主站蜘蛛池模板: 夏津县| 阿图什市| 芦山县| 县级市| 利辛县| 合山市| 潮安县| 合阳县| 佛坪县| 平果县| 棋牌| 格尔木市| 北流市| 龙泉市| 鸡西市| 尚志市| 正定县| 泸定县| 洞头县| 土默特左旗| 建德市| 庆阳市| 舞钢市| 寿阳县| 鹤壁市| 龙里县| 怀仁县| 来安县| 玉龙| 木兰县| 射洪县| 建水县| 城步| 保亭| 通榆县| 苏尼特右旗| 宿迁市| 永清县| 贵南县| 南部县| 安陆市|