Tomcat的IO模型实现假设我们把Tomcat当做黑盒子,按照Spring的方式来处理请求,简化的流程是这样的:Tomcat负责读取内核的数据,转换成Servlet对象,然后由Spring框架处理业务后通过Response对象写入返回数据,Tomcat再将返回数据通过内核写入网卡,最后返回到客户端。接下来我们将Tomcat这部分放大,看看黑盒子里是怎么处理的。如图所示,请求的处理分如下几个步骤:Tomcat在启动时会初始化一个ServerSocket用于监听指定端口的IO请求(比如8080)接着启动Acceptor线程,循环调用accept方法接收IO请求(TCP连接建立)将ServerChannel包装成PollerEvent,注册到Poller的event队列中Poller线程循环遍历event队列,将Poller关注的ServerChannel的READ操作注册到Selector中在同一个Poller循环中,用Selector查询ServerChannel的状态,这里一次可以查询到多个ServerChannel的状态,即多路复用将查询到的SelectionKey对应的Serve
会话技术介绍什么是会话?在我们日常生活当中,会话指的就是谈话、交谈。在web开发当中,会话指的就是浏览器与服务器之间的一次连接,我们就称为一次会话。在用户打开浏览器第一次访问服务器的时候,这个会话就建立了,直到有任何一方断开连接,此时会话就结束了。在一次会话当中,是可以包含多次请求和响应的。比如:打开了浏览器来访问web服务器上的资源(浏览器不能关闭、服务器不能断开)第1次:访问的是登录的接口,完成登录操作第2次:访问的是部门管理接口,查询所有部门数据第3次:访问的是员工管理接口,查询员工数据只要浏览器和服务器都没有关闭,以上3次请求都属于一次会话当中完成的。需要注意的是:会话是和浏览器关联的,当有三个浏览器客户端和服务器建立了连接时,就会有三个会话。同一个浏览器在未关闭之前请求了多次服务器,这多次请求是属于同一个会话。比如:1、2、3这三个请求都是属于同一个会话。当我们关闭浏览器之后,这次会话就结束了。而如果我们是直接把web服务器关了,那么所有的会话就都结束了。知道了会话的概念了,接下来我们再来了解下会话跟踪。会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一
Rance
人之幼稚, 不学则愚