Servlet 3.1 标准(一)
概述
什么是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容器能够允许的最低版本。
一个例子
下面是一些典型事件的序列:
- 一个客户端(比如浏览器)访问一个Web服务器产生一个 HTTP 请求。
- Web服务器接受了请求,并且将其移交给Servlet容器。Servlet容器可以运行在同一个Web服务器的同一进程或者不同进程,或者不同Web服务器上,只要能够处理请求。
- Servlet容器来决定哪一个Servlet来调用,这都取决于Servlet的配置,然后调用Servlet,同时还有对应的代表请求和应答的对象。
- Servlet通过请求对象来找到发送请求的客户端信息,一些参数和其他一些相关的数据也在是request中的一部分。Servlet会执行一些程序员实现的逻辑以及生成一些信息返回给客户端。Servlet会将这些信息通过应答对象返回给客户端。
- 一旦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 标准(一)的更多相关文章
- [Servlet&JSP] 标准标签
在JSP的规范中提供了一些标准标签(Standard Tag),全部的容器都支持这些标签,它能够协助编写JSP时降低Scriptlet的使用. 全部的标准标签都使用jsp:作为前置.这些标准标签是在J ...
- Servlet 3.0 异步模式
Servlet 3.0标准新增了异步处理的支持. 进行异步处理的Servlet和作用于该Servlet的拦截器都必须声明对于异步处理的支持.
- Servlet、Filter 生命周期
Servlet作为JavaEE必须掌握的内容,Struts2通过使用Filter的功能实现了一个MVC的框架.因此掌握这Servlet以及Filter的生命周期显得非常重要. 1. Servlet的生 ...
- 漫谈servlet技术
1.要谈到Servlet技术,不得不先谈谈动态网页的概念. 编写过网页的人都知道,浏览器能够根据HTML静态标记语言来显示各式各样的网页.但是如果我们需要在网页上完成一些业务逻辑:比如登陆验证.或者说 ...
- DNS,TCP,IP,HTTP,socket,Servlet概念整理
DNS,TCP,IP,HTTP,socket,Servlet概念整理 常见的协议虽然很容易理解,但是看了之后过一段时间不看还是容易忘,笔记如下,比较零碎,勉强供各位复习.如有错误欢迎指正. D ...
- JavaWeb(三)servlet
Servlet * 什么是Servlet 是运行在web服务器端的Java应用程序,它使用JAVA语言编写,具有Java语言的优点.与Java程序的区别:Servlet对象主要封装了对Http请求的处 ...
- Servlet技术——Servlet基础
Servlet是运行在Web服务器端的Java应用程序,它使用Java语言编写,具有Java语言的优点.与Java程序的区别是,Servlet对象主要封装了对HTTP请求的处理,并且它的运行需要Ser ...
- Servlet 2.3 规范
Servlet2.3规范 第一章: servlet2.3规范用到了一下的一些规范:J2EE.JSP1.1.JNDI 在14章中讲述了规范中的所有的classes类或接口(改文中不讲述).对开发者而言以 ...
- Tomcat中的Host和Engine级别的servlet容器
这边文章主要介绍的是Host容器 和 Engine容器.如果你想在同一个Tomcat上部署运行多个Context容器的话,你就需要使用Host容器,从理论上来讲,如果你的Tomcat只想要部署一个Co ...
随机推荐
- UVA - 348Optimal Array Multiplication Sequence(递推)
id=19208">题目:Optimal Array Multiplication Sequence 题目大意:给出N个矩阵相乘.求这些矩阵相乘乘法次数最少的顺序. 解题思路:矩阵相乘 ...
- Android - 找到当前类的Context
找到当前类的Context 本文地址: http://blog.csdn.net/caroline_wendy 假设是在onContinueCreate或onCreate中, 直接使用this, 就代 ...
- eclipse快捷键,比較有用
1:Ctrl+Pg Up 向左切换选项卡 , 切换到头显示隐藏选项卡(等于Ctrl+e). 2:Ctrl+Pg Dn 向右切换选项卡 , 切换到头显示隐藏选项卡(等于Ctrl+e). ...
- Spring——概览
Spring是什么? Spring是帮助开发者简化开发工作的工具. Spring的出现就是为了简化人们的复杂的开发.能够在不论什么Java应用中使用,使用了主要的JavaBean取代EJB. Spri ...
- Linux命令(一)——简单命令
一.简单命令 1.pwd命令 显示当前工作的全路径名. 2.date命令 显示系统当前的日期和时间. 3.who命令 显示当前已登录到系统的所有用户名,及其终端名和登录到系统的时间. 4.cal命令 ...
- LNMP 架构 上传文件
修改PHP上传文件大小限制的方法 修改PHP上传文件大小限制的方法1. 一般的文件上传,除非文件很小.就像一个5M的文件,很可能要超过一分钟才能上传完.但在php中,默认的该页最久执行时间为 30 ...
- luogu1347 排序
题目大意 一个不同的值的升序排序数列指的是一个从左到右元素依次增大的序列.给你一系列形如A<B的关系,并要求你判断是否能够根据这些关系确定这个数列的顺序(能,矛盾,不确定).确定n个元素的顺序后 ...
- sql server drop login failed
https://stackoverflow.com/questions/37275/sql-query-for-logins https://www.mssqltips.com/sqlserverti ...
- LightOJ--1149--Factors and Multiples(二分图好题)
Factors and Multiples Time Limit: 2000MS Memory Limit: 32768KB 64bit IO Format: %lld & %llu ...
- 当使用Spring MVC @Valid对输入框进行验证的时候,可能会遇到以下的异常:Neither BindingResult nor plain target object for bean name ‘mybean’ available as request attribute
转自:https://www.cnblogs.com/wenhulu/p/5555457.html 当使用Spring MVC @Valid对输入框进行验证的时候,可能会遇到以下的异常: Neithe ...