Java 多次调用com.sun HttpContext处理程序

Java 多次调用com.sun HttpContext处理程序,java,http,httpserver,Java,Http,Httpserver,我正在尝试制作一个简单的HttpServer,为动态创建的网页提供服务。但是,我注意到,无论我使用什么浏览器,HttpServer的HttpContext的处理程序都会被多次调用。相关代码附于下文: 主类中的主方法: public static void main(String[] args) throws ParseException { try { HttpServer server = HttpServer.create(new InetSo

我正在尝试制作一个简单的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;
    }
主类中的处理程序:

    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;
    }
private static final void httpGet(HttpExchange)引发IOException{
系统输出打印项次(交换);
String[]resource=exchange.getRequestURI().toString().substring(1.split(“/”);
字符串页;

如果(resource.length它被调用了多少次?您发送了多少次请求?您好,调用它的次数似乎是随机的。有时它只被调用了一次,其他时候我看到它被调用了多达四次。我不确定发送了多少个请求;我正在尝试从浏览器访问它。您认为我应该使用它吗?HttpContext根据每个请求执行,这就是为什么我要问您从浏览器中触发了多少个请求