J2EEServletAPI中文说明文档.docx

上传人:b****3 文档编号:5426250 上传时间:2022-12-16 格式:DOCX 页数:27 大小:38.52KB
下载 相关 举报
J2EEServletAPI中文说明文档.docx_第1页
第1页 / 共27页
J2EEServletAPI中文说明文档.docx_第2页
第2页 / 共27页
J2EEServletAPI中文说明文档.docx_第3页
第3页 / 共27页
J2EEServletAPI中文说明文档.docx_第4页
第4页 / 共27页
J2EEServletAPI中文说明文档.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

J2EEServletAPI中文说明文档.docx

《J2EEServletAPI中文说明文档.docx》由会员分享,可在线阅读,更多相关《J2EEServletAPI中文说明文档.docx(27页珍藏版)》请在冰豆网上搜索。

J2EEServletAPI中文说明文档.docx

J2EEServletAPI中文说明文档

JavaEEServlet2.1说明文档

一、 JavaEE Servlet API的组成

      JavaEE Servlet API由两个软件包组成:

一个是对应HTTP的软件包,另一个是不对应HTTP的通用的软件包。

这两个软件包的同时存在使得JavaEE Servlet API能够适应将来的其他请求-响应的协议。

      这份文档以及刚才提及的Javadoc格式的文档都描述了这两个软件包,Javadoc格式的文档还描述了你应该如何使用这两个软件包中的所有方法。

二、有关规范

      你也许对下面的这些Internet规范感兴趣,这些规范将直接影响到Servlet API的发展和执行。

你可以从http:

//info.internet.isi.edu/7c/in-notes/rfc/.cache 找到下面提到的所有这些RFC规范。

      RFC 1738 统一资源定位器(URL) 

      RFC 1808 相关统一资源定位器 

      RFC 1945 超文本传输协议--HTTP/1.0 

      RFC 2045 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第一部分:

Internet信息体格式 

      RFC 2046 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第二部分:

媒体类型 

      RFC 2047 多用途网际邮件扩充协议(MIME)(多用途Internet邮件扩展)第三部分:

信息标题扩展用于非ASCII文本 

      RFC 2048 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第四部分:

 注册步骤 

      RFC 2049 多用途Internet邮件扩展(多用途网际邮件扩充协议(MIME))第五部分:

一致性标准和例子 

      RFC 2068 超文本传输协议 -- HTTP/1.1 

      RFC 2069 一个扩展HTTP:

