转载https://www.cnblogs.com/lxq0309/p/3672838.html
1.Web Client向Servlet容器(Tomcat)发出Http请求;
2.Servlet容器接收Web Client的请求;
3.Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中;
4.Servlet容器创建一个HttpResponse对象;
5.Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给HttpServlet对象;
6.HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息;
7.HttpServlet调用HttpResponse对象的有关方法,生成相应数据;
8.Servlet容器把HttpServlet的响应结果传给Web Client。
所以,真正管理 Servlet 的容器是 Context 容器,一个 Context 对应一个 Web 工程(非用户),新建一个servlet的时候,就会新建一个context的,同时加载它所需要的config,容器的配置属性由应用的 web.xml 指定。tomcat是基于观察者模式设计的,
与 Servlet 主动关联的是三个类,分别是 ServletConfig、ServletContext 、ServletRequest 和 ServletResponse。这三个类都是通过容器传递给 Servlet 的。ServletConfig:获取这个 Servlet 的一些配置属性。ServletContext :交易场景就由 ServletContext 来描述,而定制的参数集合就由 ServletConfig 来描述。
启动tomcat时,Servlet容器被创建,每一个web应用都会对应于一个context容器。客户端发起了一次请求的时候,请求根据url地址指定的ip和端口号就能够找到tomcat服务器,然后根据后面工程名也能找到对应的web服务,此时创建一个线程,根据ServletRequest进行请求的发起,servlet只是作为控制器而存在,然后根据页面的请求内容,查找相应的服务,将结果通过servletResonse返回给客户端。注意这里是每个请求一个线程,不是每个用户一个线程,容器并不关心是谁发起的请求。servlet一般只会存在一个实例,是单例模式设计的,如果容器使用了群集,即将容器布置在多个JVM上,那么每个JVM也只会有一个Servlet实例
servlet原理
最新推荐文章于 2023-06-09 11:44:58 发布