当前位置: 首页 > article >正文

无框架简易Java服务器后端

不使用像 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 库。


http://www.kler.cn/a/563065.html

相关文章:

  • S2GAE论文阅读
  • 前端 AJAX 一、AJAX概要
  • Docker01 - docker快速入门
  • 【奥卡姆剃刀原理-如何理解云计算和边缘计算 关键字摘取】
  • 2011-2019年各省人口数数据
  • 用 DeepSeek 打样!KubeSphere LuBan 用 3 天/3 分钟“干掉”大模型部署焦虑
  • 【SRC实战】隐藏商品零元购支付漏洞
  • 让AI“看见”光影变幻!华为云专利解锁动态光源渲染新境界
  • 数据保护API(DPAPI)深度剖析与安全实践
  • 使用快捷键高效管理 VSCode:提升工作效率,告别鼠标操作
  • 统计学中的得分函数(Score Function)是什么?它和Fisher信息矩阵有什么关系?
  • LabVIEW形状误差测量系统
  • Docker基础实践与应用举例
  • 10. docker nginx官方镜像使用方法
  • 剑指 Offer II 032. 有效的变位词
  • 面试基础---ConcurrentHashMap vs HashMap
  • 音效:石头滚动墙壁倒塌滑坡音效素材 Just Sound Effects - Stones and Debris WAV
  • nginx 正向代理与反向代理
  • 计算机毕业设计 ——jspssm508Springboot 的旅游管理
  • 【Linux 进程状态】—— 从创建到消亡的全生命周期