Java课程设计——使用JAVA实现简易HTTP服务器(2人) Java课程设计——使用JAVA实现简易HTTP服务器项目简介项目简介项目功能架构图项目采用技术功能需求分析核心功能分析功能需求分析额外需求项目亮点创新点项目结构亮点项目稳定性与容错性亮点功能亮点项目规范亮点项目美化亮点团队成员负责模块主要功能截图、系统演示操作视频及静态修正主要功能截图及说明core包http包系统演示操作视频静态修正过程git项目git地址内含readme.md使用Issue进行任务发布及团队成员git提交记录截图总结项目简介项目简介本项目为2 人小组 Java 课程设计使用Java Socket网络编程实现简易的多线程HTTP服务器。可以正常响应客户端(浏览器)的GET与POST根据浏览器指定访问的URL获取服务器上相应的网页文件(.html)并返回同时还进行了页面设计与美化以及技术上的拓展创新。项目功能架构图下图为本项目分包分层的功能架构图项目采用技术1.底层网络Java Socket、ServerSocket、IO 字节流、线程池多线程并发处理客户端2.Web 协议HTTP1.1 协议解析GET/POST 请求处理3.设计模式工厂模式分层处理请求、面向对象、分包独立开发4.持久化本地文件存储 HTML 静态页面、服务器访问日志5.第三方工具阿里 Java 代码静态扫描工具6.协作工具双人分模块开发使用git提交代码和issue发布任务分支协同完成代码功能需求分析核心功能分析本项目核心功能为实现简易HTTP服务器。项目核心功能实现网络监听、多线程并发、请求解析、页面响应等。系统支持多客户端浏览器并发访问、解析HTTP协议、自动返回对应界面或错误提示页面。功能需求分析1.底层功能需求1实现多线程并发处理需求支持多浏览器同时访问、同时处理解决单线程所具有的阻塞问题。2本项目需要对端口进行绑定、对客户端实现监听持续监听客户端浏览器的TCP连接请求并为不同客户端分配独立的线程。3本项目需要对每一次的浏览器访问都实现独立处理单次运行异常不能影响整体服务器的运行因此需要对客户端每次访问的会话生命周期进行管理。4本项目需要实现异常容错与稳定运行的需求接收由业务模块中返回的提示错误页面。2.业务功能需求(1实现 HTTP 报文解析需求本项目需要读取浏览器原始 HTTP 报文自动解析提取请求方式、访问路径、协议信息等同时对GET、POST参数进行解析接收从底层模块中传递来的客户端数据实现解析业务要求。(2实现静态资源响应需求本项目需要根据用户输入的请求路径读取到对应的HTML页面并组装以标准HTTP响应头与页面显示内容进而返回完整的HTTP响应数据。(3实现对错误访问的响应本项目需要实现对错误数据的相应。当用户访问不存在的资源路径或使用不允许的请求方式时应该予以识别并返回相应的提示信息以便用户更改请求。额外需求1.兼容性需求要实现多平台兼容的需求就要求本项目不通过IDE等软件运行而是打包成jar文件在任何平台和软件上都可稳定运行兼容性强。2.稳定性需求本项目需要能够稳定运行因此在本项目中采用了资源自动释放、异常捕捉以及拦截空请求等机制并给出提示语句以便用户更改指令。3.可扩展性需求为了方便在后期对项目功能进行扩展实现可扩展性需求本项目采用分包分层架构使核心功能与业务功能耦合程度低以便扩展。4.可维护性需求为了实现项目的高可维护性在项目设计过程中对关键的类与方法进行了注释并生成注释文档且进行明确的代码分工便于团队维护与错误纠正。项目亮点创新点项目结构亮点1.本项目使用分层分包结构core包与http包分包设计使项目开发可以同时进行使网络监听、线程并行等底层功能与HTTP协议解析、页面响应等业务功能隔离设计团队协作效率高。2.使用线程池实现多线程并发结构解决了单线程阻塞缺陷的问题统一管理客户端的连接实现资源复用不需要频繁创建和销毁线程。3.单独设计ServerConfig类用于固定项目常量参数使得别类的设计不再有零散的数字数据结构更清晰。且在后期若需要对常量进行修改不需要更改核心代码只需要对ServerConfig类中的常量进行修改可维护性高。项目稳定性与容错性亮点1.本项目实现了多种异常捕获如网络连接超时异常、输入输出读写异常等且使用了分级异常捕获当单次浏览器访问出现异常时只会终止当前访问不会使整个服务器系统报错使项目运行更加稳定容错性更高。2.本项目实现了统一的资源关闭方法且在关闭时分层释放资源所以在长期运行时不会出现内存相关问题。3.本项目实现了对空请求和无效连接的提前检测避免运行时的错误。4.本项目实现了对多个访问时可能出现的错误的检测如错误的请求方式、错误的访问路径、访问频繁等。功能亮点一.底层模块1.对客户端访问进行日志化处理保存访问数据以供查询。可以自动记录每一次客户端访问的信息包括访问时间、客户端IP地址以及要访问的资源路径。2.对实现的功能进行可视化打印方便进行出现错误时的代码定位。3.实现连接超时自动结束机制为Socket设置读取时长限制当长时间无数据传输时自动结束线程避免了对线程池的占用。4.实现请求耗时自动统计单次会话结束后自动计算完整处理耗时区分秒、毫秒单位输出全部运行结束后也会输出耗时直观观测服务器处理每条请求的性能消耗便于性能优化分析。二.业务模块 1.分层校验双层防护资源不存在路径读取不到html文件时自动加载404.html页面返回 404 状态码提示用户资源缺失请求方式非法当使用POST 访问非表单路径或提出put/delete等不允许的请求时加载405.html页面返回 405 状态码两种异常场景对错误分别响应给用户清晰提示完成错误响应业务需求。2.采用原生 IO 读取静态页面搭配 try-with-resources 语法自动释放文件流无需手动关闭资源从底层避免文件占用、内存泄漏问题程序长时间运行稳定性更强。4.用户填完表单提交后服务器得到填写的账号、密码替换结果页面里预设的文字并展示出来。不需要搭建数据库存数据靠简单文替换就能实现提交内容回显。5.服务器只允许两种正常访问方式GET 看网页、POST 提交表单。如果用户用 DELETE、PUT 这类别的方式访问页面服务器会直接拦截弹出错误页面限制了不规范的访问操作。6.用户只输入网址根路径时程序会自动匹配首页文件不用手动输入 index.html同时统一处理路径/防止拼接路径出错用户访问更方便。项目规范亮点1.对关键性类和方法进行代码注释并生成注释文档增强了代码的可读性与可维护性方便项目成员之间的同步与交接。2.严格遵守了HTTP协议要求的请求头格式以及标准化返回。项目美化亮点在实现标准化功能的基础上还对页面进行了美化设计使项目更美观、简洁大方便于清晰查看结果具有创新性。1.全部页面统一基础排版样式字体、间距、配色协调统一首页、表单页、报错页面视觉风格保持一致整体观感整洁规范。2.表单页面布局规整输入框、提交按钮分区摆放输入区域大小适配文字填写操作界面直观清晰降低用户操作成本。3.404、405 错误页面单独设计提示文案搭配清晰文字说明问题原因页面不会空白单调用户能快速明白访问失败的缘由。4.表单提交结果页做了内容分区区分标签文字与用户填写的数据展示层次分明提交的账号、备注信息一目了然。5.页面适配中文显示搭配后端统一 UTF-8 编码处理所有文字无乱码标题、提示文字阅读舒适。6.按钮添加基础交互视觉区分普通按钮与功能按钮有明显区分页面交互感更强区分可点击区域。团队成员负责模块成员负责模块功能说明组长HttpServer类服务启动入口端口监听线程池管理全局监控服务启停与资源释放组长ClientHandler类单客户端连接线程Socket IO 读写请求路由限流、白名单和封禁校验分发页面响应组长ServerConfig类全局统一配置常量IP统计容器页面白名单、并发限制缓存容器定义组长LogUtil类日志文件初始化分级控制台打印访问日志、异常日志和停机汇总日志持久化组员HttpRequest类拆分请求行与请求头解析GET链接参数、读取 POST 表单内容并完成 URL 解码提取客户端完整请求信息组员HttpResponse类管理响应状态码、拼接响应头部、装载页面内容作为响应体组装完整合规的HTTP报文返回浏览器。组员HttpParseUtil类通用解析工具类提供字符串分割、表单参数提取、换行符处理等基础公用解析方法。组员RequestHandlerFactory类基于工厂模式识别请求类型分别分发GET静态页面访问、POST表单提交两套处理流程。组员FileUtil类读取本地html页面文件适配访问路径匹配捕获文件缺失异常统一采用 UTF-8 编码读取避免中文乱码。主要功能截图、系统演示操作视频及静态修正主要功能截图及说明对实现主要核心功能的代码进行统一整合。core包1.HttpServer类核心功能开启端口监听、多线程池处理客户端、后台清理IP缓存、运行监控、程序停止时释放资源。2.ClientHandler类核心功能IP 限流、封禁、路径安全校验、解析HTTP请求、返回页面响应配合异常反馈3.ServerConfig类核心功能集中管理端口、线程、限流、黑白名单、全局IP统计容器4.LogUtil类核心功能控制台彩色日志、本地文件持久化访问/异常日志、自动创建资源文件夹http包1.FileUtil类转换网页访问路径拼接本地真实文件地址校验文件合法则调用读文件方法无文件返回null用UTF-8编码读取HTML文件拼接页面全部文字并返回读取失败返回空。2.HttpParseUtil类分割请求行、请求头字符串解析表单参数做 URL 解码判断是 GET 还是POST校验表单类型、读取请求头信息3.HttpRequest类解析HTTP请求提取请求方式、路径、GET与POST表单参数4.HttpResponse类封装HTTP响应设置状态码、响应头与页面内容拼接完整响应报文根据路径读取页面资源自动返回200正常页面或404页面。5.RequestHandlerFactory类分发处理各类请求GET无资源返回 404POST替换占位符渲染页面非法请求返回 405。系统演示操作视频系统功能演示操作视频静态修正过程1.首先消除原生警告得到初步修正后的代码2.使用阿里巴巴静态修正工具进行修正并再次扫描可以看出已无错误对代码进行静态扫描修正完成。git项目git地址内含readme.md项目git地址使用Issue进行任务发布及团队成员git提交记录截图使用Issue进行任务发布截图成员git提交记录截图组长负责core包底层模块组员负责http包业务模块总结本项目采用 Java 实现轻量多线程 HTTP 服务器代码分 core、http 两个核心包分层开发。http 包封装 HTTP 通信基础实体HttpRequest完成原始请求报文解析提取请求路径、请求方法HttpResponse封装响应状态码、页面内容输出逻辑RequestHandlerFactory作为工厂类统一分发请求处理标准化 HTTP 收发流程。core 包实现服务调度与工具能力HttpServer为主服务入口借助线程池并发处理 Socket 连接搭配定时任务清理 IP 访问缓存实现限流封禁ClientHandler处理单客户端请求完成路径校验、异常拦截LogUtil类统一管理日志持久化自动创建文件目录。开发中依据阿里代码规范整改所有警告抽取重复代码、清理冗余未使用方法、修复 sleep 繁忙等待、文件返回值忽略等问题。项目完整实现请求解析、并发调度、访问管控、日志记录整套 Web 服务流程代码结构清晰规范。通过本次项目设计我们对Java的基础知识进行了练习获得了更深刻的理解同时学习了新的关于HTTP协议以及页面设计的知识为后续的学习打下了坚实基础。