servlet工作原理_Servlet 生命周期、工作原理
- Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁。
- init():在Servlet的生命周期中,仅执行一次init()方法。它是在服务器装入Servlet时执行的,负责初始化Servlet对象。可以配置服务器,以在启动服务器或客户机首次访问Servlet时装入Servlet。无论有多少客户机访问Servlet,都不会重复执行init()。
- service():它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。在HttpServlet中已存在Service()方法。默认的服务功能是调用与HTTP请求的方法相应的do功能。
- destroy(): 仅执行一次,在服务器端停止且卸载Servlet时执行该方法。当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。
Tomcat 与 Servlet 是如何工作的:
步骤:
- Web Client 向Servlet容器(Tomcat)发出Http请求
- Servlet容器接收Web Client的请求
- Servlet容器创建一个HttpRequest对象,将Web Client请求的信息封装到这个对象中。
- Servlet容器创建一个HttpResponse对象
- Servlet容器调用HttpServlet对象的service方法,把HttpRequest对象与HttpResponse对象作为参数传给 HttpServlet 对象。
- HttpServlet调用HttpRequest对象的有关方法,获取Http请求信息。
- HttpServlet调用HttpResponse对象的有关方法,生成响应数据。
- Servlet容器把HttpServlet的响应结果传给Web Client。
Servlet工作原理:
1、首先简单解释一下Servlet接收和响应客户请求的过程,首先客户发送一个请求,Servlet是调用service()方法对请求进行响应的,通过源代码可见,service()方法中对请求的方式进行了匹配,选择调用doGet,doPost等这些方法,然后再进入对应的方法中调用逻辑层的方法,实现对客户的响应。在Servlet接口和GenericServlet中是没有doGet()、doPost()等等这些方法的,HttpServlet中定义了这些方法,但是都是返回error信息,所以,我们每次定义一个Servlet的时候,都必须实现doGet或doPost等这些方法。
2、每一个自定义的Servlet都必须实现Servlet的接口,Servlet接口中定义了五个方法,其中比较重要的三个方法涉及到Servlet的生命周期,分别是上文提到的init(),service(),destroy()方法。GenericServlet是一个通用的,不特定于任何协议的Servlet,它实现了Servlet接口。而HttpServlet继承于GenericServlet,因此HttpServlet也实现了Servlet接口。所以我们定义Servlet的时候只需要继承HttpServlet即可。
3、Servlet接口和GenericServlet是不特定于任何协议的,而HttpServlet是特定于HTTP协议的类,所以HttpServlet中实现了service()方法,并将请求ServletRequest、ServletResponse 强转为HttpRequest 和 HttpResponse。
创建Servlet对象的时机:
- Servlet容器启动时:读取web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象的init方法。
- 在Servlet容器启动后:客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据客户的请求创建HttpRequest、HttpResponse对象,从而调用Servlet 对象的service方法。
<servlet><servlet-name>Init</servlet-name><servlet-class>org.xl.servlet.InitServlet</servlet-class><load-on-startup>1</load-on-startup>
</servlet>
关于项目开发部署可以看下这个Java小型项目开发视频教程。
servlet工作原理_Servlet 生命周期、工作原理相关推荐
- JavaWeb第一讲 Servlet的工作原理及生命周期
Servlet的工作原理及生命周期 (一)Tomcat容器模型 Servlet的运行离不开Tomcat,那我们先弄清楚Tomcat的容器模型. 由上图可以看出,在Tomcat下有一个Container ...
- 2011年9月19日 面试重点:asp.net运行原理和生命周期
面试重点:asp.net运行原理和生命周期 1.ispostback回调机制 isPostBack=false !IsPostBack==ture 当前页面是第一次加载 IsPostBack 由于用户 ...
- 【Spring系列】- Bean生命周期底层原理
Bean生命周期底层原理
- 深刻理解Servlet运行机制和生命周期
servlet 运行在servlet 容器中,其生命周期由容器来管理.servlet 的生命周期通过 javax.servlet.Servlet接口中的init(),servce(),和destory ...
- Servlet系列学习笔记1 --- Servlet工作原理和生命周期
目录 一.Servlet API概述 二.Servlet工作原理 三.Servlet接口 四.Servlet的生命周期 五.ServletRequest 六.ServletResponse Servl ...
- PHP的工作原理和生命周期
表层分析 php是以请求/响应为周期运行服务端应用程序,当请求进入应用程序,流程如下: php的每一个请求都会重复以上的交互. 底层分析 php的运行模式有两种:web模式和cli模式.无论是哪种公众 ...
- Kubernetes各组件工作原理 Pod 生命周期
一.kubernets 组件工作原理 - 概述: 在集群管理方面,kubernetes 将集群中的机器分为 Master(主)节点和一些 node(工作)节点.在 Master 节点上运行这一些集群管 ...
- oauth2.0授权协议中刷新令牌refresh token的工作原理及生命周期分析
在学习oauth2.0协议的时候,对于刷新令牌refresh token感觉很困惑.主要是为啥需要刷新令牌,以及刷新令牌是如何工作的,技术细节是啥?比如通过refresh token可以让access ...
- servlet运行原理和生命周期
servlet的生命周期分为3个阶段: 1初始化阶段:调用init方法 2响应客户请求阶段:调用service()方法 3终止阶段:调用destroy方法 servlet初始化阶段: 在下列时刻ser ...
最新文章
- ansible自己总结(playbook)
- 批量修改多目录下相同文件名的文件内容
- 电气:通过转移因子算法求解潮流
- 有序链表插入 java_Java 实现有序链表
- C++类的数组元素查找最大值问题
- Exynos4412 所用内存 —— DDR2
- BI报表分析和数据可视化,推荐这三个开源工具!
- 【Windows】DACL SACL
- Android 自定义Dialog 去除阴影
- 求每个月最后一天mysql函数_计算指定年月的最后一天的自定义MYSQL函数_MySQL
- php期末考试分数分布情况,考试成绩分析
- 土建中级工程师考试用书电子版_真的!2020年湖南土建中级职称考试用书是没有指定的教材?...
- 个人笔记-Minecraft阿里云服务器搭建
- bada学习之HelloWorld篇
- 前端面试必备知识点总结(持续更新)
- LCD1602液晶显示模块
- 【MATLAB】图像二值化(imbinarize函数)
- 机器学习在制冷与空调方面的应用
- “中国第一程序员” 求伯君的传奇经历
- 英国essay写作思路
热门文章
- linux svn missingargument -m,缺少參數-m在windows powershell中使用svn。
- PHP设计模式之装饰模式(Decorator)
- android图片gif动画效果,android中类似于gif 实现图片的动画效果
- image控件显示图片_Unity之Image amp; Raw Image
- java bean 绑定,在 Java 应用程序中绑定 Bean 和数据
- undertale人物_【undertale】传说之下精美人物图包 (Frisk篇)
- run cuda samples ubuntu_NVIDIA cuDNN v8 deb方法安装教程(Linux/Ubuntu)
- UART接口算法移植加密芯片的调试技巧——通讯调试
- 技术网站 --websystique.com
- Redis、Redis+sentinel安装(Ubuntu 14.04下Redis安装及简单测试)