!!!JAX-RS Tips [Jersey 2.7 User Guid|https://jersey.java.net/documentation/latest/index.html] !!!入力 !!Form から POST されるパラメータを取得 @POST @Consumes("application/x-www-form-urlencoded") public void post(@FormParam("name") String name) { } !!パラメータ *http://typea.info/tips/wiki.cgi?page=JAX-RS+Tips ,パラメータ,内容 ,@QueryParam,URLのクエリパラメータ ?a=b ,@MatrixParam,マトリックスパラメータ セミコロン(;)で区切って入れられる ,@FormParam,HTMLのフォーム ,@CookieParam,クッキーの値を取得 ,@HeadeParam,HTTPリクエストヘッダの値を取得 !生のHTTPヘッダーを取得するには *@Contextを使う @GET @Produces("text/html") public String hoge(@Context HttpHeaders headers) { MultivaluedMap _header = headers.getRequestHeaders(); : } !ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse などを取得するには *@Context を使う **[ServletConfig|http://docs.oracle.com/javaee/5/api/javax/servlet/ServletConfig.html] **[ServletContext|http://docs.oracle.com/javaee/5/api/javax/servlet/ServletContext.html] **[HttpServletRequest|http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletRequest.html] **HttpServletResponse **[Application|https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/core/Application.html] **[UriInfo|https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/core/UriInfo.html] **[Request|https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/core/Request.html] **[HttpHeaders|https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/core/HttpHeaders.html] **[SecurityContext|https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/core/SecurityContext.html] **[HttpServletResponse|http://docs.oracle.com/javaee/5/api/javax/servlet/http/HttpServletResponse.html] **[Providers|https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/ext/Providers.html] @GET @Produces(MediaType.TEXT_HTML) public String greet( @Context HttpServletRequest request, @Context UriInfo uriInfo) { } !パスパラメータの入力を制限する *パスに正規表現で制限を行うことが可能 *http://codezine.jp/article/detail/7190?p=2 @Path("user/{userid: [a-zA-Z][a-zA-Z0-9]*}/{mailAddress}/{phone}") …(1) public class UserResource { …(省略)… } !!!出力 !!ファイルダウンロード *[JAX-RSでファイルダウンロードさせる方法|http://dev.worksap.co.jp/Members/t_tanaka/2011/05/31/jax-rs-file-download/] ::上記サイトより import java.io.ByteArrayInputStream; import java.io.InputStream; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path("/File") public class FileDownloadService { @GET @Path("/download") @Produces(MediaType.APPLICATION_OCTET_STREAM) public Response download() { StringBuilder sb = new StringBuilder(); sb.append("sample content"); InputStream is = new ByteArrayInputStream(sb.toString().getBytes()); return Response.ok(is) .header("Content-disposition", "attachment; filename=data.txt") .build(); } } !添付ファイルのダウンロード public Response file(File file, String filename) { javax.ws.rs.core.Response.ResponseBuilder response = Response.ok((Object) file); if (StringUtils.isBlank(filename)) { filename = "download_file"; } try { filename = new String(filename.getBytes("ms932"),"iso-8859-1"); } catch (UnsupportedEncodingException e) { int extPos = filename.lastIndexOf('.'); if (extPos > 0) { filename += filename.substring(extPos); } } response.header("Content-Disposition", String.format("attachment; filename=\"%s\"", filename)); return response.build(); } !CSVファイルのダウンロード public Response csv(String csvContent, String filename) { ByteArrayInputStream in = new ByteArrayInputStream(csvContent.getBytes()); javax.ws.rs.core.Response.ResponseBuilder response = Response.ok(in); if (StringUtils.isBlank(filename)) { filename = "csv_file"; } try { filename = new String(filename.getBytes("ms932"),"iso-8859-1"); } catch (UnsupportedEncodingException e) { int extPos = filename.lastIndexOf('.'); if (extPos > 0) { filename += filename.substring(extPos); } } response.header("Content-Type", "application/vnd.ms-excel") .header("Content-Disposition", String.format("attachment; filename=\"%s\"", filename)); return response.build(); } !共有ディレクトリ上のファイルのダウンロード *Java Windowsファイル共有サービス(CIFS)経由でファイルを書き込む