无框架简易Java服务器后端

发布于:2025-02-28 ⋅ 阅读:(181) ⋅ 点赞:(0)

不使用像 Spring Boot 这样的框架,使用 Java 内置的HttpServer(从 Java 1.7 开始引入)来创建一个简单的 Web 后端,处理xxxx/test/query接口,接收 JSON 请求体并返回字符串响应。

示例代码:

import com.google.gson.Gson;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.InetSocketAddress;
import java.net.HttpURLConnection;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

import com.sun.net.httpserver.HttpExchange;
import com.sun.net.httpserver.HttpHandler;
import com.sun.net.httpserver.HttpServer;

public class SimpleWebServer {

    public static void main(String[] args) throws IOException {
        HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
        server.createContext("/test/query", new QueryHandler());
        server.setExecutor(null);
        server.start();
        System.out.println("Server started on port 8080");
    }

    static class QueryHandler implements HttpHandler {
        @Override
        public void handle(HttpExchange exchange) throws IOException {
            if ("POST".equals(exchange.getRequestMethod())) {
                // 读取请求体
                BufferedReader reader = new BufferedReader(new InputStreamReader(exchange.getRequestBody(), StandardCharsets.UTF_8));
                StringBuilder requestBody = new StringBuilder();
                String line;
                while ((line = reader.readLine()) != null) {
                    requestBody.append(line);
                }
                reader.close();

                // 这里可以对请求体进行处理,比如解析JSON数据
                // 目前只是简单打印请求体
                System.out.println("Received request body: " + requestBody.toString());

                // 构造响应
                String response = "这是接口的响应字符串";
                exchange.sendResponseHeaders(HttpURLConnection.HTTP_OK, response.length());
                OutputStream outputStream = exchange.getResponseBody();
                outputStream.write(response.getBytes(StandardCharsets.UTF_8));
                outputStream.close();
            } else {
                // 处理非POST请求
                exchange.sendResponseHeaders(HttpURLConnection.HTTP_METHOD_NOT_ALLOWED, 0);
            }
        }
    }
}

代码中:

  1. 主类SimpleWebServer启动一个 HTTP 服务器,监听在本地的 8080 端口。
  2. QueryHandler类实现了HttpHandler接口,处理/xxxx/test/query路径的请求。
  3. 当接收到 POST 请求时,读取请求体内容,目前只是简单打印请求体内容,然后构造一个字符串响应返回给客户端。
  4. 如果接收到的不是 POST 请求,则返回HTTP_METHOD_NOT_ALLOWED状态码。

上述代码使用了com.sun.net.httpserver包,这是 Java 内部的 API,在一些环境中可能有限制。另外,代码中使用了 Google 的 Gson 库来处理 JSON,需要在项目中引入 Gson 库。


网站公告

今日签到

点亮在社区的每一天
去签到