Servlet概述

1. Servlet 背景

早期的web应用主要用于浏览新闻等静态页面,用户通过HTTP协议请求服务 器上的静态页面,服务器上的web服务器软件接收到请求后,读取URI标示的资源,再加上消息报头发送给客户端浏览器,浏览器负责解析HTML,将结果呈现出来
后来用户需要一些交互操作,获取一些动态结果。如果基于HTTP协议实现服务器端软件增强功能太过复杂,所以需要一些扩展机制来实现用户想要的功能。早期使用的Web服务器扩展机制是CGI(Common Gateway Interface,公共网关接口)。使用这种方法,用户单击某个链接或输入网址来访问CGI程序,web服务器收到请求后,运行该CGI程序,对用户请求进行处理,紧接着将处理结果并产生一个响应,该响应被返回给web服务器,web服务器对响应进行包装,以HTTP响应的方式返回给浏览器。
CGI程序在一定程度上解决了用户需求。不过还存在一些不足之处,如CGI程序编写困难,响应时间较长,以进程方式运行导致性能受限。于是1997年,sun公司推出了Servlet技术,作为java阵营的CGI解决方案。

2. Servlet 原理

2.1 servlet通信

Tomcat将http请求接收并解析为HttpServletRequest对象,发送给Servlet
Tomcat将HttpServletResponse对象变成http响应,发送给浏览器

Servlet是一个基于Java技术的Web组件,运行在服务器端。
它由Servlet容器所管理,用于生成动态的内容。
Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。

2.2 servlet容器

Servlet容器也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的请求,格式化基于MIME的响应。

常用的MIME类型:text/html,application/pdf,video/quicktime,application /java,image/jpeg,application/jar,application/octet-stream,application/x- zip)

使用servlet容器来管理和运行servlet的原因:
- 通信支持: 利用容器提供的方法,你能轻松的让servlet与web服务器对话,而不用自己建立serversocket、监听某个端口、创建流等
- 多线程支持:容器会自动为它所接收的每个servlet请求创建一个新的java线程。
- 声明方式实现安全:利用servlet容器,你可以使用xml部署描述文件来配置和修改安全性,而不必将其硬编码写到servlet类代码中。
- JSP支持:servlet容器负责将jsp代码翻译为真正的java代码。

2.3 用与CGI程序相比,Servlet具有以下优点:
  • Servlet是单实例多线程的运行方式。每个请求在一个独立的线程中运行,而提供服务的Servlet实例只有一个。线程仅占用有限的系统资源,所以能响应更多的请求。
  • Servlet使用标准的API,被更多的Web服务器所支持。
  • Servlet使用Java语言编写,因此拥有Java程序语言的所有优点,包括容易开发和平台独立性,和有Java平台丰富的类库的支持。
  • Servlet容器给Servlet提供额外的功能,如错误处理和安全。

3. Servlet的使用

3.1 Servlet包

Java Servlet是运行在带有支持Java Servlet规范的解释器的web服务器上的Java类。
使用javax.servletjavax.servlet.http包创建
Java Servlet 就像任何其他的 Java 类一样已经被创建和编译。

