我想用静态内容实现一个简单的 Web 服务器(如 apache)。服务器必须通过用户名和密码或 IP 地址提供身份验证。
源代码或任何有用的教程将非常有帮助。
感谢您的回答。
如果你想要它真的很简单,你可以试试 JDK 1.6 com.sun.net.httpserver.HttpServer
,它也有基本的身份验证机制:
HttpServer server = HttpServer.create(new InetSocketAddress(8888), 0);
HttpContext cc = server.createContext("/test", new MyHandler());
cc.setAuthenticator(new BasicAuthenticator("test") {
@Override
public boolean checkCredentials(String user, String pwd) {
return user.equals("test") && pwd.equals("test");
}
});
server.setExecutor(null); // creates a default executor
server.start();
如果您希望它像 apache 一样简单,请尝试 Jetty http://www.eclipse.org/jetty/它是一个真正的 Web 服务器,易于使用,并且可以嵌入到 Java 独立应用程序中。
因为Java 1.6
,有一个内置的HTTP server
. 这是一个例子
package com.example;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;
public class Test {
public static void main(String[] args) throws Exception {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/test", new MyHandler());
server.setExecutor(null); // creates a default executor
server.start();
}
static class MyHandler implements HttpHandler {
public void handle(HttpExchange t) throws IOException {
String response = "This is the response";
t.sendResponseHeaders(200, response.length());
OutputStream os = t.getResponseBody();
os.write(response.getBytes());
os.close();
}
}
}
执行它并转到http://localhost:8000/test
,您将看到响应
您可以查看NanoHTTPPD的源代码。这是一个用 Java 编写的非常简单的 Web 服务器。
您可能需要的技术称为Spring 3 security
. 它是应用程序经常使用的框架java EE
。尝试谷歌它。我相信你会发现很多有用的信息和教程。
如果您想在 glassfish 服务器中创建 JEE6 应用程序,可以尝试使用 Realm。看看http://docs.oracle.com/javaee/6/tutorial/doc/bnbxj.html