概述

什么是Servlet

Servlet 是一个基于Java 的Web组件,由容器管理生成的动态内容。就像其他的Java组件一样,Servlet是平台无关的Java类所编译成的字节码,可以被动态加载在基于的Java Web容器之中。

容器,有时候也被乘坐Servlet引擎,是一些提供Servlet功能的 Web服务器扩展。 Servlet 和Web 客户端通过 Servlet容器所实现的请求/应答的范式来完成交互。

什么是Servlet容器

Servlet容器是Web或者应用服务器的一部分,它提供一些网络服务:比如发送请求和应答,解码基于MIME的请求,格式化基于MIME的应答等。一个Sevlet容器同时也通过Servlet的生命周期及管理这些Servlet。

Servlet容器可以构建在Web 服务器或者作为一个Web服务器的附加组件通过本地扩展API安装到Web服务器上。Sevrlet容器也能够构建或者安装到支持Web的应用服务器上。

所有的Servlet容器必须支持HTTP中的请求和应答,其他的基于请求/应答的协议则可能支持比如HTTPS。容器必须实现的HTTP SPEC包括HTTP/1.0和HTTP/1.1。因为容器也许会有RFC2616(HTTP/1.1)中所描述的缓存机制,容器也许会在将请求送到Servlet之前改变客户端所发送的请求,也可能在应答发送到客户端之前修改Servlet产生的应答,或者可能不将请求发送到Servlet就回应了客户端,这些都在符合RFC2616的情况下。

Servlet容器也许会放置安全限制到Servlet的执行环境中去。在J2SE或是J2EE环境中,这些限制应该用Java平台的权限架构来设置。比如,高端应用服务应该限制创建Thread对象来确保其他组件正常。

针对这一版本来说, Java SE 7是 Servlet容器能够允许的最低版本。

一个例子

下面是一些典型事件的序列:

  1. 一个客户端(比如浏览器)访问一个Web服务器产生一个 HTTP 请求。
  2. Web服务器接受了请求,并且将其移交给Servlet容器。Servlet容器可以运行在同一个Web服务器的同一进程或者不同进程,或者不同Web服务器上,只要能够处理请求。
  3. Servlet容器来决定哪一个Servlet来调用,这都取决于Servlet的配置,然后调用Servlet,同时还有对应的代表请求和应答的对象。
  4. Servlet通过请求对象来找到发送请求的客户端信息,一些参数和其他一些相关的数据也在是request中的一部分。Servlet会执行一些程序员实现的逻辑以及生成一些信息返回给客户端。Servlet会将这些信息通过应答对象返回给客户端。
  5. 一旦Servlet处理完请求,Servlet容器确保正确刷新响应,并将控制返回给Web服务器。

比较Servlet和其他的技术

在功能上来说,Servlet 位于CGI程序和一些专业的服务器扩展模块之间。

Servlets 有如下优于其他服务器扩展机制:

  • Servlet 比CGI脚本要快得多,因为使用了不同的进程模型
  • Servlet 使用了标准的API,被很多Web服务器所支持
  • Servlet 有所有Java的语言优势,包括易于开发和平台无关
  • Servlet 可以使用大量 Java平台的API

Servlet与 Java企业版的关系

Java Servlet API v3.1 是Java企业版 7 所需要的API。Servlet容器和其中运行的Servlet必须满足一些额外的Java EE SPEC描述的运行在Java EE环境的的需求。

与 Servlet 2.5 SPEC 的兼容性

处理注解

在Servlet 2.5,metadata-complete只影响注释在部署时的扫描。Web-fragments概念在2.5中还不存在。然而在Servlet 3.0和之后,metadata-complete影响扫描所有的注释,注释会在部署时指定部署信息和web-fragments。描述符的版本,必须不影响Web应用中扫描的注解。特殊实现的版本,必须扫描所有的配置中支持的注解,除非metadata-complete是特指的。

