我使用Ember作为前端,Java作为后端,在输入localhost:8080时,我需要显示Ember主页index.html,以前,我使用Node.js,下面的代码行完成了这个任务
res.sendfile('./public/index.html');
现在转到Java,我无法达到同样的结果。我尝试了下面的代码。
public static void main(String[] args) throws Exception
{
HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
server.createContext("/", new HHandler());
server.createContext("/getbookarray", new MyHandler());
server.setExecutor(null); // creates a default executor
server.start();
}
static class HHandler implements HttpHandler
{
@Override
public void handle(HttpExchange t) throws IOException
{
File file = new File("..\\public\\index.html");
String response = FileUtils.readFileToString(file);
String encoding = "UTF-8";
t.getResponseHeaders().set("Content-Type", "text/html; charset=" + encoding);
t.getResponseHeaders().set("Accept-Ranges", "bytes");
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes("UTF-8"));
os.close();
}
}
但是,不幸的是,我在尝试加载主页时遇到以下错误。
"未捕获的语法错误:意外标记〈"
使用Node.js处理相同的Ember应用程序时工作正常。我想我没有正确发送HTTP响应。任何帮助都是感激的。
1条答案
按热度按时间hyrbngr71#
也许你的文件路径有问题。还要注意
readFileToString
已经过时了。这是一个工作的服务器,它会将您的
index.html
发送到前端。你可以使用轻量级服务器nanoHttpd,用下面的代码你也可以把你的
index.html
文件发送到你的前端。