|
11 | 11 | - [x] 程序运行方式 |
12 | 12 | - [x] 功能点 |
13 | 13 | - [x] 说明、运行截图 |
14 | | -- [ ] 关键数据结构、类说明 |
15 | | - - [ ] 名字与对应功能 |
| 14 | +- [x] 关键数据结构、类说明 |
| 15 | + - [x] 名字与对应功能 |
16 | 16 |
|
17 | 17 | # 1. 概览 |
18 | 18 |
|
@@ -319,4 +319,76 @@ HttpServer 与 HttpClient 均采用 Java NIO.2 模型进行开发,使用了 `j |
319 | 319 | - [Target Set](./src/main/java/edu/nju/http/server/target/TargetSet.java) |
320 | 320 |
|
321 | 321 |
|
322 | | -# 4. 源码结构 |
| 322 | +# 4. 代码结构 |
| 323 | + |
| 324 | + |
| 325 | +```java |
| 326 | +main/ |
| 327 | +├── java |
| 328 | +│ └── edu.nju.http |
| 329 | +│ ├── client /* Client Package */ |
| 330 | +│ │ ├── ClientDriver.java // main 函数入口 |
| 331 | +│ │ ├── HttpClient.java // 程序主轴 |
| 332 | +│ │ └── StatusHandler.java // Status code 处理类 |
| 333 | +│ ├── exception /* Exception Package */ |
| 334 | +│ │ ├── InvalidCommandException.java |
| 335 | +│ │ │ // 用于 CLI,提示指令不合法 |
| 336 | +│ │ └── InvalidMessageException.java |
| 337 | +│ │ // 用于 Message Parser,提示解析错误 |
| 338 | +│ ├── message /* Message Package */ |
| 339 | +│ │ ├── HttpMessage.java // 抽象类 |
| 340 | +│ │ ├── HttpRequestMessage.java // 继承 HttpMessage |
| 341 | +│ │ ├── HttpResponseMessage.java // 继承 HttpMessage |
| 342 | +│ │ ├── MessageHelper.java // 工具类 |
| 343 | +│ │ ├── ResponseMessageFactory.java |
| 344 | +│ │ │ // Http Response Message 制造工厂 |
| 345 | +│ │ ├── consts /* Constant Package */ |
| 346 | +│ │ │ ├── Headers.java // Header 常量类 |
| 347 | +│ │ │ └── WebMethods.java // Method 常量类 |
| 348 | +│ │ ├── packer /* Packer Package */ |
| 349 | +│ │ │ ├── MessagePacker.java |
| 350 | +│ │ │ │ // 包装并发送 Http Message |
| 351 | +│ │ │ └── encode |
| 352 | +│ │ │ │ /* Content-Encoding */ |
| 353 | +│ │ │ │ /* & Transfer-Encoding 策略类 */ |
| 354 | +│ │ │ ├── ContentGzipEncodeStrategy.java |
| 355 | +│ │ │ ├── EncodeStrategy.java |
| 356 | +│ │ │ ├── SourceEncodeStrategy.java |
| 357 | +│ │ │ ├── TransChunkedEncodeStrategy.java |
| 358 | +│ │ │ └── TransContentLengthEncodeStrategy.java |
| 359 | +│ │ └── parser /* Parser Package */ |
| 360 | +│ │ ├── CustomizedReader.java // 自制字节流读取器 |
| 361 | +│ │ ├── MessageParser.java // 解析并接收 Http Message |
| 362 | +│ │ ├── contentdecode |
| 363 | +│ │ │ │ /* Content-Encoding 策略类 */ |
| 364 | +│ │ │ ├── ContentDecodeStrategy.java |
| 365 | +│ │ │ └── ContentGzipDecodeStrategy.java |
| 366 | +│ │ └── transdecode |
| 367 | +│ │ │ /* Transfer-Encoding 策略类 */ |
| 368 | +│ │ ├── TransChunkedDecodeStrategy.java |
| 369 | +│ │ ├── TransContentLengthDecodeStrategy.java |
| 370 | +│ │ └── TransDecodeStrategy.java |
| 371 | +│ ├── server /* Server Package */ |
| 372 | +│ │ ├── HttpServer.java // 程序主循环 |
| 373 | +│ │ ├── ServerDriver.java // main 函数入口 |
| 374 | +│ │ ├── TargetHandler.java // Target 处理类 |
| 375 | +│ │ └── target /* Target Package */ |
| 376 | +│ │ │ /* 包含各 Mapping 方法 */ |
| 377 | +│ │ ├──TargetSet.java |
| 378 | +│ │ │ // 抽象类,其他类应继承此类 |
| 379 | +│ │ ├── Common.java |
| 380 | +│ │ ├── Html.java |
| 381 | +│ │ ├── LoginSystem.java |
| 382 | +│ │ └── Mapping.java |
| 383 | +│ └── util /* Utility Package */ |
| 384 | +│ ├── ArgIterator.java // 参数遍历器,用于 CLI |
| 385 | +│ ├── Config.java // 包含各参数信息 |
| 386 | +│ └── Log.java // 调试方法类 |
| 387 | +└── resources |
| 388 | + ├── default_status_text.json // 默认 Status Code 对应文字 |
| 389 | + ├── global_headers.json // 默认 Server Headers |
| 390 | + ├── mime.json // Suffix -> Content-Type 映射 |
| 391 | + └── target_path.json // Target 类注册表 |
| 392 | + //( 用于在 Target Handler 初始化时用 |
| 393 | + // Reflection 自动装配 ) |
| 394 | +``` |
0 commit comments