一个简单的Servlet容器

文件结构

  • |– HttpServer.java
  • |– Request.java
  • |– Response.java
  • |– ServletProcessor.java
  • |– StaticResourceProcessor.java
  • |– IndexServlet.java

文件的作用

  1. HttpServer.java

    • 这个类的作用和之前的静态类的服务器作用一样,唯一不同的一点就是在区分静态请求和动态请求上。
    • 不过这边也是有一些问题的,因为如果我们的路径并不是包含”servlet”,则这方法也失去了他的意义。
  2. Request.java

    • 这边需要注意的是,这边需要实现ServletRequest接口
    • 这个类的主要的作用就是从用户的请求中获取数据,其他的,也就不在这个程序中进行获取了
  3. Response.java

    • 这个类的主要作用就是将数据写回客户端。代码什么的也就是同之前的,没什么新的。
  4. ServletProcessor.java

    • 这个类的就是一个ClassLoader。
  5. StaticResourceProcessor.java

    • 这个类的作用就是一个分发器,为了保持接口的统一都使用了process(Request, Response)。

个人感悟

  1. 这样的一个服务器的最中心的作用就是一个分发器,将用户的请求分发,按照静态文件和动态文件进行分类
  2. 然后,所谓的负载均衡,和分布式,都可以通过这个服务器进行转发。
  3. 通过写这个服务器也更加深的理解了HTTP协议。这一点下一篇文章继续写。

后续的问题

  1. 这上面的代码是有安全风险的,因为这样我们就把这个Request和Response的公有方法就暴露在程序员的视线里
  2. 一个比较好的解决办法就是适配器模式,在传达对象时,通过一个适配器将对外的接口固定,这样才能做到安全。

Leave a Reply

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