Servlet工作原理

Servlet是运行在Servlet容器中的,由Servlet容器来负责,Servlet实例的查找、创建及整个生命周期的管理。
Servlet生命周期:

  1. 类装载及实例的创建阶段:
    默认情况下,servlet实例是在接受第一次请求时进行创建并且以后的请求进行复用(单例),如果servlet需要进行一些复杂的操作,需在初始化时就完成eg:打开文件、初始化网络连接,可以配置在服务器启动时便创建实例,具体配置方法为在声明servlet标签中添加
    <load-on-satrtup>/</load-on-startup>标签。

  2. 初始化init(ServletConfig)
    一旦Servlet实例被创建,将会调用Servlet的init方法,同事传入ServletConfig实例,传入Servlet的相关配置信息,init方法在整个Servlet声明周期中只会被调用一次。

  3. 服务Service(HttpServletRequest request HttpServletResponse response)
    为提高效率,Servlet规范要求一个Servlet实例必须能同时服务于多个客户端请求,即Service()方法运行在多线程的环境下(每一个请求在Servlet容器中都会产生一个线程来调用Service方法,但需要注意每个线程也共享Servlet对象的成员变量),Servlet开发者必须保证该方法的线程是安全的。另外HttpServletRequest对象封装的事用户请求的信息,此对象其他相应的方法获取封装的信息,用此对象可获得用户提交的信息,HttpServletResponse对象是用来响应用户的请求,用此对象可获得用户想要得到的信息。

  4. 销毁destory()
    服务器关闭时会调用destory方法,销毁Servlet实例。当Servlet容器将决定结束某个Servlet时,将会调用destory()方法,在destory方法中释放资源,一旦destory方法被调用Servlet容器将不会再发送任何请求给这个实例,若Servlet容器再次使用该Servlet实例,需要重新实例化该Servlet实例。

Servlet执行流程

Web服务器接到HTTP请求后,Web服务器将请求移交给Servlet容
器,Servlet容器首先对所请求的URL进行解析并根据Web.xml配置
文件找到相应的处理Servlet,同事将request、response对象传递给
它,Servlet通过request对象可知道客户端的请求者请求信息以及
其他的信息等,Servlet在处理完请求后会把所有需返回的信息放入
response对象中并返回到客户端,Servlet一旦处理完请求,Servlet
容器会刷新response对象,并把控制权重新返回给Web服务器。

创建Servlet的时机.

1.Servlet容器启动时,读取Web.xml配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,同时将ServletConfig对象作为参数来调用Servlet对象init方法。
2. 在Servlet容器启动后,客户首次向Servlet发出请求,Servlet容器会判断内存中是否存在指定的Servlet对象,若没有则根据客户的请求创建HttpRequest、HttpReponse对象,从而调用Servlet对象的Service方法。
3. Servlet容器在启动时创建的Servlet是由在Web.xml文件中为 Servlet 设置的<load-on startup>
属性决定的,同一类型的Servlet对象在Servlet容器中以单例的形式存在。

<Servlet><servlet-name>init</servlet-name><servlet-class>org.xl.servlet.Intservlet</servlet-class><load-on-satrtup>/</load-on-startup>
</Servlet>

Servlet与JSP比较

它们有很多相似之处,都可以生成动态网页
1.JSP优点是:擅长网页制作,生成动态页面比较直观;
缺点:不容易跟踪与拍错;
2.Servlet是纯Java语言,擅长处理流程和业务逻辑;
缺点:生成动态网页不直观;
3.Servlet运行速度比CGI快,因为使用了多线程;
4.Servlet使用了标准的api,可被许多web服务支持;
5.Servlet与系统无关,一次编译多次使用,也正是Java的特性;

Tomcat与Servlet如何工作的

1.Web Client 向Servlet容器发出Http请求;
2.Servlet容器接收Web Client 的请求;
3.Servlet容器创建一个Http Request对象,将Web Client请求信息封装到这个对象中;
4.Servlet容器创建一个HttpResponse对象;
5.Servlet容器调用HttpServlet对象的Service方法,把HttpRequest对象与HttpResponse对象作为参数传给HttpServlet对象;
6.HttpServlet调用HttpRequest对象相关方法获取Http请求信息;
7.HttpServlet调用HttpResponse对象的相关方法生成响应数据;
8.Servlet容器把HttpServlet的响应结果传给WebClient;

