17

これまでのところ、次の方法でhtmlをホームページに返しています。

@GET
@Produces({MediaType.TEXT_HTML})
public String viewHome()
{
   return "<html>...</html>";
}

私がやりたいのは、home.html自体を返し、その内容をコピーせず、代わりに文字列を返すことです。

どうすればよいですか?ありがとう :)

4

4 に答える 4

32

java.io.InputStreamまたはのインスタンスを返すことができますjava.io.Reader—JAX-RSは正しいことを行います。

@GET
@Produces({MediaType.TEXT_HTML})
public InputStream viewHome()
{
   File f = getFileFromSomewhere();
   return new FileInputStream(f);
}
于 2012-07-15T07:01:02.200 に答える
4
  1. を使用してファイルを読み取るgetResourceAsStream
  2. 返された文字列に書き戻します。
于 2012-07-15T06:40:56.690 に答える
1

これは、JAX-RSを使用してWebページを提供するための私の好ましい方法です。Webページのリソース(html、css、images、jsなど)はに配置されmain/java/resources、それらをデプロイするWEB-INF/classes必要があります(プロジェクトの設定方法によっては、いくつかの構成が必要になる場合があります)。サービスServletContextに挿入し、それを使用してファイルを検索し、として返しますInputStream。参考までに、完全な例を以下に示します。

@Path("/home")
public class HomeService {
    @Context
    ServletContext servletContext;

    @Path("/{path: .+}")
    @GET
    public InputStream getFile(@PathParam("path") String path) {
        try {
            String base = servletContext.getRealPath("/WEB-INF/classes/files");
            File f = new File(String.format("%s/%s", base, path));
            return new FileInputStream(f);
        } catch (FileNotFoundException e) {
            // log the error?
            return null;
        }
    }
}
于 2017-07-20T12:42:18.930 に答える
0

RestEasyの上に構築されたHtmlEasyを使用できます。 これは、Jax-RSの非常に優れた実装です。

于 2015-03-19T15:49:46.583 に答える