tomcat工作原理(基本过程)

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工作流程图

为了以防本人说不清楚,所以下面奉上本人画的流程图:
在这里插入图片描述
就是这样的一个过程啦!

  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值