Servlet 简介

  Servlet是什么?

  Servlet是一个Java编写的程序,此程序是基于Http协议的,并运行在web服务器上或者应用服务器上。它主要是作为web浏览器或其他Http客户端的请求与Http服务器上的数据库或应用程序之间的中间层。也就是,当客户机发送请求至服务器时,服务器可以将请求信息发送给 Servlet ,并让 Servlet 建立起服务器返回给客户机的响应。当启动 Web 服务器或客户机第一次请求服务时,可以自动装入 Servlet。装入后, Servlet 继续运行直到其它客户机发出请求。

  使用 CGI技术可以实现同样的效果,但使用CGI技术开发起来过于复杂,且性能方面较差,只要有一个请求到达,Web服务器就会单独分配一个进程来进行处理导致,移植性不好,而Servlet不需要像CGI技术那样分配单独的进程来处理请求,而是单独分配一个线程来进行处理,提升了处理效率。并且Java语言是跨平台的语言,页提升了Web服务器扩展程序的可移植性,所以Servlet技术已经取代了CGI技术,成为B/S架构中的主流技术。

  Servlet 功能

  Servlet 可完成如下功能:

  (1) 创建并返回一个包含基于客户请求性质的动态内容的完整的 HTML 页面。

  (2) 创建可嵌入到现有 HTML 页面中的一部分 HTML 页面( HTML 片段)。

  (3) 与其它服务器资源(包括数据库和基于 Java 的应用程序)进行通信。

  (4) 用多个客户机处理连接,接收多个客户机的输入,并将结果广播到多个客户机上。例如, Servlet 可以是多参与者的游戏服务器。

  (5) 当允许在单连接方式下传送数据的情况下,在浏览器上打开服务器至 applet的新连接,并将该连接保持在打开状态。当允许客户机和服务器简单、高效地执行会话的情况下, applet 也可以启动客户浏览器和服务器之间的连接。可以通过定制协议或标准(如 IIOP )进行通信。

  (6) 对特殊的处理采用 MIME 类型过滤数据,例如图像转换和服务器端包括( SSI )。

  (7) 将定制的处理提供给所有服务器的标准例行程序。例如, Servlet 可以修改如何认证用户。

  Servlet原理

  Servlet作为补充Web服务器功能的组件,需要依赖于Servlet容器才能运行。能够充当Servlet容器这个角色的有很多软件,如Tomcat、Weblogic、JBoss等。而这些Servlet容器不仅仅具备了管理Servlet组件的功能,也具备了Web服务器的一些功能,所以很多时候只要安装一个Tomcat软件就同时具备了Web服务器及Servlet容器的双重功能。

  在浏览器中输入请求地址后,浏览器会依据IP地址及端口号找到对应的Web服务器,如果请求的是静态资源,Web服务器直接提供响应;如果请求的是动态资源,Web服务器的通信模块会将该请求传递给Servlet容器的通信模块,Servlet容器负责创建Servlet实例,并将请求中的数据解析出来传递给Servlet。在Servlet处理完数据之后,响应结果也是由容器的通信模块负责返回给Web服务器。后续的Servlet的销毁及管理都由容器来负责。

  Servlet生命周期

  Servlet的生命周期是由Servlet的容器来控制的,它可以分为3个阶段;初始化,运行,销毁。

  首先,第一个到达服务器的Http请求被委派到Servlet容器中,Servlet容器在调用service()方法之前会先加载一个Servlet对象,调用初始化方法进行初始化,初始化操作执行进行一次,在后续的请求中不会再调用初始化方法;然后Servlet容器处理由多条线程产生的多个请求,每个线程执行一个单一的 Servlet 实例的 service() 方法;请求处理完将输出结果返回客户端,无请求时Servlet容器调用destory()进行释放资源的操作,具体如下:

  初始化阶段:

  1,Servlet容器加载servlet类,把servlet类的.class文件中的数据读到内存中。

  2,然后Servlet容器创建一个ServletConfig对象。ServletConfig对象包含了Servlet的初始化配置信息。

  3,Servlet容器创建一个servlet对象。

  4,Servlet容器调用servlet对象的init方法进行初始化,初始化方法只调用一次,在后续的用户请求中将不再调用。

  运行阶段:

  每次服务器接收到一个Servlet请求时,服务器会产生一个新的线程并调用服务方法。service()方法检查 HTTP 请求类型(GET、POST、PUT、DELETE 等),并在适当的时候调用 doGet、doPost、doPut,doDelete 等方法。

  当servlet容器接收到一个请求时,servlet容器会针对这个请求创建servletRequest和servletResponse对象。

  然后调用service方法,并把这两个参数传递给service方法。Service方法通过servletRequest对象获得请求的

  信息并处理该请求,再通过servletResponse对象生成这个请求的响应结果。

  销毁阶段:

  当Web应用被终止时,servlet容器会先调用servlet对象的destrory方法,销毁servlet对象以及与servlet对象相关联的servletConfig对象。同时也可以在destroy方法中实现释放资源的操作,如关闭数据库连接,关闭文件输入输出流等。

  如图所示:

  

