自己写一个web服务器(手动解析HTTP协议+mvc功能)

自己实现了一个轻量级的嵌入式HTTP服务器,Java语言。

主要功能如下:
  1. 使用nio处理socket连接。
  2. 提供类似spring mvc的功能, 包括@Controller,@RequestMapping,参数注入等功能。
  3. 不用三方库,纯手动解析HTTP协议。

项目总计1700行java代码, {理解原理 + 不实现}三天左右,{理解原理 + 自己实现}需要一周左右。

写出这个web服务器的步骤:
  1. 学习nio相关知识

简单来说nio是用来处理socket连接的,包括:

  • 建立服务端和客户端之间的连接
  • 从socket读数据(读http request的数据)
  • 往socket写数据(写http response的数据)

:服务端监听客户端发起的连接请求。
客户端定义: 浏览器、postman插件、idea的Test RESTful Web Service插件、自己写的发送http请求的一段代码等等,能够发出http请求的东西,都可以看成客户端。

nio学习路线:通道 -> 选择器 -> 缓冲区(千万不要按书中的顺序一开始就学缓冲区API, 头会晕的)。学完后用nio处理的这一部分完整代码在这。目前没有实现keep-alive,一个线程(选择器所在线程)管理多个通道(nio核心理念)。读取完一个请求后开一个线程(RequestHandler类)处理http请求。

  1. 解析http请求(parse http request)
  2. 生成http响应(generate http response), 因为实现了类似spring-mvc的功能,所以要扫描所有被@Controller注解的类和该类中被@RequestMapping注解的方法,找到对应的方法去执行请求,方法返回com.light.http.responses.Response。
  3. 将响应写回给客户端

References

  1. HTTP规范
  2. nio教程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值