servlet原理

转载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生命周期
所以,真正管理 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实例
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值