通过Java JAX-RS REST服务使用JS发送HTML

时间:2016-06-22 21:46:15

标签: javascript java html web-services rest

我正在写一个提供两件事的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服务,如下图所示: enter image description here

我想我在这里遗漏了一些重要的信息 但我的问题是:如何告诉页面查看文件夹而不是从REST请求文件?
或者我是否需要将相应的路径添加到REST服务并在那里返回javascript文件?

1 个答案:

答案 0 :(得分: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));
}  

资源: