[英]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.InputStream
或java.io.Reader
的实例--JAX-RS会做正确的事情。
@GET
@Produces({MediaType.TEXT_HTML})
public InputStream viewHome()
{
File f = getFileFromSomewhere();
return new FileInputStream(f);
}
getResourceAsStream
读取文件 这是我使用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.