以下是一个简化的代码示例,展示了如何使用HttpServer
类创建一个简单的登录页面,并在登录成功后设置一个Cookie,然后重定向到个人简历页面。
import com.sun.net.httpserver.HttpServer;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpExchange;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class SimpleLoginServer {
public static void main(String[] args) throws IOException {
HttpServer server = HttpServer.create(new InetSocketAddress(8000), 0);
server.createContext("/login", new LoginHandler());
server.setExecutor(null); // 使用默认执行器
server.start();
}
static class LoginHandler implements HttpHandler {
@Override
public void handle(HttpExchange exchange) throws IOException {
String requestMethod = exchange.getRequestMethod();
if ("GET".equalsIgnoreCase(requestMethod)) {
// 显示登录页面
showLoginPage(exchange);
} else if ("POST".equalsIgnoreCase(requestMethod)) {
// 处理登录请求
processLoginRequest(exchange);
}
}
private void showLoginPage(HttpExchange exchange) throws IOException {
String response = "<html><body><form action='/login' method='post'>" +
"<input type='text' name='username' placeholder='Username'/>" +
"<input type='password' name='password' placeholder='Password'/>" +
"<input type='submit' value='Login'/>" +
"</form></body></html>";
exchange.sendResponseHeaders(200, response.length());
OutputStream os = exchange.getResponseBody();
os.write(response.getBytes());
os.close();
}
private void processLoginRequest(HttpExchange exchange) throws IOException {
// 简化处理,直接返回登录成功状态
Map<String, List<String>> params = exchange.getRequestBody();
String username = getParameterValue(params, "username");
String password = getParameterValue(params, "password");
if ("user".equals(username) && "pass".equals(password)) {
// 登录成功,设置Cookie
exchange.getResponseHeaders().add("Set-Cookie", "user=" + username +