簡體   English   中英

如何使用JAX-RS返回實際的html文件

[英]How to return actual html file using JAX-RS

到目前為止,我正在通過以下方式返回html我的主頁:

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

我想要做的是返回home.html本身而不是復制其內容並返回字符串。

我該怎么做呢? 謝謝 :)

你可以只返回java.io.InputStreamjava.io.Reader的實例--JAX-RS會做正確的事情。

@GET
@Produces({MediaType.TEXT_HTML})
public InputStream viewHome()
{
   File f = getFileFromSomewhere();
   return new FileInputStream(f);
}
  1. 使用getResourceAsStream讀取文件
  2. 寫回返回的String。

這是我使用JAX-RS提供網頁的首選方式。 網頁的資源(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;
        }
    }
}

您可以使用HtmlEasy這是建立在RestEasy的,這是一個非常好的實現JAX-RS的頂部。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM