Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在HttpServer处理程序中使用if语句_Java_Httphandler_Httpserver - Fatal编程技术网

Java 在HttpServer处理程序中使用if语句

Java 在HttpServer处理程序中使用if语句,java,httphandler,httpserver,Java,Httphandler,Httpserver,当用户需要http://localhost:8000/a应显示我是响应消息(并正确显示) 但我想在使用时需要http://localhost:8000/b将显示I am B响应消息 如何在httpServer处理程序中使用if语句 public class httpServerTest { public static void main(String[] args) throws Exception { HttpServer server = HttpServer.create(new

当用户需要
http://localhost:8000/a
应显示
我是响应
消息(并正确显示)

但我想在使用时需要
http://localhost:8000/b
将显示
I am B响应
消息

如何在httpServer处理程序中使用if语句

public class httpServerTest {

public static void main(String[] args) throws Exception {
    HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
    server.createContext("/a", new MyHandler());
    server.createContext("/b", new MyHandler());
    server.setExecutor(null); // creates a default executor
    server.start();
}

public static class MyHandler implements HttpHandler {

    @Override
    public void handle(HttpExchange t) throws IOException { // How use if here?
        String aResponse = "I am A response";
        String bResponse = "I am B response";
        t.sendResponseHeaders(200, aResponse.getBytes().length);
        OutputStream os = t.getResponseBody();
        os.write(aResponse.getBytes());
        os.close();
    }
}
}

它只显示
I am A response
消息。

看起来您正在引用
com.sun.
私有类,因此将来可能无法使用。话虽如此,看起来你想要的是

HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/a", new MyHandler("A"));
server.createContext("/b", new MyHandler("B"));

public static class MyHandler implements HttpHandler {

    private String identity;

    public MyHandler(String identity) {
        this.identity = identity;
    }

    @Override
    public void handle(HttpExchange t) throws IOException { // How use if here?
        String response = "I am " + identity + " response";
        t.sendResponseHeaders(200, response.getBytes().length);
        OutputStream os = t.getResponseBody();
        os.write(response.getBytes());
        os.close();
    }
}

然后您可以说
if(t.getRequestURI().getPath().startsWith(“/a”){…}else{…}

如何获取客户端ip地址?我使用这个:
t.getRemoteAddress().getAddress()
但显示:
[/0:0:0:0:0:0:1]
这是正确的调用--该地址是IPv6中的环回地址(即您正在测试自己的计算机或使用通过本地主机连接的代理)