摘要访问鉴定 

      RFC 2109 HTTP状态管理机制 

      RFC 2145 HTTP 版本号的使用和解释 

      RFC 2324 超文本Coffee Pot控制协议 (HTCPCP/1.0)

      万维网协会(http:

//www.w3.org)管理着这些协议的规范和执行。

三、有关Java Servlets

      JavaTM servlets是一个不受平台约束的Java小程序,它可以被用来通过多种方法扩充一个Web服务器的功能。

你可以把Servlet理解成Server上的applets,它被编译成字节码,这样它就可以被动态地载入并用效地扩展主机的处理能力。

      Servlet与applets不同的地方是,它不运行在Web浏览器或其他图形化的用户界面上。

Servlet通过servlet引擎运行在Web服务器中,以执行请求和响应,请求、响应的典型范例是HTTP协议。

      一个客户端程序,可以是一个Web浏览器,或者是非其他的可以连接上Internet的程序,它会访问Web服务器并发出请求。

这个请求被运行在Web服务器上的Servlet引擎处理,并返回响应到Servlet。

Servlet通过HTTP将这个响应转发到客户端。

在功能上,Servlet与CGI、NSAPI有点类似,但是,与他们不同的是:

Servlet具有平台无关性。

    四、Java Servlet概论

      Servlet与其他普通的server扩展机制有以下进步:

      因为它采用了不同的进程处理模式,所以它比CGI更快。

      它使用了许多Web服务器都支持的标准的API。

      它继承了Java的所有优势,包括易升级以及平台无关性。

      它可以调用Java所提供的大量的API的功能模块。

      这份文档说明了Java Servlet API的类和接口的方法。

有关更多的信息,请参看下面的API说明。

      1.Servlet的生命周期

      一个Java servlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。

Servlet的生命周期被javax.servlet.Servlet这个接口所定义。

      所有的Java Servlet都会直接地或间接地执行javax.servlet.Servlet接口,这样它才能在一个Servlet引擎中运行。

Servlet引擎是Web 服务器按照Java Servlet API定制的扩展。

Servlet引擎提供网络服务,能够理解MIME请求,并提供一个运行Servlet的容器。

      javax.servlet.Servlet接口定义了在Servlet的生命周期中特定时间以及特定顺序被调用的方法。

      2.Servlet的解析和载入

      Servlet引擎解析并载入一个Servlet,这个过程可以发生在引擎启动时,需要一个Servlet去响应请求时,以及在此之间的任何时候。

      Servlet引擎利用Java类载入工具载入一个Servlet,Servlet引擎可以从一个本地的文件系统、一个远程的文件系统以及网络载入Servlet。

      3.Servlet的初始化

      Servlet引擎载入Servlet后,Servlet引擎必须对Servlet进行初始化,在这一过程中,你可以读取一些固定存储的数据、初始化JDBC的连接以及建立与其他资源的连接。

      在初始化过程中,javax.servlet.Servlet接口的init()方法提供了Servlet的初始化信息。

这样,Servlet可以对自己进行配置。

      init()方法获得了一个Servlet配置对象(ServletConfig)。

这个对象在Servlet引擎中执行,并允许Servlet通过它获处相关参数。

这个对象使得Servlet能够访问ServletContext对象。

      4.Servlet处理请求

      Servlet被初始化之后,它已经可以处理来自客户端的请求,每一个来自客户端的请求都被描述成一个ServletRequest对象,Servlet的响应被描述成一个ServletResponse对象。

      当客户端发出请求时,Servlet引擎传递给Servlet一个ServletRequest对象和一个ServletResponse对象,这两个对象作为参数传递到service()方法中。

      Servlet也可以执行ServletRequest接口和ServletResponse接口。

ServletRequest接口使得Servlet有权使用客户端发出的请求。

Servlet可以通过ServletInputStream对象读取请求信息。

      ServletResponse接口允许Servlet建立响应头和状态代码。

通过执行这个接口,Servlet有权使用ServletOutputStream类来向客户端返回数据。

      5.多线程和映射

      在多线程的环境下,Servlet必须能处理许多同时发生的请求。

例外的情况是这个Servlet执行了SingleThreadModel接口,如果是那样的话,Servlet只能同时处理一个请求。

      Servlet依照Servlet引擎的映射来响应客户端的请求。

一个映射对包括一个Servlet实例以及一个Servlet返回数据的URL,例如:

HelloServlet with /hello/index.html。

      然而,一个映射可能是由一个URL和许多Servlet实例组成,例如:

一个分布式的Servlet引擎可能运行在不止一个的服务器中,这样的话,每一个服务器中都可能有一个Servlet实例,以平衡进程的载入。

作为一个Servlet的开发者,你不能假定一个Servlet只有一个实例。

      6.Servlet的卸载

      Servlet引擎并不必需保证一个Servlet在任何时候或在服务开启的任何时候都被载入。

Servlet引擎可以自由的在任何时候使用或清除一个Servlet。

因此,我们不能依赖一个类或实例来存储重要的信息。

      当Servlet引擎决定卸载一个Servlet时(例如,如果这个引擎被关闭或者需要让资源),这个引擎必须允许Servlet释放正在使用的资源并存储有关资料。

为了完成以上工作,引擎会调用Servlet的destroy()方法。

 

      在卸载一个Servlet之前,Servlet引擎必须等待所有的service()方法完成或超时结束(Servlet引擎会对超时作出定义)。

当一个Servlet被卸载时,引擎将不能给Servlet发送任何请求。

引擎必须释放Servlet并完成无用存储单元的收集

      7.Servlet映射技术

      作为一个Servlet引擎的开发者,你必须对于如何映射客户端的请求到Servlet有大量的适应性。

这份说明文档不规定映射如何发生。

但是,你必须能够自由地运用下面的所有技术:

      映射一个Servlet到一个URL

      例如,你可以指定一个特殊的Servlet它仅被来自/feedback/index.html的请求调用。

      映射一个Servlet到以一个指定的目录名开始的所有URL

      例如,你可以映射一个Servlet到/catalog,这样来自/catalog/、 /catalog/garden和/catalog/housewares/index.html的请求都会被映射到这个Servlet。

但是来自/catalogtwo 或/catalog.html的请求没被映射。

      映射一个Servlet到所有以一个特定的字段结尾的所有URL

      例如,你可以映射一个来自于所有以in.thtml结尾的请求到一个特定的Servlet。

      映射一个Servlet到一个特殊的URL /servlet/servlet_name。

      例如,如果你建立了一个名叫listattributes的Servlet,你可以通过使用/servlet/listattributes来访问这个Servlet。

      通过类名调用Servlet

      例如,如果Servlet引擎接收了来自/servlet/com.foo.servlet.MailServlet的请求,Servlet引擎会载入这个com.foo.servlet.MailServlet类,建立实例,并通过这个Servlet来处理请求。

      8.Servlet环境

      ServletContext接口定义了一个Servlet环境对象,这个对象定义了一个在Servlet引擎上的Servlet的视图。

通过使用这个对象,Servlet可以记录事件、得到资源并得到来自Servlet引擎的类(例如RequestDispatcher对象)。

一个Servlet只能运行在一个Servlet环境中,但是不同的Servlet可以在Servlet引擎上有不同的视图。

      如果Servlet引擎支持虚拟主机,每个虚拟主机有一个Servlet环境。

一个Servlet环境不能在虚拟主机之间共享。

      Servlet引擎能够允许一个Servlet环境有它自己的活动范围。

      例如,一个Servlet环境是属于bank应用的,它将被映射到/bank目录下。

在这种情况下,一个对getContext方法的调用会返回/bank的Servlet环境。

      9.HTTP会话

      HTTP是一个没有状态的协议。

要建立一个有效的Web服务应用,你必须能够识别一个连续的来自远端的客户机的唯一的请求。

随着时间的过去,发展了许多会话跟踪的技术,但是使用起来都比较麻烦。

      Java Servlet API提供了一个简单的接口,通过这个接口,Servlet引擎可以有效地跟踪用户的会话。

      10.建立Session

      因为HTTP是一个请求-响应协议,一个会话在客户机加入之前会被认为是一个新的会话。

加入的意思是返回会话跟踪信息到服务器中,指出会话已被建立。

在客户端加入之前,我们不能判断下一个客户端请求是目前会话的一部分。

      在下面的情况下,Session会被认为是新的Session。

      客户端的Session在此之前还不知道

      客户端选择不加入Session,例如,如果客户端拒绝接收来自服务器的cookie

作为一个Servlet的开发者,你必须决定你的Web应用是否处理客户机不加入或不能加入Session。

服务器会在Web服务器或Servlet规定的时间内维持一个Session对象。

当Session终止时,服务器会释放Session对象以及所有绑定在Session上的对象。

绑定对象到Session中

      如果有助于你处理应用的数据需求,你也许需要绑定对象到Session中,你可以通过一个唯一的名字绑定任何的对象到Session中,这时,你需要使用HttpSession对象。

任何绑定到Session上的对象都可以被处理同一会话的Servlet调用。

      有些对象可能需要你知道什么时候会被放置到Session中或从Session中移开。

你可以通过使用HttpSessionBindingListener接口获得这些信息。

当你的应用存储数据到Session中,或从Session中清除数据,Servlet都会通过HttpSessionBindingListener检杳什么类被绑定或被取消绑定。

这个接口的方法会通报被绑定或被取消绑定的对象。

五、API对象的说明

      这一部分包含了对Java Servlet API的全部类和接口的详细说明。

这个说明与Javadoc API差不多,但是这份文档提供了更多的信息。

API包含了两个软件包,十二个接口和九个类。

软件包:

javax.servlet 

所包含的接口:

RequestDispatcher;Servlet;ServletConfig;ServletContext;ServletRequest;ServletResponse;SingleThreadModel。

所包含的类:

GenericServlet;ServletInputStream;ServletOutputStream;ServletException;UnavailableException。

      一、RequestDispatcher接口:

      定义:

      public interface RequestDispatcher;

      定义一个对象,从客户端接收请求,然后将它发给服务器的可用资源(例如Servlet、CGI、HTML文件、JSP文件)。

Servlet引擎创建request dispatcher对象,用于封装由一个特定的URL定义的服务器资源。

      这个接口是专用于封装Servlet的,但是一个Servlet引擎可以创建request dispatcher对象用于封装任何类型的资源。

      request dispatcher对象是由Servlet引擎建立的,而不是由Servlet开发者建立的。

      方法

      1、forward

      public void forward(ServletRequest request, ServletReponse response)

            throws ServletException, IOException;

      被用来从这个Servlet向其它服务器资源传递请求。

当一个Servlet对响应作了初步的处理,并要求其它的对象对此作出响应时,可以使用这个方法。

      当request对象被传递到目标对象时,请求的URL路径和其他路径参数会被调整为反映目标对象的目标URL路径。

      如果已经通过响应返回了一个ServletOutputStream对象或PrintWriter对象,这个方法将不能使用,否则,这个方法会抛出一个IllegalStateException。

      2、include

      public void include(ServletRequest request, ServletResponse response)

            throws ServletException, IOException

      用来包括发送给其他服务器资源的响应的内容。

本质上来说,这个方法反映了服务器端的内容。

      请求对象传到目标对象后会反映调用请求的请求URL路径和路径信息。

这个响应对象只能调用这个Servlet的ServletOutputStream对象和PrintWriter对象。

      一个调用include的Servlet不能设置头域,如果这个Servlet调用了必须设置头域的方法(例如cookie),这个方法将不能保证正常使用。

作为一个Servlet开发者,你必须妥善地解决那些可能直接存储头域的方法。

例如,即使你使用会话跟踪,为了保证session的正常工作,你必须在一个调用include的Servlet之外开始你的session

      二、Servlet接口。

      定义

      public interface Servlet

      这个接口定义了一个Servlet:

一个在Web服务器上继承了这个功能的Java类。

      方法

      1、init

      public void init(ServletConfig config) throws ServletException;

      Servlet引擎会在Servlet实例化之后,置入服务之前精确地调用init方法。

在调用service方法之前,init方法必须成功退出。

      如果init方法抛出一个ServletException,你不能将这个Servlet置入服务中,如果init方法在超时范围内没完成,我们也可以假定这个Servlet是不具备功能的,也不能置入服务中。

      2、service

      public void service(ServletRequest request, ServletResponse response)

            throws ServletException, IOException;

      Servlet引擎调用这个方法以允许Servlet响应请求。

这个方法在Servlet未成功初始化之前无法调用。

在Servlet被初始化之前,Servlet引擎能够封锁未决的请求。

      在一个Servlet对象被卸载后,直到一个新的Servelt被初始化,Servlet引擎不能调用这个方法

      3、destroy

      public void destroy();

      当一个Servlet被从服务中去除时,Servlet引擎调用这个方法。

在这个对象的service方法所有线程未全部退出或者没被引擎认为发生超时操作时,destroy方法不能被调用。

      4、getServletConfig

      public ServletConfig getServletConfig();

      返回一个ServletConfig对象,作为一个Servlet的开发者,你应该通过init方法存储ServletConfig对象以便这个方法能返回这个对象。

为了你的便利,GenericServlet在执行这个接口时,已经这样做了。

      5、getServletInfo

      public String getServletInfo();

      允许Servlet向主机的Servlet运行者提供有关它本身的信息。

返回的字符串应该是纯文本格式而不应有任何标志(例如HTML,XML等)。

      三、ServletConfig接口

      定义

      public interface ServletConfig

      这个接口定义了一个对象,通过这个对象,Servlet引擎配置一个Servlet并且允许Servlet获得一个有关它的ServletContext接口的说明。

每一个ServletConfig对象对应着一个唯一的Servlet。

      方法

      1、getInitParameter

      public String getInitParameter(String name);

      这个方法返回一个包含Servlet指定的初始化参数的String。

如果这个参数不存在,返加空值。

      2、getInitParameterNames

      public Enumeration getInitParameterNames();

      这个方法返回一个列表String对象,该对象包括Servlet的所有初始化参数名。

如果Servlet没有初始化参数,getInitParameterNames返回一个空的列表。

      3、getServletContext

      public ServletContext getServletContext();

      返回这个Servlet的ServletContext对象。

      四、ServletContext接口

      定义

      public interface ServletContext

      定义了一个Servlet的环境对象,通过这个对象,Servlet引擎向Servlet提供环境信息。

      一个Servlet的环境对象必须至少与它所驻留的主机是一一对应的。

在一个处理多个虚拟主机的Servlet引擎中(例如,使用了HTTP1.1的主机头域),每一个虚拟主机必须被视为一个单独的环境。

此外,Servlet引擎还可以创建对应于一组Servlet的环境对象。

      方法 

      1、getAttribute

      public Object getAttribute(String name); 

      返回Servlet环境对象中指定的属性对象。

如果该属性对象不存在,返回空值。

这个方法允许访问有关这个Servlet引擎的在该接口的其他方法中尚未提供的附加信息。

      2、getAttributeNames

      public Enumeration getAttributeNames();

      返回一个Servlet环境对象中可用的属性名的列表。

      3、getContext

      publ

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1