Servlet 原理概述相关推荐

  1. nvGRAPH原理概述

    nvGRAPH原理概述 nvGRAPH的API参考分析. 简介 数据分析是高性能计算的不断增长的应用.许多高级数据分析问题可以称为图形问题.反过来,当今许多常见的图形问题也可以称为稀疏线性代数.这是N ...

  2. Vue底层实现原理概述

    Vue是一个典型的MVVM框架,模型(Model)只是普通的JavaScript对象,修改它则视图(View)会自动更新.这种设计让状态管理变得非常简单而直观.那么Vue是如何把模型和视图建立起关联的 ...

  3. Servlet学习笔记 Servlet原理

    Servlet学习笔记 Servlet原理 一.Servlet基础 1.Servlet执行过程 用户请求一个Servlet,Servlet容器自动构建请求和响应对象,然后执行Servlet的servi ...

  4. 《深入理解Android》一2.1 浏览器工作原理概述

    本节书摘来自华章出版社<深入理解Android>一书中的第2章,第2.1节,作者孟德国 王耀龙 周金利 黎欢,更多章节内容可以访问云栖社区"华章计算机"公众号查看 2. ...

  5. 《Servlet和JSP学习指南》一第1章 Servlet 1.1 Servlet API概述

    第1章 Servlet Servlet是开发Servlets应用程序的主要技术.掌握Servlet API是成为一名技术高超的Java Web开发者的基础.你必须非常熟悉Servlet API中所定义 ...

  6. JavaWeb中的Servlet原理是什么?(存库,建议收藏)

    Servlet原理 Servlet是由web服务器调用,web服务器在收到浏览器请求之后,经过一系列传输,最后web服务器读取响应信息,将其读取的信息传送到浏览器 Mapping问题: 一个Servl ...

  7. 语音识别技术原理概述!

    原标题:语音识别技术原理概述! 语音识别的基本原理 所谓语音识别,就是将一段语音信号转换成相对应的文本信息,系统主要包含特征提取.声学模型,语言模型以及字典与解码四大部分,其中为了更有效地提取特征往往 ...

  8. 叠片式过滤器原理概述

    叠片式过滤器原理概述 叠片式过滤器过滤芯是由一组两面带沟槽的盘片组成,沟槽棱边形成的交叉点可以把水中固体物截留,由于同时具有了表面阻拦和凝聚的作用,大大提高了过滤效果.同时由于叠片式过滤系统具有反洗, ...

  9. Direct3D 12工作原理概述

    Direct3D 12工作原理概述 这只是Direct3d 12的概述.以后的教程将更深入. Pipeline State Objects (PSO)(MSDN Pipeline States) 管道 ...

  10. 【以太坊】雷电网络的101网络原理概述

    雷电网络的101网络原理概述 什么是雷电网络 概述 Raiden网络是一种脱机缩放解决方案,用于在Ethereum块链中执行符合ERC20标准的令牌传输. 它是Ethereum的Bitcoin闪电网络 ...

最新文章

  1. NAR:UNITE真菌鉴定ITS数据库——处理未分类和并行分类(数据库文章阅读模板)
  2. 直播系统开发:功能创新提升用户留存
  3. stm32 IOT_基于STM32平台的cubeMX和HAL库详解
  4. [vue-element] 有用过哪些vue的ui?说说它们的优缺点?
  5. Mac安装MySQLWorkbench
  6. 开发者日记级别哪个好_什么是开发者日记?
  7. jquery批量控制form禁用的代码
  8. dev-sidecar
  9. ASP.net在线购物商城系统完全解析
  10. 中国海洋大学c语言期末题库,中国海洋大学C语言期末笔试2010年秋A试题.doc
  11. .axf文件_一文看懂hex文件、bin文件、axf文件的区别
  12. MySQL-两个表关联查询
  13. angular7中使用jsonViewer
  14. 【HNOI模拟By lyp】Day1
  15. 普通打印机如何才能实现双面打印呢
  16. Ubuntu及window的配置 java变量和快捷键
  17. 《图说VR入门》——googleVR 他山之玉
  18. 衡水学院计算机实习,衡水学院教育实习系列报道之三
  19. 2017百度之星资格赛 1003:度度熊与邪恶大魔王
  20. 倾角传感器的性能精度理解文章

热门文章

  1. WDS+ADK+MDT部署Windows pxe
  2. SwitchHosts for Mac(mac hosts修改工具)
  3. 标竿学习 - 一项有效的管理工具(转载)
  4. android+字体稍微加粗,的Android设置的Roboto字体,加粗,斜体,普通,...(有点像自定义字体家族)...
  5. Unity零基础到入门 ☀️| 学会这些Unity常用组件,Unity中必备组件技能学习!
  6. 中国磷肥市场发展分析与产能需求调研报告2022版
  7. LT8918 BT1120转mipi dsi/mipi csi;提供技术支持
  8. Free MyBatis plugin下载安装及作用
  9. 道路照明之电缆线路 - 设计笔记
  10. lm算法c语言,lm算法(lm算法原理介绍)