神奇好望角 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 蜀山兆孨龘 閱讀(4414) 評論(4)  編輯  收藏 所屬分類: Java EESOA

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

          表單參數(shù)

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

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

          這兒省略了 @Consumes 注解,JAX-RS 會自動默認為 @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ù)注入  回復  更多評論   

          2014-05-22 16:04 by 8
          785

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

          2014-05-22 16:05 by 8
          8

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

          2014-05-22 16:05 by 8
          9

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

          2015-05-04 12:32 by abc
          13
          主站蜘蛛池模板: 西和县| 丹江口市| 远安县| 洪江市| 万宁市| 晴隆县| 长宁区| 襄城县| 磐石市| 中山市| 勃利县| 神农架林区| 台湾省| 隆德县| 闵行区| 吉木乃县| 澄城县| 两当县| 花垣县| 阿坝县| 潍坊市| 齐齐哈尔市| 沛县| 静宁县| 南川市| 安达市| 太白县| 潞城市| 简阳市| 南通市| 揭西县| 甘肃省| 虞城县| 都江堰市| 济宁市| 宜都市| 崇左市| 凤庆县| 通渭县| 吴旗县| 黎平县|