Java Servlet 规范 版本 2.4 (1)

chap.1 概述 1.1 什么是servlet?

servlet是一种基于java技术的web组件,由容器管理,产生动态内容。像其他基于java技术的组件一样,servlet是平台无关的java类,它被编译成平台中立的字节码,由支持java技术的web服务器动态的加载和执行。容器,有时称为servlet引擎,是提供servlet功能的web服务器扩展。servlet与web客户端通过由servlet容器实现的请求/响应模式交互。

1.2 什么是servlet容器?

servlet容器是web服务器或应用程序服务器的一部分,它通过发送请求和响应来提供网络服务,解码基于mime的请求,编码基于mime的响应。servlet容器还通过servlet的生命周期控制和管理servlet。

servlet容器可以被构建到web服务器主机,或者通过服务器本地的扩展api作为附加组件被安装到web服务器中。servlet容器也可以被构建到或者可能被安装到支持web的应用程序服务器上。

所有的servlet容器必须支持http作为请求和响应的协议,但是额外的基于请求/响应的协议,例如https(ssl之上的http)也可以支持。容器必须实现的http规范的版本是http/1.0和http/1.1。因为容器可能有rfc 2616(http 1.1)中描述的缓存机制,它可以在客户端请求被传送到servlet之前修改请求,也可以在响应发送到客户端之前修改响应,或者也可以使用与rfc 2616一致的方式不将请求传送到servlet来响应请求。

servlet容器可以在servlet执行的环境中设置安全限制。在java 2平台标准版(java ee, v.1.3 或者以上) 或java 2平台企业版(java ee, v.1.3 或者以上) 环境中,这些限制应该通过使用java 2平台定义的权限架构来设置。例如,高级的应用程序服务器可能限制线程对象的创建,来保证容器中的其他组件不受到负面影响。

j2se 1.3是在java平台下构建servlet容器的最低版本。

1.3 例子

以下是事件的典型序列:

1. 客户端(例如web浏览器)访问web服务器,创建http请求。

2. 请求被web服务器接收,并且传递到servlet容器。servlet容器可以和web服务器主机运行在同一个进程中,或者在同一个主机的不同进程中,或者是不同主机的不同进程中来处理请求。

3. servlet容器根据servlet配置确定调用哪个servlet,同时使用表示请求和响应的对象调用它。

4. servlet使用request对象查找远程用户是谁,请求中传递了什么http post参数,以及其他相关数据。servlet执行程序的逻辑,同时生成数据发送回客户端。它通过响应对象将数据发送回客户端。

5. 一旦servlet完成处理请求,servlet容器保证响应被正确的刷新,同时将控制权交回web服务器主机。

1.4 比较servlet和其他技术 在功能上,servlet介于公共网关接口(cgi)和专用服务器扩展,例如netscape server api(nsapi)或apache modules之间。

servlet与其他服务器扩展机制相比,有以下优势:

通常比cgi脚本更快,因为它使用不同的处理模型。

使用很多web服务器支持的标准api。

有java编程语言的所有优点,包括易于开发和平台独立。

可以访问大量的java平台上有效的api。 1.5 与java 2平台企业版的关系

java servlet api v.2.4是java 2平台企业版v1.4必须的api。servlet容器和部署在其中的servlet,为了在j2ee环境中执行,必须遵循在j2ee规范中描述的额外的要求。

1.6 与java servlet version 2.3规范的兼容性

本节描述了采用了本版本规范的兼容性问题。

1.6.1 httpsessionlistener.sessiondestroyed

在以前版本的规范中,这个方法定义为:通知session无效。

在2.4版本中,这个方法变成:通知session将要变成无效。

这样在session无效之前进行通知。如果代码假定以前的状态,那么必须修改成新的状态。

1.6.2 servletrequest 方法 getremoteport, getlocalname,getlocaladdr, getlocaport

在本版本的规范中,以下的方法被加入到servletrequest接口中。

public int getremoteport()

返回发送请求的客户端或者最后代理的ip源端口。

public java.lang.string getlocalname()

返回接收请求的ip接口的主机名称。

public java.lang.string getlocaladdr()

返回接收请求的接口的ip地址。

public int getlocalport()

返回接收请求的接口的ip端口号。

注意,这个附加变化变化导致一些情况下代码不兼容,例如,当开发者实现servletrequest 接口时。在这种情况下,需要保证所有的新方法都被实现。


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值