到目前爲止,我通過返回的HTML我的主頁:如何使用JAX-RS返回實際的HTML文件
@GET
@Produces({MediaType.TEXT_HTML})
public String viewHome()
{
return "<html>...</html>";
}
我想要做的就是回到home.html的本身,而不是複製其內容和而是返回字符串。
我該怎麼做?謝謝:)
到目前爲止,我通過返回的HTML我的主頁:如何使用JAX-RS返回實際的HTML文件
@GET
@Produces({MediaType.TEXT_HTML})
public String viewHome()
{
return "<html>...</html>";
}
我想要做的就是回到home.html的本身,而不是複製其內容和而是返回字符串。
我該怎麼做?謝謝:)
您可以返回一個java.io.InputStream
或java.io.Reader
的實例 - JAX-RS將做正確的事情。
@GET
@Produces({MediaType.TEXT_HTML})
public InputStream viewHome()
{
File f = getFileFromSomewhere();
return new FileInputStream(f);
}
getResourceAsStream
請在您的回答中添加一些代碼 – 2017-03-10 08:28:53
您可以使用它是建立在RestEasy的,這是一個非常好的實現JAX-RS的頂部HtmlEasy。
這是我使用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;
}
}
}
嗯,好建議先生。 我得到filenotfoundexception -_-它是否搜索相對於調用文件的「tosearch.txt」? – Incognito 2012-07-15 07:36:41
這取決於應用程序的「當前目錄」是什麼 - 這取決於應用程序執行的位置,即它可以(也可能會)在運行時更改。 'System.out.println(System.getProperty(「user.dir」));'將打印解析相關文件的路徑。 – 2012-07-15 08:51:08
如果你在一個Servlet應用程序中,getResourceAsStream()方法(http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html#getResourceAsStream(java.lang.String))是一個更好的選擇,然後使用'java.io.File'實例。 – 2012-07-15 08:52:49