J2EE,GenericServlet类
GenericServlet 类可以说时JSDK 中最重要的类,也是最基本的类。程序员要编写Servlet 应用程序,一般要继承JSDK 提供的GenericServlet 类或它的子类HttpServlet 类。 HelloWorldServlet.java 的源代码如下:
编程思路:下面是一个简单的例子,在服务器端执行它,就是向客户端的浏览器中输出“HELLO WORLD "以及服务器的时间等信息。
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 java.lang.Object 该类定义一个普通的、依赖于协议的servlet,如果要写一个用于Web的HTTP servlet,扩展HpptServlet。 destory()方法作用与Servlet.destory()方法相同,略。 getInitParameter()方法概述:public java.lang.String getInitParameter(java.lang.String name) getInitParameterNames()方法概述:public java.util.Enumeration getInitParameterNames() getServletConfig()方法概述:public ServletConfig getServletConfig() getServletInfo()方法概述:public java.lang.String getServletInfo() init()方法概述:public void init() throws ServletException log(java.lang.String msg)方法概述:public void log(java.lang.String msg) 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) getServletName(),见ServletConfig.getServletName()。
implements Servlet, ServletConfig, java.io.Serializable
|
+--javax.servlet.GenericServlet
父类/接口:java.io.Serializable接口,Servlet接口,ServletConfig接口
子类:HttpServlet类
一个servlet可以直接扩展GenericServlet类,然而扩展一个指定协议的子类(如HttpServlet)显得更为普遍。
GenericServlet类使编写servlets变得更容易。它提供了一般版本的生命周期方法:inin(),destroy()和来自ServletConfig接口的方法。GenericServlet类也实现了log()方法,这是一个在ServletContext类中定义的方法。
由于GenericServlet是一个抽象类,所以要扩展这个类,你必须实现这个类的所有抽象方法。
返回一个包含初始化变量的值的字符串,如果变量不存在则返回null,该方法从servlet的ServletConfig变量获得命名变量的值。
该方法返回一个包含所有初始化变量的枚举函数。如果没有初始化变量,则返回一个空枚举函数。
返回一个servlet的ServletConfig对象getServletContext()方法与ServletConfig.getServletContext()相同,略。
该方法来源于Servlet接口,覆写该方法以产生有意义的信息。(如:版本号、版权、作者等)
init(ServletConfig config)方法概述:public void init(ServletConfig config) throws ServletException
该方法来源于Servlet接口,覆写该方法,必须调用super.init(config)
该方法重载Servlet.init(ServletConfig config)方法而无需调用super.init(config)。而ServletConfig对象依然可以通过调用getServletConfig()方法获得。
该方法把指定的信息写入一个日志文件,见ServletContext.log(String)。
该方法把解释性的内容和抛出的例外信息写入一个日志文件。
throws ServletException,java.io.IOException
该方法必须由servlet容器调用以允许servlet 对请求作出响应。
见Servlet.service(javax.servlet.ServletRequest, javax.servlet.ServletResponse)。