您的位置:首页 > 运维架构 > Tomcat

tomcat工作原理

2020-02-16 05:30 344 查看

tomcat工作原理


今天嘞,我们来粗略的谈一下tomcat的工作原理,希望有错误的地方请大家积极指出!

铺垫知识

emmm,在说之前我先说一下基本的铺垫知识吧。

  • tomcat是使用java语言编写的
  • 计算机依靠网卡设备和外界交互,网卡将电信号转变为物理信号(0,1),网卡在数据转化完毕之后将数据交给端口
  • 一台电脑最多可以开216个端口,不会出现端口不够用的情况,因为端口开的过多,内存会首先崩掉,所以这么多端口是完全够用的,端口在物理上只有一块地址,逻辑上有很多端口
  • 电脑上的程序和网络进行数据交换,必须要通过端口进行交换
  • 任意
    两个独立
    的程序,
    不能同时
    占用一个端口,一个独立运行的程序是一个进程,
    两个线程
    不能同时
    占用一个端口,但是一个进程内的线程可以做到数据共享,进程之间做不到数据共享
  • 端口上来了数据之后,程序通过监听端口来得到数据,程序监听是每隔一段时间看一次,称为
    轮询
    ,发现数据之后就将数据取走。轮询通过while循环来实现
  • tomcat有
    接收请求
    返回请求
    的作用
  • Socket(套接字)用来
    监听端口
    接收数据
    发送数据
    ,socket和网卡直接交互,数据传输的各种标记是由socket来加的,即
    组装协议格式
    。在接收数据时,将数据进行提取,去掉各种标记
  • tomcat的代码里包含了socket的实现,因为socket要不断进行轮询,所以这种线程是一直存活的,里面包含了一个死循环,在触发某个条件时,循环终止,进程也结束。
  • tomcat
    请求分发
    功能:tomcat接收到请求信息,将请求分配到相应的servlet里面去,这种功能称为请求分发
  • tomcat如何把消息传到servlet中:tomcat和网站都是用java写的,tomcat和这些网站最终会合成一个项目,tomcat中有main方法,可以调用网站中的各种方法
    铺垫知识暂时想起来了这些,下面来看一下tomcat的工作原理

tomcat工作原理

  • tomcat会扫描
    webapp
    文件里的所有Java文件,拿到所有java文件的路径,将
    带有@webServlet
    注解信息的java文件挑选出来,挑选出来之后存到
    map结构
    中,举个例子:假如我们写了一个名为TestDemoServlet的servlet,并且这个servlet在本地的路径是com.qcby.servlet.TestDemoServlet,那么map中就会这样存放(“TestDemoServlet”:“com.qcby.servlet.TestDemoServlet”)
  • tomcat中的main函数执行下述功能:
main(){
socket监听端口...(此处为轮询)
拿到网络数据,数据是字符串的形式str,str1
HttpServletRequest request = 字符串处理方法(str);
HttpServletResponse respons = 字符串处理方法(str1);
String url=request.getHearder("Request URL");//这是经过处理后的url,socket取出各种标记,
//并去掉域名,处理之后的url就是要访问的目标servlet
使用Map.get(url);拿到本地路径
通过本地路径对目标servlet进行实例化:
"com.qcby.servlet.TestDemoServlet"------>class------->newiInstance//这就要用到反射了,因为访问的servlet具有不确定性,
//所以使用反射可以动态生成各种类的实例
//TestDemoServlet ob=new TestDemoservlet();反射的效果和这句话一样
生成实例之后,利用代理执行类中的doGet和doPost方法:ss.invoke();
执行完之后,将携带的数据发送给socket,由socket组装协议格式,组装完成之后向外界发送数据
}

tomcat工作流程图

为了以防本人说不清楚,所以下面奉上本人画的流程图:

就是这样的一个过程啦!

  • 点赞
  • 收藏
  • 分享
  • 文章举报
ZhaoAoc 发布了10 篇原创文章 · 获赞 0 · 访问量 147 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: