??xml version="1.0" encoding="utf-8" standalone="yes"?>国产+人+亚洲,国产一区二区三区不卡视频网站
,一区二区三区四区乱视频http://www.aygfsteel.com/mlw2000/category/13103.htmlBe happy here...zh-cnThu, 01 Mar 2007 02:14:24 GMTThu, 01 Mar 2007 02:14:24 GMT60- Servlet 2.1规范概述Q中文版Q『{?/title>http://www.aygfsteel.com/mlw2000/articles/86179.htmlmlw2000mlw2000Thu, 07 Dec 2006 14:00:00 GMThttp://www.aygfsteel.com/mlw2000/articles/86179.htmlhttp://www.aygfsteel.com/mlw2000/comments/86179.htmlhttp://www.aygfsteel.com/mlw2000/articles/86179.html#Feedback0http://www.aygfsteel.com/mlw2000/comments/commentRss/86179.htmlhttp://www.aygfsteel.com/mlw2000/services/trackbacks/86179.html和传l的Server端扩展机制相比,Servlet有如下优点:(x)
1Q?比CGI脚本快,因ؓ(f)Servlet采用?jin)不同的处理模式?br />2Q?Servlet使用的标准API为大多数Web Server所接受?br />3Q?因ؓ(f)是Java语言开发的Q所以拥有Java的所有优点,包括易于开发和q_无关{?
4Q?可以方便地访问大量的Javacd资源?
2 Servlet生命周期
一个Servlet有一个生命周期,定义?jin)一个Servlet 如何被加载和被初始化Q它怎样接收h、响应请求、怎样提供服务?br />
在代码中QServlet生命周期由接口:(x)javax.servlet.Servlet 所定义?所有的Java Servlet 必须Q直接或间接地实现javax.servlet.Servlet接口Q这h能在Servlet Engine上运行。Servlet Engine提供network Service, 响应MIME request, q行Servlet Container?javax.servlet.Servlet接口定义?jin)一些方法,在Servlet 的生命同期中q些Ҏ(gu)?x)在特定旉按照一定的序被调用。如下图Q?br />
2.1 Servlet 如何被加载(LoadQ,被实例化QInstantiatedQ?br />Servlet Engine 负责实例化和加蝲ServletQ这个过E可以在Servlet Engine 加蝲时执行,可以在Servlet 响应h时执行,也可以在两者之间的M时候执行?
2.2 Servlet如何被初始化(Initialized)
Servlet Engine 加蝲好Servlet 后,必须要初始化它。初始化时Servlet 可以从数据库里读取初始数据,建立JDBC ConnectionQ或者徏立对其它有h(hun)值的资源的引用?
在初始化阶段QInit( )Ҏ(gu)被调用。这个方法在javax.servlet.Serlet接口中定义。Init( )Ҏ(gu)以一个Servlet 配置文gQServletConfig 型)(j)为参数。Servlet configuration 对象由Servlet Engine 实现Q可以让Servlet 从中d一些name-value对的参数倹{ServletConfig对象q可以让Servlet access 一个Servlet Context对象?
2.3 Servlet 如何处理h
Servlet 被初始化以后Q就处于能响应请求的qA状态。每个对Servlet 的请求由一个Servlet Request 对象代表。Servlet l客L(fng)的响应由一个Servlet Response对象代表?
当客L(fng)有一个请求时QServlet Engine ServletRequest 和ServletResponse对象都{发给ServletQ这两个对象以参数的形式传给ServiceҎ(gu)。这个方法由javax.servlet.Servlet定义、ƈ由具体的Servlet 实现?br />Servletq可以实?ServletRequest 和ServletResponse接口。ServletRequest接口可以让Servlet 获取客户端请求中的参数。如form data, request信息Q协议类型等{。Servlet 可以从ServletInputStream中drequest 数据。ServletResponse接口允许Servlet讄response headers和status codes 。实现这个接口可以Servlet能访问ServletOutputStream用来向客户端返回数据?
2.4 多线E和映射QMappingQ?
在多U程环境中,大多数Servlet 必须能处理同时发生的多个h。但一U情况例外,是当一个Servlet 实现?SingleThreadModel接口Q这L(fng)Servlet 只会(x)响应同一旉的一个请求?br />ServletҎ(gu)Servlet Engine 的Mapping 来响应客L(fng)h、MappingURL和Servlet实例相对应。比如:(x)/hello/index.html可以对应HelloServlet?然而,一个对应也可以一个URL和多个Servlet实例相对应。比如,一个分布式的Servlet Engine q行在多台机器上Ӟ 同一个Servlet 可以有多个实例运行在不同的服务器上,以均衡处理的负蝲。作Z个Servlet 开发者。你不能假定Servlet来只有一个实例?br />
2.5 Servlet如何被释?
Servlet Engine 没有必要在Servlet 生命周期的每一D|间内都保持Servlet的状态。Servlet Engine可以随时随意使用或释放Servlet。因此,你不能依赖Servlet class或其成员来存贮信息?
当Servlet Engine 判断一个Servlet应当被释放时Q(比如说engine准备Shut down 或需要回收资源)(j)engine必须让Servlet 能释攑օ正在使用的Q何资源,q保存持l性的状态信息。这些可以通过调用Servlet的destroyҎ(gu)来实现?
当Servlet Engine 释放一个servlet 以前必须让其完成当前实例的serviceҎ(gu)或是{到timeoutQ如果engine定义?jin)timeoutQ。当engine释放一个Servlet以后Qengine不能再请求{发给它,engine必须d释放该servletq将其标明ؓ(f)可回收的Q给garbage collectionQ?
3 Servlet Mapping技?
作ؓ(f)一个Servlet Engine 开发者,你可以随意规定如何将客户端的h映射到Servlets。Specification本nq不强制q种规则Q然而你可以使用下面M一U徏议:(x)
1Q?你可以一个servlet 只和一个URL对应?如:(x)URL/feedback/index.html对应feedBack class?br />2Q?可以认ؓ(f)指定的某些目录下全是Servlet?br />3Q?可以指定以特D的后缀名结h为Servleth?如:(x)*.thtml认ؓ(f)是Servlet?
4Q?使用特定的URL:/servlet/servlet_name.
5Q?可以直接用Servlet的class名来Ȁzd?如:(x)/servlet/com.foo.servlet.MailServlet.
4 Servlet Context ServletContext 接口
定义?jin)一个Servlet context 对象Q保存着Servlet engine 的信息。通过Servlet context, Servlet 可以记日志文Ӟ可以获取资源和对象(比如RequestDispatcherQ。一个Servlet 只能在一个Servlet context 下运行,但不同的Servlet能拥有Servlet Engine 的不同视图?br />如果一个Servlet Engine支持虚拟LQ每个虚拟主机拥有一个Servlet context,它不能被多个虚拟L׃n?br />Servlet Engine 可以让Servlet Context拥有自己的范_(d)p作ؓ(f)URL的一部分。如一个Servlet Context 属于一个银行应用,可以被映到/bankQ这时一个getContexth(?bank/fooServlet发出)返?bank的Servlet Context?
5 HTTP Sessions
HTTP是一个stateless的协议,Z(jin)建立有效的Web Server Application, 你必能识别来自q程客户端的众多h中哪些是属于同一个客L(fng)的。有许多q踪session的方法,但都很复杂,难于使用?
但是Java Servlet API提供?jin)一个简单的接口Q允许Servlet Engine来通过M途径q踪一个用L(fng)session?br />
5.1创徏一个session
因ؓ(f)HTTP是一U?h--应答"式的协议。一个sessionL被认为是新的Q直到有客户端joinq来。Join意思是客户端向Server端返回了(jin)session的追t信息,指明?jin)session已经被徏立?br />如果客户端没有join一个sessionQ你׃能假定接下来的客L(fng)响应是属于当前的session?
如果有下q情况出现sessionp认ؓ(f)是新?
1.客户端还不知道Q何关于此session的信息?
2. 客户端选择不加入sessionQ比如客L(fng)拒绝接受cookies?
作ؓ(f)一个servlet开发者,你必设计Web Application能处理客L(fng)没有或不能加入一个session的情c(din)Server保持session对象一D|_(d)q个旉可以由Server或Servlet指定。当一个sessionq期后,Server释放session对象和其它与之绑定在一L(fng)所有对象?br />
5.2 l定对象C个session
如果有需要,比如能帮助你处理应用中的数据需要,你可能会(x)l定一些对象到一个session中。你可以l定M对象到HttpSession对象中,只要用唯一的标识名。Q何绑定到session中的对象对其它Q何一个处理同一个session中的h的Servlet来讲Q都是可见的。一些对象需要知道自׃么时候被攑օ或移Z个sessionQ你可以通过HttpSession Binding Listener接口来获得这些信息。当你的servlet在session中存储或释放数据Ӟservlet engine(g)查对象是否通过实现Http Session Binding Listener的类来绑定,如果是,接口中的Ҏ(gu)通知对象Q它已被l定?
]]>
վ֩ģ壺
|
|
|
|
ǭ|
|
|
ȷ|
|
|
|
³|
Դ|
˫|
Ϫ|
ʯ|
|
Ϫ|
ͳ|
ְ|
|
|
ӡ|
|
|
|
¡|
|
|
|
|
Ͱ|
ij|
ȫ|
ɽ|
ݸ|
|
|
ƽ|
|
ղ|