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中的环回地址(即您正在测试自己的计算机或使用通过本地主机连接的代理)