17

到目前为止,我正在通过以下方式返回 html 我的主页:

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

我想要做的是返回 home.html 本身,而不是复制其内容并返回字符串。

我该怎么做呢?谢谢 :)

4

4 回答 4

32

java.io.InputStream你可以只返回一个or的实例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 提供网页的首选方式。网页的资源(html、css、图像、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 回答