Servlet工作原理相关推荐

  1. servlet工作原理_Servlet 生命周期、工作原理

    Servlet 生命周期:Servlet 加载--->实例化--->服务--->销毁. init():在Servlet的生命周期中,仅执行一次init()方法.它是在服务器装入Ser ...

  2. JSP+JavaBean+Servlet工作原理实例…

    JSP+JavaBean+Servlet工作原理实例讲解 首先,JavaBean和Servlet虽都是Java程序,但是是完全不同的两个概念.引用mz3226960提出的MVC的概念,即M-model ...

  3. Tomcat Servlet 工作原理

    文章目录 Tomcat Servlet 工作原理 Servlet Tomcat解析Context容器过程及如何构建Servlet Servlet容器启动过程 Web应用初始化工作 创建Servlet实 ...

  4. Servlet系列学习笔记1 --- Servlet工作原理和生命周期

    目录 一.Servlet API概述 二.Servlet工作原理 三.Servlet接口 四.Servlet的生命周期 五.ServletRequest 六.ServletResponse Servl ...

  5. Servlet 工作原理解析

    2019独角兽企业重金招聘Python工程师标准>>> 从 Servlet 容器说起 要介绍 Servlet 必须要先把 Servlet 容器说清楚,Servlet 与 Servle ...

  6. JSP/Servlet 工作原理

    Servlet Servlet Servlet 没有 main 方法,不能够独立的运行,它的运行需要容器的支持,Tomcat 是最常用的 JSP/Servlet 容器. Servlet 运行在 Ser ...

  7. 【Java】Servlet 工作原理解析

    Web 技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.因而掌握 Servlet 的工作原理是成为一名合格的 Java Web 技术开发人员的 ...

  8. Servlet 工作原理解析--转载

    原文:http://www.ibm.com/developerworks/cn/java/j-lo-servlet/index.html?ca=drs- Web 技术成为当今主流的互联网 Web 应用 ...

  9. 超详细 Servlet工作原理解析

    Web技术成为当今主流的互联网 Web 应用技术之一,而 Servlet 是 Java Web 技术的核心基础.因而掌握 Servlet的工作原理是成为一名合格的 Java Web 技术开发人员的基本 ...

  10. Servlet学习笔记-Servlet工作原理和过程

    1.前言   Java Servlet技术简称Servlet技术,是Java开发Web应用的底层技术.由Sun公司于1996年发布,用来代替CGI--当时生成Web动态内容的主流技术.官方文档对Ser ...

最新文章

  1. 读javascript高级程序设计11-事件
  2. Ajax表单提交给C#后台选中的checkbox值
  3. wasm + ffmpeg实现前端截取视频帧功能
  4. Py之simplejson:simplejson库的简介、安装、使用方法之详细攻略
  5. 使用Domain-Protect保护你的网站抵御子域名接管攻击
  6. 从基础开始:Qomo OpenProject中的一些关键词
  7. JavaParser生成,分析和修改Java代码
  8. 计算机网络基础 第4章 龚娟,计算机网络基础 人民邮电 龚娟 第4章习题答案
  9. 指针与零的比较以及浮点型与零的比较
  10. 安装oracle 11g时,报启动服务出现错误,找不到OracleMTSRecoveryService的解决方法
  11. java 工具箱安装方法,Java工具包的安装配置和使用-JSP教程,Java技巧及代码
  12. Linux系统安装Redis
  13. 青县计算机学校,青县将建设新学校(中小学各一所)今年3月开工,明年即可完工!...
  14. 苹果手机升级13无法开机_苹果手机更新系统后无法开机
  15. WOW!Illustrator CS6完全自学宝典pdf
  16. UNITY TMP PRO 字体制作
  17. gc计算机术语,GC是什么意思?
  18. 网络聊天室(群发助手)—— C++
  19. Matlab实现时间序列预测
  20. Largest Rectangle in a Histogram 题解 Python

热门文章

  1. java简历项目经验大全,不吃透都对不起自己
  2. Allegro PCB 封装库
  3. 知识点:西门子仿真PLCWindows平台测试说明
  4. pywin32+excel(一)——Python使用win32com/pywin32操作excel
  5. 上传漏洞-一句话木马
  6. JSONObject.fromObject(xx)方法执行后首字母大写变小写解决
  7. 根据mac地址获取生产厂商
  8. matlab m 调用mdl,[分享]MATLAB m语言中调用simulink的程序
  9. 跨境电子商务营销策略分析以速卖通为例
  10. 大数据技术笔记之数据采集和预处理