什么是Servlet

Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面。它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。

Servlet是位于Web服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。

Servlet相关名称

Web服务器

Web服务器,即Web Server,是Web(互联网)上的一台或多台机器。这些机器上部署了系统软件以及需要在网络中共享的信息。客户端可以通过HTTP协议访问部署到服务器上的资源。

应用服务器

应用服务器,即Application Server,是网络上一台或多台机器。这些机器上部署了系统软件用以为客户端以及其他服务器比如Web服务器提供数据服务、业务处理服务等。常见的应用服务器包括文件服务器、打印服务器以及运行着EJB组件的EJB服务器等。

Servlet容器

Servlet容器,即Servlet Container,是Web服务器或应用服务器的组成部分,它可以为Servlet提供请求和响应的服务,同时也负责管理Servlet的生命周期。Servlet容器也可以为Servlet提供其它的服务,比如资源服务、安全服务、线程的服务等。Servlet容器即可以集成到Web服务器或应用服务器中,也可以作为独立的程序嵌入到Web服务器或应用服务器中。

Servlet作用

Servlet规范通过规定一个编程的框架来达到扩展服务器功能的目的,采用请求-响应模式提供基于Web的服务。当客户机发送请求至服务器时,服务器将请求信息转发给Servlet,Servlet处理请求并生成响应内容并将其传给Web服务器,然后再由Web服务器将响应返回给客户端。

Servlet实现过程

最早支持Servlet技术的是JavaSoft的Java Web Server。此后,一些其它的基于Java的WebServer开始支持标准的ServletAPI。Servlet的主要功能在于交互式地浏览和修改数据,生成动态Web内容。这个过程为:

  1. 客户端发送请求至服务器端
  2. 服务器将请求信息发送至Servlet
  3. Servlet生成响应信息并将其传给服务器。响应内容动态生成,通常取决于客户端的请求
  4. 服务器将响应返回给客户端
图为 “客户端与服务器Servlet交互过程”
       其实,一个servlet就是Java编程语言中的一个类,它被用来扩展服务器的性能,服务器上驻留着可以通过“请求-响应”编程模型来访问的应用程序。虽然servlet可以对任何类型的请求产生响应,但通常只用来扩展Web服务器的应用程序。

Web容器

Web容器有两大功能,分别是:

  1. 提供编写Servlet程序所需要的API
  2. 提供驻留并执行Servlet程序的环境
       这个Servlet运行环境可以完成Servlet程序的实例化、初始化、调用服务方法和去除Servlet的功能,也就是说Web容器可以管理Servlet的生命周期。Servlet驻留在Web容器中,并由Web容器进行管理。Web容器通过转发Web服务器和Servlet之间的请求与响应来充当两者之间的桥梁。
       常见的Java Web容器包括:Tomcat,JBoss,WebLogic,WebSphere等。
正确认识Servlet
Servlet不可以独立运行
       Servlet必须运行在Servlet容器中,由容器调用它的生命周期方法,上文的Web容器也有声明。因此,Servlet不需要main方法。
Servlet不是线程
       Servlet就是一个普通的Java对象,它实现了Servlet接口,并没有继承于Thread,因此,Servlet不是线程。当服务器接收到客户端请求时,它会在一个单独的线程中来执行Servlet的方法。
与传统CGI的比较
       与传统的CGI和许多其他类似CGI的技术相比,Java Servlet具有更高的效率,更容易使用,功能更强大,具有更好的可移植性,更节省投资。在未来的技术发展过程中,Servlet有可能彻底取代CGI。
       在传统的CGI中,每个请求都要启动一个新的进程,如果CGI程序本身的执行时间较短,启动进程所需要的开销很可能反而超过实际执行时间。而在Servlet中,每个请求由一个轻量级的Java线程处理(而不是重量级的操作系统进程)。
       在传统CGI中,如果有N个并发的对同一CGI程序的请求,则该CGI程序的代码在内存中重复装载了N次;而对于Servlet,处理请求的是N个线程,只需要一份Servlet类代码。在性能优化方面,Servlet也比CGI有着更多的选择。
     1. 方便
         Servlet提供了大量的实用工具例程,例如自动地解析和解码HTML表单数据、读取和设置HTTP头、处理Cookie、跟踪会话状态等。
     2. 功能强大
         在Servlet中,许多使用传统CGI程序很难完成的任务都可以轻松地完成。例如,Servlet能够直接和Web服务器交互,而普通的CGI程序不能。Servlet还能够在各个程序之间共享数据,使得数据库连接池之类的功能很容易实现。
     3. 可移植性好
         Servlet用Java编写,ServletAPI具有完善的标准。因此,为IPlanet Enterprise Server写的Servlet无需任何实质上的改动即可移植到Apache、MicrosoftIIS或者WebStar。几乎所有的主流服务器都直接或通过插件支持Servlet。
     4. 节省投资
        不仅有许多廉价甚至免费的Web服务器可供个人或小规模网站使用,而且对于现有的服务器,如果它不支持Servlet的话,要加上这部分功能也往往是免费的(或只需要极少的投资)。

