无框架简易Java服务器后端

ops/2025/2/28 8:26:17/

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

示例代码:

java">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 {@Overridepublic 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.ppmy.cn/ops/161901.html

相关文章

线性调频率连续波雷达测距、测速、成像(一)

系列文章目录 《SAR学习笔记》 《77GHz线性调频连续波雷达》 《信号类型(雷达)——连续波雷达(二)》 《后向投影算法(BPA)-SAR成像算法系列(二)》 文章目录 前言 一、LFMCW雷达…

DeepSeek+Kimi生成高质量PPT

DeepSeek与Kimi生成PPT全流程解析 一、工具分工原理 DeepSeek核心作用:生成结构化PPT大纲(擅长逻辑构建与内容优化)Kimi核心作用:将文本转换为视觉化PPT(提供模板库与排版引擎) 二、操作步骤详解 1. 通…

【Python爬虫(76)】解锁Python爬虫新境界:基于深度学习的网页内容提取

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发…

Windows系统PyTorch环境配置

0、前言 深度学习为什么要配置GPU? GPU(图形处理单元)最初是为图形渲染而设计的,它们擅长处理大量并行计算任务。深度学习模型,特别是卷积神经网络(CNN)和循环神经网络(RNN&#xf…

el-input实现金额输入

需求&#xff1a;想要实现一个输入金额的el-input&#xff0c;限制只能输入数字和一个小数点。失焦数字转千分位&#xff0c;聚焦转为数字&#xff0c;超过最大值&#xff0c;红字提示 效果图 失焦 聚焦 报错效果 // 组件limitDialog <template><el-dialog:visible.s…

Spring AOP 切面打印日志完整版

我的项目使用的是 SpringBoot 3。 要在 Spring Boot 3 项目中使用 AOP&#xff08;面向切面编程&#xff09;来打印接收和响应的参数&#xff0c;如 URL、参数、头部信息、请求体等&#xff0c;可以按照以下步骤操作&#xff1a; 步骤 1: 添加依赖 确保你的 pom.xml 文件中包…

AnythingLLM+LM Studio本地知识库构建

前置操作&#xff1a; 已经安装以下软件&#xff0c;并配置后&#xff1a; DeepSeek-R1-Distill-Llama-8B-Q4_K_M.ggufLM-Studio-0.3.10-6-x64 软件准备&#xff1a; 下载AnythingLLM&#xff1a;AnythingLLM | The all-in-one AI application for everyone 点击"Dow…

《Qt动画编程实战:轻松实现头像旋转效果》

《Qt动画编程实战&#xff1a;轻松实现头像旋转效果》 Qt 提供了丰富的动画框架&#xff0c;可以轻松实现各种平滑的动画效果。其中&#xff0c;旋转动画是一种常见的 UI 交互方式&#xff0c;广泛应用于加载指示器、按钮动画、场景变换等。本篇文章将详细介绍如何使用 Qt 实现…