神奇好望角 The Magical Cape of Good Hope

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

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

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

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

          表單參數(shù)

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

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

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

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

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

          HTTP 頭部參數(shù)

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

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

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

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

          Cookie 參數(shù)

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

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

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


          評論

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

          2014-05-22 16:04 by 8
          785

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

          2014-05-22 16:05 by 8
          8

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

          2014-05-22 16:05 by 8
          9

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

          2015-05-04 12:32 by abc
          13
          主站蜘蛛池模板: 灵宝市| 屏东市| 奉新县| 雷波县| 建德市| 蒲城县| 盐津县| 旬阳县| 墨竹工卡县| 彭水| 平安县| 宜章县| 博乐市| 北海市| 土默特右旗| 扎鲁特旗| 禄劝| 清流县| 尖扎县| 东港市| 秭归县| 昭苏县| 无棣县| 娄底市| 大关县| 南宫市| 汾西县| 沛县| 开原市| 宁海县| 兴和县| 巨鹿县| 泽州县| 墨玉县| 镇原县| 曲松县| 衡阳县| 同江市| 中西区| 济源市| 曲阳县|