zoukankan      html  css  js  c++  java
  • 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容器能够允许的最低版本。

    一个例子

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

    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是特指的。

  • 相关阅读:
    年度开源盛会 ApacheCon 来临,Apache Pulsar 专场大咖齐聚
    开源流数据公司 StreamNative 正式加入 CNCF,积极推动云原生策略发展
    php摇杆Tiger摇奖
    php调试局部错误强制输出 display_errors
    php文件写入PHP_EOL与FILE_APPEND
    window自动任务实现数据库定时备份
    php 跨服务器ftp移动文件
    linux 关于session缓存丢失,自己掉坑里面了
    mysql 定时任务
    mysql 查询去重 distinct
  • 原文地址:https://www.cnblogs.com/qitian1/p/6461579.html
Copyright © 2011-2022 走看看