# homework_backend **Repository Path**: lunaneko/homework_backend ## Basic Information - **Project Name**: homework_backend - **Description**: 软件工程/JAVA作业:一个可重载路由的后端软件。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-29 - **Last Updated**: 2025-10-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LunaServer LunaServer是一个基于Java的轻量级HTTP服务器,具有图形界面管理功能和动态路由加载能力。它支持通过外部Java文件定义路由处理逻辑,并具备热重载功能,无需重启服务器即可更新路由行为。 - `Assisted by Tongyi LINGMA` ## 功能特点 - **轻量级HTTP服务器**:基于Java内置的 `com.sun.net.httpserver` 实现 - **图形界面管理**:提供GUI管理面板,方便配置服务器参数和路由 - **动态路由加载**:支持从外部Java文件动态加载路由处理逻辑 - **热重载功能**:路由文件修改后可自动重新编译加载,无需重启服务器 - **数据库连接**:内置PostgreSQL数据库连接支持 - **JSON支持**:使用Gson库处理JSON数据 - **配置管理**:通过JSON文件管理服务器配置 ## 目录结构 ``` . ├── src/ # 源代码目录 │ ├── LunaServer/ # 服务器核心代码 │ └── Main.java # 程序入口 ├── routes/ # 外部路由文件示例 ├── lib/ # 依赖库(默认包含Gson和PostgreSQL) ├── server-config.json # 服务器配置文件 ├── build.bat, build.sh # 构建脚本 └── run.bat, run.sh # 运行脚本 ``` ## 核心组件 ### LunaServer HTTP服务器核心类,负责: - 启动和管理HTTP服务器 - 处理内置路由(如登录、用户数据处理) - 管理外部路由的加载和热重载 - 数据库连接管理 ### ServerManagerGUI 图形界面管理面板,提供: - 服务器启动/停止控制 - 端口配置 - 数据库连接配置 - 路由管理(添加/删除/重载) - 日志显示 ### RouteHandler 路由处理引擎,支持: - 从外部Java文件动态加载路由逻辑 - 自动编译和类加载 - 热重载机制 ### ConfigManager 配置管理器,负责: - 读取和保存服务器配置 - 管理路由依赖类路径 ## 快速开始 ### 构建项目 Windows: ``` build.bat ``` Unix/Linux/Mac: ``` chmod +x build.sh ./build.sh ``` ### 运行服务器 命令行模式: ``` java -cp "src;lib/*" Main ``` 图形界面模式: ``` java -cp "src;lib/*" Main -gui ``` 或者使用运行脚本: ``` run.bat ``` ## 路由系统 ### 内置路由 - `/` - 根路径,返回欢迎信息 - `/login` - 登录处理路由 - `/user` - 用户数据处理路由 ### 外部路由 可以通过GUI或配置文件添加外部路由。外部路由需要满足的要求是: - 一个Java文件,包含 `public static String handleRequest(HttpExchange exchange)` 方法 - 该方法应该处理请求并返回 JSON 格式的响应字符串 - 在GUI中添加路由映射或在配置文件中配置,编译期间会启动。 - 如果路由需要第三方库,需在 示例外部路由文件: ```java import com.sun.net.httpserver.HttpExchange; import java.io.IOException; import com.google.gson.Gson; import java.util.HashMap; import java.util.Map; public class SampleRoute { public static String handleRequest(HttpExchange exchange) throws IOException { Map responseMap = new HashMap<>(); responseMap.put("message", "Hello from external route!"); Gson gson = new Gson(); return gson.toJson(responseMap); } } ``` ## 配置文件 服务器配置存储在`server-config.json`文件中,该文件会在运行时被动态修改: ```json { "server.port": "6003", "database.url": "jdbc:postgresql://127.0.0.1:1980/postgres", "database.user": "postgres", "database.password": "lunamoon", "routes": {}, "routeDependencies": { "classpath": [ "src", "lib/gson-gson-parent-2.13.2/gson/target/classes", "lib/gson-gson-parent-2.13.2/gson/lib/*", "." ] } } ``` ## 依赖 - Java 21 (LTS) 或更高版本 - Gson 2.13.2(JSON 处理) - PostgreSQL JDBC 驱动 ## 许可证 MIT License