Servlet 3.1 标准(一)的更多相关文章

  1. [Servlet&JSP] 标准标签

    在JSP的规范中提供了一些标准标签(Standard Tag),全部的容器都支持这些标签,它能够协助编写JSP时降低Scriptlet的使用. 全部的标准标签都使用jsp:作为前置.这些标准标签是在J ...

  2. Servlet 3.0 异步模式

    Servlet 3.0标准新增了异步处理的支持. 进行异步处理的Servlet和作用于该Servlet的拦截器都必须声明对于异步处理的支持.

  3. Servlet、Filter 生命周期

    Servlet作为JavaEE必须掌握的内容,Struts2通过使用Filter的功能实现了一个MVC的框架.因此掌握这Servlet以及Filter的生命周期显得非常重要. 1. Servlet的生 ...

  4. 漫谈servlet技术

    1.要谈到Servlet技术,不得不先谈谈动态网页的概念. 编写过网页的人都知道,浏览器能够根据HTML静态标记语言来显示各式各样的网页.但是如果我们需要在网页上完成一些业务逻辑:比如登陆验证.或者说 ...

  5. DNS,TCP,IP,HTTP,socket,Servlet概念整理

    DNS,TCP,IP,HTTP,socket,Servlet概念整理   常见的协议虽然很容易理解,但是看了之后过一段时间不看还是容易忘,笔记如下,比较零碎,勉强供各位复习.如有错误欢迎指正.   D ...

  6. JavaWeb(三)servlet

    Servlet * 什么是Servlet 是运行在web服务器端的Java应用程序,它使用JAVA语言编写,具有Java语言的优点.与Java程序的区别:Servlet对象主要封装了对Http请求的处 ...

  7. Servlet技术——Servlet基础

    Servlet是运行在Web服务器端的Java应用程序,它使用Java语言编写,具有Java语言的优点.与Java程序的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Ser ...

  8. Servlet 2.3 规范

    Servlet2.3规范 第一章: servlet2.3规范用到了一下的一些规范:J2EE.JSP1.1.JNDI 在14章中讲述了规范中的所有的classes类或接口(改文中不讲述).对开发者而言以 ...

  9. Tomcat中的Host和Engine级别的servlet容器

    这边文章主要介绍的是Host容器 和 Engine容器.如果你想在同一个Tomcat上部署运行多个Context容器的话,你就需要使用Host容器,从理论上来讲,如果你的Tomcat只想要部署一个Co ...

随机推荐

  1. pl/sql developer 自动输入替换 光标自动定位

    pl/sql developer 自动输入替换 工具->首选项->用户界面->编辑器->自动替换,自己定义一些规则,然后输入key,点击tab或者空格,就可以进行替换了: SL ...

  2. 自己定义UISlider的样式和滑块

    //自己定义UISlider的样式和滑块 //轨道图片 UIImage *stetchLeftTrack = [UIImage imageNamed:@"thick"]; UIIm ...

  3. POJ 3281(Dining-网络流拆点)[Template:网络流dinic]

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbmlrZTBnb29k/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...

  4. Python——迭代器和解析(3)

    用迭代工具模拟zip和map ====================================================================== 我们已经知道了zip怎样组合 ...

  5. Chrome(谷歌浏览器) 程序开发32个经常使用插件

    Chrome(谷歌浏览器) 程序开发32个经常使用插件                   谷歌浏览器(Chrome)在2008年底才公布.但非常快它已成为火狐(Firefox)有力竞争对手. 之前. ...

  6. [ Javascript ] 内存泄露以及循环引用解析

    内存泄露 在javascript中,我们非常少去关注内存的管理. 我们创建变量,使用变量,浏览器关注这些底层的细节都显得非常正常. 可是当应用程序变得越来越复杂而且ajax化之后,或者用户在一个页面停 ...

  7. Cocos2d-x 3.0final 终结者系列教程02-开发环境的搭建

    本文主要以Mac平台和XCode5为基本系统环境和C++编程工具来介绍Cocos2d-x3.0final版的安装. 一.系统准备(预计要花掉半个月工资) MacBook Pro一台(本人的比較老.11 ...

  8. SimpleMappingExceptionResolver异常映射

    转自:https://blog.csdn.net/qqqqqq654/article/details/65767701 SimpleMappingException异常映射 当异常发生时,我们可以将它 ...

  9. HTML5动态时钟

    实现效果 源码可以去github下载 地址:https://github.com/feifeiliu/jsBlock 参考:慕课网动态时钟

  10. oracle数据库rman备份与还原

    我是oracle 界的小白,由于公司领导要求,不得不硬着头皮在网上找rman备份还原的方法,废话不多说,具体看例子(window) 运行CMD: rman target 管理员账号/密码@orcl 备 ...