J2EE,GenericServlet类

September 2, 2010 | tags    | views
Comments 0

 GenericServlet 类可以说时JSDK 中最重要的类,也是最基本的类。程序员要编写Servlet 应用程序,一般要继承JSDK 提供的GenericServlet 类或它的子类HttpServlet 类。

编程思路:下面是一个简单的例子,在服务器端执行它,就是向客户端的浏览器中输出“HELLO WORLD "以及服务器的时间等信息。

  HelloWorldServlet.java 的源代码如下:

import java.io.*;
import java.util.Date;
import javax.servlet.*;

public class HelloWorldServlet extends GenericServlet
{
String initString;
public void init(ServletConfig config) throws ServletException
{
//父类的init方法完成对象ServletConfig的存储工作。
super.init(config);
initString=new String("I have veen initialized");
}

//在Sercice方法中,实现对客户请求的响应。它抛出两个例外ServletException
public void service(ServletRequest req,ServletResponse res)
throws ServletException,IOException
{
//类Date得到服务器当前的时间。
Date today = new Date( );
ServletOutputStream out = res.getOutputStream( );
out.println("HELLO WORLD");
out.println(today.toString());
out.println(getServletInfo());
}

public void Destroy( )
{
}

public String getServletInfo( )
{
return "HELLO WORLD";
}
}

编程技巧说明:

Service 方法是类GenericServlet 中最重要的方法。每次客户向服务器发出请求时,服务器就会调用这个方法。编程人员若想对客户的请求进行响应的话,就必须覆盖这个方法,并在这个方法中加入自己的代码来具体实现对客户的响应。Service 有两个参数,ServletRequest 和ServletResponse。其中ServletRequest 保存了客户向服务器发请求的各种属性。

对象ServletResponse 用来设置如何对客户进行响应,它有以下三个方法:

* setContentType(String) 用来设置对客户响应的类型。
* setContentlength(int) 用来设置对客户响应的长度。
* getOutputStream() 它返回一个写响应数据的输出流。

在例子中,我们把这个输出流传递给ServletOutputStream 对象,它是java.io.outputStream 的子类,我们可以通过它把应答数据送还到客户端的浏览器中。


GenericServlet类的简述:public abstract class GenericServlet extends java.lang.Object 
implements Servlet, ServletConfig, java.io.Serializable

java.lang.Object
  |
  +--javax.servlet.GenericServlet
父类/接口:java.io.Serializable接口,Servlet接口,ServletConfig接口
子类:HttpServlet类

该类定义一个普通的、依赖于协议的servlet,如果要写一个用于Web的HTTP servlet,扩展HpptServlet。
一个servlet可以直接扩展GenericServlet类,然而扩展一个指定协议的子类(如HttpServlet)显得更为普遍。
GenericServlet类使编写servlets变得更容易。它提供了一般版本的生命周期方法:inin(),destroy()和来自ServletConfig接口的方法。GenericServlet类也实现了log()方法,这是一个在ServletContext类中定义的方法。
由于GenericServlet是一个抽象类,所以要扩展这个类,你必须实现这个类的所有抽象方法。

destory()方法作用与Servlet.destory()方法相同,略。

getInitParameter()方法概述:public java.lang.String getInitParameter(java.lang.String name)
返回一个包含初始化变量的值的字符串,如果变量不存在则返回null,该方法从servlet的ServletConfig变量获得命名变量的值。

getInitParameterNames()方法概述:public java.util.Enumeration getInitParameterNames()
该方法返回一个包含所有初始化变量的枚举函数。如果没有初始化变量,则返回一个空枚举函数。

getServletConfig()方法概述:public ServletConfig getServletConfig()
返回一个servlet的ServletConfig对象getServletContext()方法与ServletConfig.getServletContext()相同,略。

getServletInfo()方法概述:public java.lang.String getServletInfo()
该方法来源于Servlet接口,覆写该方法以产生有意义的信息。(如:版本号、版权、作者等)
 
init(ServletConfig config)方法概述:public void init(ServletConfig config) throws ServletException
该方法来源于Servlet接口,覆写该方法,必须调用super.init(config)

init()方法概述:public void init() throws ServletException
该方法重载Servlet.init(ServletConfig config)方法而无需调用super.init(config)。而ServletConfig对象依然可以通过调用getServletConfig()方法获得。

log(java.lang.String msg)方法概述:public void log(java.lang.String msg)
该方法把指定的信息写入一个日志文件,见ServletContext.log(String)。

log(java.lang.String message,java.lang.Throwable t)方法概述:public void log(java.lang.String message,java.lang.Throwable t)
该方法把解释性的内容和抛出的例外信息写入一个日志文件。

service()方法概述:public abstract void service(ServletRequest req,ServletResponse res)
                      throws ServletException,java.io.IOException
该方法必须由servlet容器调用以允许servlet 对请求作出响应。
见Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)。

getServletName(),见ServletConfig.getServletName()。



文章本月排行 文章本年排行
   



发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。