【问题标题】:Sending HTML with JS through Java JAX-RS REST Service通过 Java JAX-RS REST 服务发送带有 JS 的 HTML
【发布时间】:2016-06-22 21:46:14
【问题描述】:

我正在编写一个 REST 服务,提供两件事:
1. 数据信息(从数据库中读取)
2. 网络应用程序(即网页)

所以目前我只有一个索引页面,我在 REST 请求中返回了这个 html 文件。我的服务类看起来像这样:

@Path("web")
public class MainPages {
    @GET
    @Produces(MediaType.TEXT_HTML)
    public InputStream getIndex(){
    File index = new File("webapp/pages/index.html");
    try {
        return new FileInputStream(index);
    } catch (FileNotFoundException e) {
        String s = "ERROR";
        return new ByteArrayInputStream(s.getBytes(StandardCharsets.UTF_8));
    }
}

现在在 HTML 文件中,我尝试包含一些与 HTML 文件位于同一文件夹中的 javascript 文件。 HTML 文件的标题如下所示:

<html ng-app>
<head>
    <meta charset="utf8" />
    <title>Welcome</title>
    <script type="text/javascript" src="angular.js"></script>
</head>

我现在面临的问题是,src 没有获取文件,而是激活了 REST 服务,如下图所示:

我想我在这里遗漏了一些重要信息。
但我的问题是:如何告诉页面在文件夹中查找而不是从 REST 请求文件?
还是需要在 REST Service 中添加对应的 Path 并在那里返回 javascript 文件?

【问题讨论】:

    标签: javascript java html web-services rest


    【解决方案1】:

    通过 JAX-RS 资源提供服务

    如果您不使用 PlaySpring 等框架,则必须手动提供静态内容。

    您可以创建一个包含静态文件的public 文件夹,并通过以下资源方法提供它们。我还没有测试过代码,但它会与此类似。

    @Path('{filename}')
    @GET
    public InputStream getIndex(@PathParam("filename") String fileName){
    File index = new File("webapp/public/" + fileName);
    try {
        return new FileInputStream(index);
    } catch (FileNotFoundException e) {
        String s = "ERROR";
        return new ByteArrayInputStream(s.getBytes(StandardCharsets.UTF_8));
    }  
    

    资源:

    【讨论】:

    • 谢谢。正是我想要的。
    猜你喜欢
    • 2012-10-15
    • 1970-01-01
    • 2013-10-18
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    相关资源
    最近更新 更多