我试图使一个简单的httpserver服务动态创建的网页。但是,我注意到,不管我使用什么浏览器,httpserver的httpcontext的处理程序都会被多次调用。相关代码如下:
主类中的主方法:
public static void main(String[] args) throws ParseException {
try {
HttpServer server = HttpServer.create(new InetSocketAddress(80), 0);
HttpContext context = server.createContext("/");
context.setHandler(exchange -> {
switch (exchange.getRequestMethod()) {
case "GET": httpGet(exchange); break;
case "HEAD": httpHead(exchange); break;
// ... redacted for brevity
}
});
server.start();
} catch (IOException e) {
e.printStackTrace();
}
}
主类中的处理程序:
private static final void httpGet(HttpExchange exchange) throws IOException {
System.out.println(exchange);
String[] resource = exchange.getRequestURI().toString().substring(1).split("/");
String page;
if (resource.length <= 0) {
// serve the home page
page = "home";
} else if (resource[0].equals("stock")) {
if (resource.length < 2) {
// display stock index
page = "index";
} else {
String ticker = resource[1];
if (resource.length < 3) {
// display stock summary
page = "summary";
} else {
String targetPage = resource[2];
page = DatabaseAbstraction.getPage(ticker, targetPage);
}
}
} else {
page = DatabaseAbstraction.get404Page();
}
exchange.sendResponseHeaders(200, page.getBytes().length);
exchange.getResponseBody().write(page.getBytes());
exchange.getResponseBody().close();
return;
}
databaseabstraction委托页面生成,并将(在将来)处理页面缓存。我主要关心的是处理程序本身,而不是数据库方法,不管使用哪个浏览器加载它,似乎都会被调用三到五次。
我想可能是超时了,但有没有人有明确的答案或经验,什么会导致这种情况?感谢您的帮助。谢谢!
暂无答案!
目前还没有任何答案,快来回答吧!