首页 > 作文

Java模拟实现HTTP服务器项目实战

更新时间:2023-04-06 02:45:41 阅读: 评论:0

一,http 协议的工作过程

二、http协议格式

1,抓包分析搜狗主页

http请求

首行: [方法] + [url] + [版本]

header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示header部 分结束 body: 空行后面的内容都是body.

body允许为空字符串. 如果body存在, 则在header中会有 一个content-length属性来标识body的长度

http响应

首行: [版本号] + [状态码] + [状态码解释]

header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示header部 分结束

body: 空行后面的内容都是body. body允许为空字符串. 如果body存在, 则在header中会有 一个content-length属性来标识body的长度; 如果服务器返回了一个html页面, 那么html页 面内容就是在body中

2,协议格式总结

三、版本v1

实现一个最简单的 http 服务器.

在这个版本中, 我们只是简单解析 get 请求, 并根据请求的路径来构造出不同的响应.

路径为 /200, 返回一个 “欢迎页面”.

路径为 /404, 返回一个 “没有找到” 的页面.

路径为 /302, 重定向到其他的页面

四、版本v2

在这个版本中, 我们只是简单解析 get 请求, 并根据请求的路径来构造出不同的响应.

在版本1 的基础上, 我们做出一些改进:

把解析请求和构造响应的代码提取成单独的类.

能够把 url 中的 query string 解析成键值对.

能够给浏南宁职业学院览器返回 cookie.

1,创建 httprequest 类

对照着 http 请求的格式, 创建属性: method, url, version, he小儿垂钓唐诗aders.

创建 patameters, 用于存放 query string 的解析结果.

创建一个静态方法 b北京高考状元揭晓uild, 用来完成解析 http 请求的过程.

从 socket 中读取数据的时候注意设置字符编码方式

创建一系列 getter 方法获取到请求中的属性.

单独写一个方法 parkv 用来解析 query string

2,创建 httprespon 类

根据 http 响应, 创建属性: version, status, message, headers, body

另外创建一个 outputstream, 用来关联到 socket 的 out成熟男人的网名putstream.

往 socket 中写入数据的时候注意指定字符编码方式.

创建一个静态方法 build, 用来构造 httprespon 对象.

创建一系列 tter 方法, 用来设置 httprespon 的属性.

创建一个 flush 方法, 用于最终把数据写入 outputstream

3,创建 httprver 类

强化理解cookie

cookie就是一个字符串(里面的内容由程序员自己决定)

cookie从服务器来,服务器会在header中引入一个t-cookie字段,对应的值就会保存在浏览器中

cookie按照域名/地址来存,每个域名/地址有自己的cookie

cookei在后续访问相同的域名/地址的请求,就会自动带上cookie,服务器感知到这个cookie之后就可以在服务器端进行一些逻辑处理

五、版本v3

在版本 2 的基础上, 再做出进一步的改进.

解析请求中的 cookie, 解析成键值对

解析请求中的 body, 按照 x-www-form-urlencoded 的方式解析.

根据请求方法, 分别调用 doget / dopost

能够返回指定的静态页面. 实现简单的会话机制.

1. 创建 hnoisilyttprequest 类

属性中新增了 cookies 和 body

新增一个方法 parcookie, 在解析 header 完成后解析

cookie 新增了解析 body 的流程.

2,创建 httprespon 类

3,创建 httprver 类

4,inx.html

请求中没有cookie

响应中带有cookie字段,此时浏览器就会带有cookie

到此这篇关于java模拟实现http服务器项目实战的文章就介绍到这了,更多相关java http服务器内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-06 02:45:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/75ed1b66d62154cbe1f806502852be26.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Java模拟实现HTTP服务器项目实战.doc

本文 PDF 下载地址:Java模拟实现HTTP服务器项目实战.pdf

标签:属性   方法   版本   空行
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图