加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
WebServer流程日志.txt 1.94 KB
一键复制 编辑 原始数据 按行查看 历史
V1版本:
在此版本我写出了HttpServletRequest的相关解析工作,具体流程如下:
服务器循环接收accept,接收到一个后便开启一个线程,handler,handler里边完成对请求的全部解析
首先明确请求发送过来是包含三部分的:请求行,消息头,请求正文,我们的HttpServletRequest就是要对其进行分析,
将对应的信息提取出来存起来,便于后续处理
其中,请求头有三部分组成,请求方法 uri 协议,我们在方法中定义三个变量,分别用于存放这三个值,
再然后,当使用get方法请求时,uri中会有参数部分,我们需要对uri进一步处理,将参数部分的每一组值存入Map里,供后续使用
再有就是正文,当 请求使用POST方法发起时,参数部分是位于请求正文的,因此我们每次解析请求的时候也需要解析正文,判断有无正文存在就是
看消息头中有无“Content-Length”这个Key,有就可以进行后续处理,注意参数部分的解析抽成方法,可以对位于uri和正文的消息都具有很好的适配性
本次的技术细节主要有,HTTP协议在传输过程中使用的字符集是OSI 8859-1,是不支持中文的,当接收穿过来的信息时有两种:
一种是位于uri的,另一种是位于正文的,
位于uri的参数穿过来本身就是解析好的OSI 8859 -1编码,可以直接解析参数,注意在转换参数时先按UTF-8解码(这是抽出的的方法应具有的一段代码)
对于正文中的参数,我们是以字节的形式读取的(此时数据是010101...),
首先要按OIS 8859-1转码为欧洲字符集(汉字的表达是%E6%9D%8E%E9%91%AB%E6%B3%A2)
之后在进行参数解码(方法中第一步就是再按UTF-8)解码
解码完毕后同一装入Map等待后续处理
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化