tomcat&servlet

参考:web

Tomcat详解(1)---Tomcat 的顶层结构及启动过程设计模式

Tomcat详解(2)---Tomcat 的生命周期管理浏览器

Tomcat详解(3)---Container 分析tomcat

Tomcat详解(4)---Pipeline-Value 管道安全

Tomcat详解(5)---Connector 分析服务器

详解Servlet多线程

四张图带你了解Tomcat系统架构    总结的很好架构



Tomcat介绍


1、tomcat处理过程

一、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector得到。
二、Connector把该请求交给它所在的Service的Engine来处理,并等待Engine的回应。
三、Engine得到请求localhost/test/index.jsp,匹配全部的虚拟主机Host。
四、Engine匹配到名为localhost的Host(即便匹配不到也把请求交给该Host处理,由于该Host被定义为该Engine的默认主机),名为localhost的Host得到请求/test/index.jsp,匹配它所拥有的全部的Context。Host匹配到路径为/test的Context(若是匹配不到就把该请求交给路径名为“ ”的Context去处理)。
五、path=“/test”的Context得到请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet,对应于JspServlet类。
六、构造HttpServletRequest对象和HttpServletResponse对象,做为参数调用JspServlet的doGet()或doPost().执行业务逻辑、数据存储等程序。
七、Context把执行完以后的HttpServletResponse对象返回给Host。
八、Host把HttpServletResponse对象返回给Engine。
九、Engine把HttpServletResponse对象返回Connector。
十、Connector把HttpServletResponse对象返回给客户Browser。


2、tomcat介绍

Tomcat 是Web应用服务器,是一个Servlet/JSP容器. app

Tomcat 做为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户。而Servlet是一种运行在支持 Java语言的服务器上的组件。 Servlet最多见的用途是扩展Java Web服务器功能,提供很是安全的、可移植的.jsp

一、Connecter组件

一个Connecter将在某个指定的端口上侦听客户请求,接收浏览器的发过来的 tcp 链接请求,建立一个 Request 和 Response 对象分别用于和请求端交换数据,而后会产生一个线程来处理这个请求并把产生的 Request 和 Response 对象传给处理Engine(Container中的一部分),从Engine出得到响应并返回客户。

Tomcat中有两个经典的Connector,

  • 一个直接侦听来自Browser的HTTP请求,
  • 另一个来自其余的WebServer请求。
  • Cotote HTTP/1.1 Connector在端口8080处侦听来自客户Browser的HTTP请求,Coyote JK2 Connector在端口8009处侦听其余Web Server的Servlet/JSP请求。

Connector 最重要的功能就是接收链接请求而后分配线程让 Container 来处理这个请求,因此这必然是多线程的,多线程的处理是 Connector 设计的核心。

二、Container是容器的父接口,

该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。这四个组件是负责关系,存在包含关系。

  • 一个 Engine 表明一个完整的 Servlet 引擎。
  • Wrapper 表明一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。Wrapper 是最底层的容器,它没有子容器了,因此调用它的 addChild 将会报错。
  • Wrapper 的实现类是 StandardWrapper,StandardWrapper 还实现了拥有一个 Servlet 初始化信息的 ServletConfig,由此看出 StandardWrapper 将直接和 Servlet 的各类信息打交道。




servlet介绍


Tomcat 的容器等级中,Context 容器是直接管理 Servlet 在容器中的包装类 Wrapper,因此 Context 容器如何运行将直接影响 Servlet 的工做方式。一个 Context 对应一个 Web 工程,

客户端的请求直接打到tomcat,它监听端口,请求过来后,根据url等信息,肯定要将请求交给哪一个servlet去处理,而后调用那个servlet的service方法,service方法返回一个response对象,tomcat再把这个response返回给客户端。


一、servlet的生命周期是什么?

  • 服务器启动时 (web.xml中配置load-on-startup=1,默认为0) 或者第一次请求该servlet时,就会初始化一个Servlet对象,也就是会执行初始化方法 init( ServletConfig conf )
  • 该servlet对象去处理全部客户端请求,在service( ServletRequest req,ServletResponse res )方法中执行
  • 最后服务器关闭时,才会销毁这个servlet对象,执行destroy()方法。

二、servlet的生命周期中,能够看出,执行的是service方法,为何咱们就只须要写doGet和doPost方法呢?

service( HttpServletRequest req, HttpServletResponse resp) 

这个方法就是判断浏览器过来的请求方式是哪一种,每种的处理方式不同,咱们经常使用的就是get,post,而且,咱们处理的方式可能有不少的内容,因此,在该方法内会将get,post等其余5种请求方式提取出来,变成单个的方法,而后咱们须要编写servlet时,就能够直接重写doGet或者doPost方法就好了,而不是重写service方法,更加有针对性。

因此在编写servlet时,继承httpServlet,只要重写两个方法,一个doGet,一个doPost,其实就是service方法会调用这两个方法中的一个(看请求方式)。


三、Servlet的生命周期

从建立到毁灭:

  • 1).调用 init() 方法初始化
  • 2).调用 service() 方法来处理客户端的请求
  • 3).调用 destroy() 方法释放资源,标记自身为可回收
  • 4).被垃圾回收器回收

由下面能够看见,servlet的init方法和destroy方法,通常容器调用这两个方法之间的过程,就叫作servlet的生命周期。


相关文章
相关标签/搜索