两性健康 两性文章 两性常识 两性世界 两性问题  两性保健 两性小说 两性之间 两性交流 两性用品 两性夜话 美女图片 两性知识 两性教育 两性情感 两性关系 两性技巧 两性生活 两性故事 两性心理 两性话题 两性养生  热点资讯 热点动态 热点讯息 热点新闻 最新资讯 最新动态 关注两性健康 关注两性健康网 热点资讯网 热点动态网 热点讯息网 热点新闻网 最新资讯网 最新动态网 军事 新闻 生活 娱乐 教育 科技 旅游 健康 体育 游戏 内涵 美图 太空 数码 汽车 赛事 场外 解谜 影视 明星 主播 法制 社会 财经 足球 CBA 国内 国际 中国 全球 亚太 周边 军备 职场 美食 房产 NBA 奇闻异事

Servlet基本知识总结的更多相关文章

  1. Servlet基本知识

    Servlet基本知识 1.IDEA创建第一个Servlet程序xing 这里说明如何使用 IDEA Ultimate 2020.1.3版本来新建第一个web程序.参考 MoonChasing 1.1 ...

  2. 面试之jsp、Servlet相关知识——生命周期, 区别等

    1.servlet生命周期 所谓生命周期,指的是servlet容器如何创建servlet实例.分配其资源.调用其方法.并销毁其实例的整个过程. 阶段一: 实例化(就是创建servlet对象,调用构造器 ...

  3. Servlet基础知识

    基本知识一.Web结构1.两种应用程序 ①桌面应用程序:QQ.CS.MyEclipse.Office.DW.360.浏览器等必须下载.安装.桌面快捷方式.注册表信息.操作系统后台服务.占用操作系统端口 ...

  4. Servlet基础知识总结

    Servlet是JavaWeb应用开发的核心组件.Servlet运行在Servlet容器中(例如最常用的Tomcat),它可以为各种客户请求提供相应服务.Servlet可以轻松完成以下任务: 动态生成 ...

  5. JSP SERVLET 基础知识

    jsp(java server page)和servlet是JAVA EE规范的两个基本成员,是JAVA WEB开发的重点也是基础知识.JSP本质上也需要编译成SERVLET运行. JSP比较简单,可 ...

  6. Tomcat是如何加载Spring和SpringMVC及Servlet相关知识

    概述 大家是否清楚,Tomcat是如何加载Spring和SpringMVC,今天我们就弄清下这个过程(记录最关键的东西) 其中会涉及到大大小小的知识,包括加载时候的设计模式,Servlet知识等,看了 ...

  7. 第一次接触servlet的知识

    什么是Servlet?① Servlet就是JAVA 类② Servlet是一个继承HttpServlet类的类③ 这个在服务器端运行,用以处理客户端的请求 Servlet相关包的介绍--javax. ...

  8. servlet部分知识总结

    1.解决中文显示乱码问题: 对于servlet :servlet里面加入代码response.setContentType("text/html;chartset=utf-8"); ...

  9. Servlet深层知识

    一.ServletContext实现请求转发1.得到请求分发器:RequestDispatcherServletContext.getRequestDispatcher(String path):pa ...

随机推荐

  1. Linux安装RocketMQ

    本文介绍Linux安装RocketMQ. 1.RocketMQ简介 RocketMQ是阿里巴巴中间件开发的分布式消息系统,曾经经历过很多阿里巴巴大型项目的实际检验.在去年已经正式捐献给Apache开源 ...

  2. 获取验证码倒计时60s

    倒计时函数: function time(btns) { if (wait == 0) { btns.css("background-color","#F84C02&qu ...

  3. 英语口语练习系列-C40-电器-访友

    词汇-电器 dishwasher 洗碗机 fridge 电冰箱 washing machine 洗衣机 mobile phone 手机 digital camera 数码相机 intelligent ...

  4. 潭州课堂25班:Ph201805201 tornado 项目 第五课 增加用户系统-用户中心(课堂笔记)

    tornado 相关说明 在 users 表中创建记录,做测试 在项目根目录下创建 test.py # -*- coding: utf-8 -*- # 斌彬电脑 # @Time : 2019/2/27 ...

  5. Node.js_express_服务器渲染页面 ejs

    服务器渲染页面 ejs 高效的 js 模版引擎 将数据提前渲染到页面上, 再将渲染好的页面返回响应给浏览器 提高首页加载速度 SEO 提前处理,提高加载速度 下载 ejs 包 npm install ...

  6. JavaScript Dom级别

  7. Python基础之语句1

    一.行定义(两类): 1.物理行:程序员编写代码的行. 2.逻辑行:python解释器需要执行的指令. 建议:一个逻辑行在一个物理行上,若一个物理行使用多个逻辑行,需要使用分号隔开:如果逻辑行过长,可 ...

  8. WinForm打包或部署

    一.新建InstallShield项目 二. 三. 四. 五. 六. 七. 最后重新生成,安装包一般在E\Setup1\Setup1\Express\SingleImage\DiskImages\DI ...

  9. c++第五周学习小结

    上周快乐的国庆假期有令我不太快乐的C++作业,我还是坚强的把它完成了.做C++就是在快乐和不快乐徘徊的过程.当你慢慢摸索写出正确答案时获得的成就感还是很开心的,但是当你苦苦思考还是无法完成时简直是狂躁 ...

  10. HC32F003与STM8S003资源对比,只是对比,大家评论~!

    枯藤老树昏鸦小桥流水人家                                                古道西风瘦马夕阳西下断肠人在天涯  18年悄然过去!19年向我们走来,蓦然回首过 ...