| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

JAX-RS Tips

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

JAX-RS Tips

Jersey 2.7 User Guid

入力

Form から POST されるパラメータを取得

@POST
@Consumes("application/x-www-form-urlencoded")
public void post(@FormParam("name") String name) {

}

パラメータ

パラメータ 内容
@QueryParam URLのクエリパラメータ ?a=b
@MatrixParam マトリックスパラメータ セミコロン(;)で区切って入れられる
@FormParam HTMLのフォーム
@CookieParam クッキーの値を取得
@HeadeParam HTTPリクエストヘッダの値を取得

生のHTTPヘッダーを取得するには

  • @Contextを使う
@GET
@Produces("text/html")
public String hoge(@Context HttpHeaders headers) {
    MultivaluedMap<String, String> _header = headers.getRequestHeaders();
             :
}

ServletConfig、ServletContext、HttpServletRequest、HttpServletResponse などを取得するには

@GET
@Produces(MediaType.TEXT_HTML)
public String greet(
    @Context HttpServletRequest request,
    @Context UriInfo uriInfo) {
}

パスパラメータの入力を制限する

@Path("user/{userid: [a-zA-Z][a-zA-Z0-9]*}/{mailAddress}/{phone}") …(1)
public class UserResource {
    …(省略)…
}

出力

ファイルダウンロード

上記サイトより
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)経由でファイルを書き込む