用Java实现简单的HTTP服务器(二)

用Java实现简单的HTTP服务器(二)

上次我们讲了一些关于HTTP报文的基础知识,接下来我们就讲用Java如何实现

1. 内容分析:

​ 实现一个对于HTTP协议的解析程序,对于HTTP的GET/POST请求进行分析,并给出回应。通过监听端口,实现对本地数据的获取。

2. 需要学习的主要知识

​ Java的ServerSocket库,Socket库的基本应用。Java基本用法,Java字符串解析。Jframe的简单使用。

3. 实验方案

​ 1. 首先我们建立一个服务端,来监听端口,并接受HTTP请求

​ 2. 之后我们编写一个请求处理类,来对我们接收到的HTTP请求进行分析和处理,获取HTTP报文中信息,并对请求信息进行处理

​ 3. 用Jframe实现一个UI界面,来设置我们获取资源的路径,已经存储资源的路径,最后将frame与server进行关联

4.实验步骤

​ 1. 因为我们要实现多线程,所以我们的Server类应该实现Runable来实现多线程。之后我们新建一个ServerSocket对象,来处理我们监听的端口。在while循环中,我们对于监听端口进行accpet(阻塞),直到我们检测到数据过来。有报文传送过来之后,我们将传送过来的报文发送给RequestExecute(数据处理)中,对于报文做进一步的解析。

  1. 我们的RequestExecute也应该继承线程类,实现多线程的操作。一个常规的HTTP报文在上篇文章我们已经讲过,报文的第一行是HTTP的版本号,一般为1.1;之后是请求的URL地址,之后是请求的方法,一般为GET/POST;再接下来是相应的状态码,一般有200,404等;之后是一些压缩格式,文本解析的格式等等……

    因此对于字符串的解析如下:

    ​ a) 首先取出报文的一行,其中如果没有HTTP,则并不是HTTP请求,对其忽略

    ​ b) 之后对于第二行,取出Host后的内容,这个就是报文要请求的题内容,我们将其保存下来

    ​ c) 对于请求的内容分为请求的路径,请求的内容格式以及请求的文件名称,我们对于不同的格式采取不同的响应方式:

    ​ 1) 如果按照所给路径没有找到相应的资源,则响应404,跳转到错误页面

    ​ 2) 如果找到相应的资源,返回资源,响应状态码200(其中不同的资源响应的方式不同,例如:图片格式如jpg, png等用字节流进行输出,文本格式如txt, markdown, html等用字符流进行输出)

    ​ d) 对于我们监听的端口,写了一个简单的页面

  2. 之后我想对于我们的服务器,用Jframe写一个简单的UI,来关联我们的Server。首先设置一些按键,文本框等装饰,之后进行一些功能的事件关联,比如启动服务,停止服务,输出日志等

5. 一些参考资料

​ http://edyfox.codecarver.org/html/java_tutor_httplite.html(可能需要翻墙)

​ https://www.bilibili.com/video/BV1T7411F7hT(手把手教学)

​ https://www.bilibili.com/video/BV14J4114768(一些前端教程)

6.我的源码

​ https://github.com/1190200610/HTTPServer

对于代码中的任何细节可以在评论区问我
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Youtiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值