Servlet原理
Servlet主要用来处理客户端请求并将其结果发送到客户端,下面我们来详细看一下Servlet。
一、Servlet的生命周期
Servlet的生命周期是由Servlet的容器来控制的(Tomcat 的容器等级中,Context 容器是直接管理 Servlet 在容器中的包装类 Wrapper),它可以分为3个阶段:初始化、运行、销毁
初始化阶段:
1、Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中同时读取web.xml配置文件中的信息;
2、Servlet容器创建一个ServletConfig对象,ServletConfig对象包含了Servlet的初始化配置信息;
3、Servlet容器创建一个Servlet对象;
4、Servlet容器调用Servlet对象的init()方法进行初始化;----init方法,负责初始化Servlet对象
运行阶段:
1、当Servlet容器接收到一个请求时,Servlet容器会判断内存中是否存在指定的Servlet对象,如果没有则创建它,然后根据这个请求创servletRequest和servletResponse对象;
2、调用Servlet对象的service方法。并把这两个参数传递给service方法。Service方法通过servletRequest对象获得请求的信息,并处理该请求。再通过servletResponse对象生成这个请求的响应结果。然后销毁servletRequest和servletResponse对象。我们不管这个请求是post提交的还是get提交的,最终这个请求都会由service方法来处理;-----service方法,负责响应客户的请求
销毁阶段:
当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,然后再销毁servlet对象,同时也会销毁与servlet对象相关联的servletConfig对象。我们可以在destroy方法的实现中,释放servlet所占用的资源,如关闭数据库连接,关闭文件输入输出流等。---destory方法,当Servlet对象退出声明周期时,负责释放占有的资源
注意:在servlet生命周期中,servlet的初始化和和销毁阶段只会发生一次,而service方法执行的次数则取决于servlet被客户端访问的次数
Servlet是怎么处理一个请求的呢?
当用户发送一个请求到某个Servlet的时候,Servlet容器会创建一个ServletRequst和ServletResponse对象。在ServletRequst对象中封装了用户的请求信息,然后Servlet容器把ServletRequst和ServletResponse对象传给用户所请求的Servlet,Servlet把处理好的结果写在ServletResponse中,然后Servlet容器把响应结果传给用户。
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原理的更多相关文章
- JAVAWEB - Servlet原理及其使用>从零开始学JAVA系列
目录 Servlet原理及其使用 什么是Servlet Servlet的使用 编写一个Servlet,使用继承HttpServlet的方式 配置web.xml 很简单的几个JSP文件 小提示,如果继承 ...
- 深入理解Servlet原理
Servlet介绍: 1. 如何返回一个网页: a. 静态网页 >新闻页.百度百科 >服务器保存一份HTML,直接返回给浏览器即可 b. 动态网页 >淘宝.QQ空间.微博 >服 ...
- 使用Intellij idea新建Java Web项目(servlet) 原理及初步使用
准备 JDK (配置JDK_HOME\bin 和 CLASSPATH) 注:JDK8下载已经需要注册了,请使用JDK11(现在是官方长期支持的版本) 对于我们新手来说,JD ...
- Servlet学习笔记(一)之Servlet原理、初始化、生命周期、结构体系
Servlet是用java语言编写的应用到Web服务器端的扩展技术,与java对象的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Servlet容器的支持(以下会介绍原因, ...
- 《收藏》对servlet原理讲解特别详细
转载:http://blog.csdn.net/javaloveiphone/article/details/8154791 内容: 一.先从servlet容器说起:大家最为熟悉的servlet容器就 ...
- 什么是Servlet(原理,从访问到方法)
Servlet简介 Servlet是SUN公司提供的一门用于开发动态WEB资源的技术.SUN公司在其API中提供了一个Servlet接口,用户若想开发一个动态WEB资源(即开发一个Java程序向浏览器 ...
- 【tomcat】servlet原理及其生命周期
1.什么是servlet? Servlet(Servlet Applet),全称Java Servlet,是用Java编写的服务器端程序.而这些Servlet都要实现Servlet这个接口.其主要功能 ...
- servlet原理分析
一.Servlet简介 Servlet是sun公司提供的一门用于开发动态web资源的技术. Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向 ...
- Apache.Tomcat 调用Servlet原理之Class类的反射机制,用orc类解释
有一个兽人类 package com.swift.servlet; public class OrcDemo { private int hp; private int mp; private int ...
随机推荐
- NOIP2008 双栈队列
1. 双栈排序 (twostack.pas/c/cpp) Tom 最近在研究一个有趣的排序问题.如图所示,通过 2 个栈 S1 和 S2,Tom 希望借助 以下 4 种操作实现将输入序列升序 ...
- 如何理解Stay hungry,stay foolish?
People know about this words because of Steve Jobs.Me too. Hungry,对知识我们一般不会用hungry,我们会用curious,什么时候我 ...
- Android字符串相关类 - CharSequence
Class Overview CharSequence定义为public interface.该接口用于表示一个有序字符的集合,并在其中定义里了处理字符的方法. 已知的常用间接子类有String, S ...
- HW6.16
import java.util.Arrays; public class Solution { public static void main(String[] args) { int[] arra ...
- SGU132 - Another Chocolate Maniac(状态压缩DP)
题目大意 给定一个N*M大小的大小的蛋糕,蛋糕的有些地方已经放置了东西,要求你在蛋糕上放入尽量少的1*2大小的巧克力,使得蛋糕不能够再放入巧克力 题解 和POJ1038恰好相反,此题是放入尽量少的巧克 ...
- Aisino 金税盘 pass throught
- JS 格式化日期
function formatDate(date){ var year=date.getFullYear(); var month=date.getMonth()+1; var date=date.g ...
- elecworks 报表----按线类型的电线清单
按线类型的电线清单中:列Wire number指的是线标注,不是电位标注 section:截面积
- hdoj 1234 开门人和关门人
开门人和关门人 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) #include ...
- hdoj 2099 整除的尾数
整除的尾数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...