我正在写一个提供两件事的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服务并在那里返回javascript文件?
答案 0 :(得分:1)
如果您不使用Play
或Spring
等框架,则必须手动提供静态内容。
您可以创建一个包含静态文件的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));
}
资源: