有关静态文件服务器的编写

详细代码在这:MikeDog

文件结构

  • |–HttpServer.java
  • |–Request.java
  • |–Response.java

具体作用

  1. 首先是三个类,一个是主要的Server类,然后是Request和Response类,后两个是HTTP协议中的两个用于反馈和接受的类。
  2. Request中主要的方法就是从一个HTTP头中抽取出URI,也就是访问路径。代码如下:

    • 主要是因为HTTP协议中的地址信息,以下是一个HTTP请求协议:
    • 从中可以看到URI在第一行的两个空格之间,当然,上面的写法比较风骚,因为这样的写法很容易带来漏洞,因为如果URI并不是标准的,或者说,有人故意发送一个错误的URI,导致解析错误什么的。
  3. 然后看Response中的代码,主要也是写出的,因为从Request中取出目标名称之后就可以从定义的ROOT目录中寻找那个HTML文件,然后要做的就是读出来,写出去。

    • 于是这就成了,其中new File(HttpServer.WEBROOT, request.getUri());,就是读取文件的代码
    • 注意:在HTTP头中,有文件大小的描述,在写出去的时候需要注意修改。如下:
  4. 最后就是HttpServer了,他的作用就是建立Socket连接,然后交给Request解析,然后将结果写入Response.

    • 下面的代码就是过程,简单易懂:
  5. 最后就是我没有想到的一点,也是学到的一个新的方面:

    • 即通过这个方法来获取网站根目录

最终运行结果(浏览器中)

1 Reply to “有关静态文件服务器的编写”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.