PS:Servlet入门只是Java Servlet系列的第一篇文章,作为Java Servlet的入门基础知识,后续还会有几篇文章来继续深入的研究Servlet。文章还存在不足之处,欢迎各位大神批评指正。

参考:《servlet详细讲解》

转载于:https://www.cnblogs.com/bbsno1/p/3271076.html

Java Servlet系列之Servlet入门相关推荐

  1. java servlet的生命周期_Java Servlet系列之Servlet生命周期

    Servlet生命周期定义了一个Servlet如何被加载.初始化,以及它怎样接收请求.响应请求,提供服务.在讨论Servlet生命周期之前,先让我们来看一下这几个方法: 1. init()方法 在Se ...

  2. java基础系列:集合入门

    集合框架: Java中的集合框架大类可分为Collection和Map:两者的区别: Collection是单列集合:Map是双列集合 Collection中只有Set系列要求元素唯一:Map中键需要 ...

  3. Java进阶-tomcat+Maven+Servlet+HTTP协议+xml(十)

    文章目录 一.WEB开发概述 1.1.WEB资源介绍 1.2.软件架构 1.3.WEB通信模式 (B/S) 1.4.URL请求路径 1.5.WEB服务器软件 二.TOMCAT 2.1.概述 2.2.T ...

  4. Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】...

    tags: Servlet 什么是Serlvet?# Servlet其实就是一个遵循Servlet开发的java类.Serlvet是由服务器调用的,运行在服务器端. 为什么要用到Serlvet? 我们 ...

  5. Java+MyEclipse+Tomcat (四)Servlet提交表单和数据库操作

    前面三篇文章讲述了如何配置MyEclipse和Tomcat开发JSP网站.如何配置Servlet简单实现表单提交.如何配置MySQL实现JSP数据库查询.         这篇文章主要讲述Servle ...

  6. Servlet第一篇【介绍Servlet、HTTP协议、WEB目录结构、编写入门Servlet程序、Servlet生命周期】

    什么是Servlet? Servlet其实就是一个遵循Servlet开发的java类.Servlet是由服务器调用的,运行在服务器端. 为什么要用到Servlet? 我们编写java程序想要在网上实现 ...

  7. java servlet 3.1,Servlet 3.1规范学习小记

    对于Servlet 2.5加入的新功能: 1. 处理Listener的次序性 2.5及之前的规范没有定义Listener的调用次序.web.xml中定义的Listner的执行顺序是不保证的(按:尽管规 ...

  8. JAVA Web学习之servlet开发

    01.servlet开发入门 动态web资源开发有两种技术:Servlet和JSP,只有把Servlet学明白了才能学JSP. Sun公司在其API中提供了一个Servlet接口,用户若想用一个动态w ...

  9. Java中Filter、Servlet、Listener的学习

    1.Filter的功能filter功能,它使用户可以改变一个 request和修改一个response. Filter 不是一个servlet,它不能产生一个response,它能够在一个reques ...

最新文章

  1. win8 网络 连接计算机名称,win8本地网络联接的名字怎么改
  2. 卡内基梅隆大学机器学习系副主任邢波:AI落地现在最缺的是思维方式
  3. uploadify 上传文件并带有随机数文件名生成
  4. Flutter:Stream.periodic 示例
  5. matlab pca求曲率和法向量_实践课堂 已给出实例的MATLAB求解大汇总(线性规划)...
  6. 【锁相环系列1】锁相环的基本原理
  7. BoW(词袋Bag of words)
  8. (1)HTML5概述
  9. 2021副高考试成绩查询荆州,湖北荆州2021年4月自考成绩查询入口开通
  10. 互联网金融爬虫怎么写-第二课 雪球网股票爬虫(正则表达式入门)
  11. 【本周上榜!】看雪论坛精华优秀文章分享与点评
  12. 9.企业安全建设入门(基于开源软件打造企业网络安全) --- SOC系统建设
  13. python 单向链表逆序_python实现单链表反转(经典笔试题)
  14. java字节码查看器_jclasslib 下载
  15. 博通linux网卡驱动,在64位CentOS 6 系统上安装Broadcom网卡驱动
  16. c语言中的绝对值符号
  17. java瀑布图表,瀑布图的完美解决方案 [Excel图表]
  18. 国药集团获得美国默沙东公司新冠口服药“莫诺拉韦”经销权和独家进口权 | 美通社头条...
  19. 图灵的文章“Computing machinery and intelligence”译文
  20. nginx 反向代理和正向代理区别

热门文章

  1. Leetcode刷题指南和top100题目
  2. linux 共享内存_linux进程间通信----IPC篇(一)----共享内存初识篇
  3. 2019-04-01
  4. 读研计算机统计学怎样,【新加坡国立大学统计专业读研】 - 环外新加坡留学网...
  5. js dojo 保存txt文件
  6. VSCode插件开发全攻略
  7. 史玉柱:我是怎么做游戏策划的
  8. 动态创建Sql Server用户及其权限
  9. Spring main方法中怎么调用Dao层和Service层的方法
  10. java 阻塞队列 BQ_阻塞队列 BlockingQueue的使用(二)