servlet 问题

 

2.3 servlet

servlet是运行于Web服务器或应用服务器的服务器端Java程序(注意,这里的应用服务器的是指应用的部署和运行平台软件:Application Server)。servlet和Web服务器的关系就象applet与浏览器的关系一样。Applet在游览器中装入和执行,而servlet是在Web服务器中装入和执行。servlet API定义了servlet与Web服务器间的标准接口,这使得servlet的开发独立于Web服务器。

2.3.1、servlet的访问方式

通过浏览器可以有几种途径访问servlet:

(1)       HTML表单:通常servlet由HTML表单中的Sumbit按钮驱动,用户的输入数据通过POST或GET方法传递给servlet。

(2)       超链接:servlet也可以超链接的形式指定,通过超链接激活服务或servlet的doGet方法。

(3)       SERVLET标记:一些Web服务器支持HTML文档的SERVLET标记或者<!—include-->标记。执行时servlet的doGet方法被激活,输出结果代替SERVLET标记出现在HTML文档中。在JSP0.92和1.0规范中,支持的include语法是:<%@ include file=”相对URL路径”>

(4)       通过servlet访问:通过getServletContext().getServlet(servletname)可访问其它的servlet。值得注意的是,Java servlet API2.1建议不采用这种方法,它提供了RequestDispatcher接口,它可以转发请求调用另外的servlet。

2.3.2、Java Servlet API

如前所述servlet API定义了Web服务器与servlet之间的标准接口。客户端请求被发向Web服务器,Web服务器激活相应的servlet,并通过标准API接口为客户端请求进行服务。该API包括两个包:javax.servlet和javax.servlet.http,前者包含与协议无关的servlet类,这使得servlet可用于任何请求/应答型的协议如FTP、SMTP、POP等;后者包含了用于支持HTTP servlet类。关于类的详细信息参见sun的JavaDoc。

    类似于applet,一个servlet程序中包含一组方法,但不包含main方法。这些方法将由服务器调用。可以通过创建一个java类并实现servlet的接口来建立一个servlet程序。通常继承与协议无关的通用GenericServlet类,或是特定的HttpServlet类。servlet开发包JSDK中包含基本的servlet类和实现参考。

2.3.3、Servlet生命周期管理

基于servlet的网络应用的用户端程序并非直接与servlet交互,而是发请求给Web


server,由Web server通过servlet API激活servlet。Web server的主要任务包括为servlet初使化、活servlet的doGet或doPost方法、销毁servlet进程等。在Web server中,每个servlet只有一个进程,为每个客户端请求创建一个线程(每个线程处理一个客户端请求, 如图figure2),servlet的这一特性使其运行效率非常高效。

 

 

 

 


 

 

servlet可动态加载(在第一个请求到来时,Web server将servlet装入内存)也可以在Web server初使化时加载。装入内存后,Web服务器通过servlet接口与servlet通信,接口定义了五种方法:init、destroy、 getServletConfig和getServletInfo。下面对五种方法简单介绍。

init方法

当servlet被首次加载时,调用init方法。对于某些需要执行一次而不是每个请求到

来时都要执行的任务,只需要实现这一方法即可。一个典型例子是连接一个数据库获得缺省数据的情形。init方法只被调用一次,而且需在处理其它请求之前完成调用。

service方法

每产生一个客户端请求,该方法就被调用一次。它为客户端请求创建一个应答对象

HttpServlet的子类并没有提供该方法的实现。当Web server调用HttpServlet的service方法时,根据所发请求是GET还是POST,调用相应的doGet或是doPost方法。两种重要方法doGet和doPost由servlet开发人员实现。

doPost方法

通过HTML表单提交了HTTP POST请求时,将调用该方法。与POST请求相关联的参数

独立传递给Web服务器。当在server端需对发来的数据作修改时采用doPost方法。

doGet方法

当在游览器中指定了一个URL时,HTTP GET是客户端采用的缺省方法。doGet是Web

server对用户端请求的响应方法。与doPost不同的是,当在server端不需要对发来的数据修改时或是发来的参数非敏感数据时采用doGet方法。参数数据被附加在URL之后通过一个HTTP请求发送给Web server。

servlet的输出响应可以是以下几种情况之一,HTML页面、HTTP错误代码、重定向到别

外的URL、servlet或JSP。

destroy方法

当Web服务器调用此方法卸载一个servlet程序。完成清理现场的操作如释放数据库连接或关闭文件等只须继承GenericServlet或HttpServlet,在其子类中实现destroy方法即可。

getServletConfig方法

该方法返回ServletConfig实例,通过该实例得到初使化参数

和ServletContext对象。ServletContext对象提供访问servlet环境变量和日

志的方法。

GetServletInfo

它提供servlet的作者、版本、版权等信息。

doGet和doPost方法由Web服务器激活后,应答对象提供同浏览器的交互方法以及客

户端请求的相关信息。相关的类包括:javax.servlet.ServletResponse、javax.servlet.ServletRequest;javax.servlet.http.HttpServletResponse,

javax.servlet.http.HttpServletResponse。

你可能感兴趣的:(servlet 问题)