调用另一个服务器的接口请求服务器的数据用list接收并解析_手写tomcat服务器(一)...

本文详细介绍了如何手写Tomcat服务器,包括Tomcat的运行流程和整体架构。首先,阐述了Tomcat接收并解析请求的过程,然后通过DOM4J解析XML配置文件,利用反射创建Servlet对象。接着,构建了servletContext容器存储映射关系,并封装了Request_method_url。最后,讲解了各组件间的关系,以及如何启动和关闭服务器。
摘要由CSDN通过智能技术生成

一 Tomcat运行流程

客户浏览器发出要求访问特定的Servlet的请求

1) Tomcat服务器接收dao客户请求并解析

2)Tomcat服务器创建一个ServletRequest对象,在ServletRequest对象中包含了

客户请求信息即其他关于客户的信息,如请求头请求正文,以及客户端的IP地址等

3) Tomcat服务器创建一个ServletResopnse对象

4) Tomcat服务器调用客户端所请求的Servlet的service'服务方法,并且把

ServletRequest对象和Servletresponse对象作为参数传给该服务方法

5) Servlet从ServletRequest对象中可获取客户的请求信息

6) Servlet利用ServletRepomse对象来生成响应结果

7) Tomcat 服务器把 Servlet 生成的响应结果发送给客户。

a9802be780b9717ef46c3bd83acf6f77.png

二 手写tomcat服务器

1 整体架构和接口

1.1 整体架构和接口

9c884c2f8d972f696c696842e5dcdebc.png

1.2 编写XML文档

f1f6f27a57dbdf9b39b2007efb66fcd6.png

1.3 编写IOCloseUtil类

aef291309eb0b292b61a8a63edf1b7a9.png

2 DOM4J解析配置文件

2.1 Entity实体类的编写

285d6222835d47a5d36f2d11ef60785f.png

2.2 Mapping实体类的编写

8a946957942ae89bc4db106a432c0c34.png

2.3 解析XML文件

7332a911cb3ab73017c1b541423aa4a0.png

4bb4f3aef8b91a2684d2979ab3b5d35a.png

ca617d22f2cb603d0c388788594d9bc1.png

9eb19e5803f5f3b5cac8c40cd43a9e92.png

3 反射创建servlet

3.1 编写servletContext对象

解析xml的目的就是为了创建servlet对象,利用从request中请求的url,获取

servlet-name,再用servlet-name获取类的权限顶类名,从而创建servlet对象,而

mapping和Request 两个类中使用的是list集合,将其转化为map集合,存储映射

关系,就有了servletContext类。

3.2 servlet上下文,就是一个容器,用来存储映射关系(定义集合)

3732192b9ed56274211a5a4c572bbca9.png

3.3 编写WebApp类

调用DOM4返回解析后的集合,遍历集合,转换为map 根据url创建servlet

f26f2fa887c764bb139b23044c737bbf.png

1fc9cc6075f1a202e367442f94e7e43a.png

4 封装Request_metho_surl

4.1 编写server (启动服务 关闭服务)

357e25b53ba75844421566039b428dd1.png

4.2 编写HTML

fc00cd4d4047bd97fdac840ed6fee334.png

4.3 封装Request_method_url

5905598cce41f931e82131c8f2906f62.png

0e2313602a781a0d2572aa094251282c.png

994cbf7e839c7ebda8a415bcc6b0fefa.png

5 类之间的关系

027a09f3fd195ad481a54f1d0bae6353.png

e0027b8ffe0c8430a0759c38468c7dd2.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值