私はEmberをフロントエンドに、Javaをバックエンドに使用しています。 localhost:8080と入力すると、Emberのホームページindex.htmlを表示する必要があります。以前はNode.jsを使用していましたが、下の行がトリックでしたJava HTTPサーバーからの応答でファイルを送信
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();
}
}
残念ながら、ホームページを読み込もうとすると次のエラーが表示されます。
"Uncaught SyntaxError: Unexpected token <"
Node.jsを使用して処理すると、同じEmberアプリケーションがうまく動作します。私はHTTPの応答を適切に送信していないと思います。どんな助けもありがとうございます。
それが違いを作るかどうかを確認するために 'os.flush()' ')('にos.close前を使用してみてください。 – edkeveked