home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 November / PCWorld_2000-11_cd.bin / Komunik / sambar444 / _SETUP.1 / javaeng.jar / javax / servlet / GenericServlet.java < prev    next >
Text File  |  2000-08-09  |  6KB  |  213 lines

  1. /*
  2.  * GenericServlet.java -- Abstract base class for all servlets
  3.  *
  4.  * Copyright (c) 1998, 1999 by Free Software Foundation, Inc.
  5.  * Written by Paul Siegmann (pauls@euronet.nl)
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify
  8.  * it under the terms of the GNU Library General Public License as published
  9.  * by the Free Software Foundation, version 2. (see COPYING.LIB)
  10.  *
  11.  * This program is distributed in the hope that it will be useful, but
  12.  * WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program; if not, write to the Free Software Foundation
  18.  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307 USA
  19.  */
  20.  
  21. package javax.servlet;
  22.  
  23. import java.io.IOException;
  24. import java.io.Serializable;
  25. import java.util.Enumeration;
  26.  
  27.  
  28. /**
  29.  * Abstract base class for all servlets.
  30.  *
  31.  * @version Servlet API 2.2
  32.  * @since Servlet API 1.0
  33.  * @author Paul Siegmann (pauls@euronet.nl)
  34.  */
  35. public abstract class GenericServlet
  36.     implements Servlet, ServletConfig, Serializable 
  37. {
  38.     private ServletConfig servletConfig;
  39.  
  40.     /**
  41.      * Does nothing.
  42.      *
  43.      * @since Servlet API 1.0
  44.      */
  45.     public GenericServlet() {
  46.     }
  47.  
  48.  
  49.     /**
  50.      * Initializes the servlet.
  51.      * Called by the server exactly once during the lifetime of the servlet.
  52.      * This method can be used to setup resources (connections to a
  53.      * database for example) for this servlet.
  54.      * <p>
  55.      * This version saves the ServletConfig and calls <code>init()</code>.
  56.      * This means that a servlet can just override <code>init()</code>.
  57.      * Note that if a servlet overrides this method it should call
  58.      * <code>super.init(servletConfig)</code> otherwise the other methods in
  59.      * GenericServlet are not garanteed to work.
  60.      *
  61.      * @since Servlet API 1.0
  62.      *
  63.      * @param servletConfig This servlet configuration class
  64.      * @exception ServletException If an error occurs
  65.      */
  66.     public void init (ServletConfig servletConfig) throws ServletException {
  67.         this.servletConfig = servletConfig;
  68.         log("started");
  69.         init();
  70.     }
  71.  
  72.     /**
  73.      * Automatically called by <code>init(ServletConfig servletConfig)</code>.
  74.      * This version does nothing.
  75.      *
  76.      * @since Servlet API 2.1
  77.      *
  78.      * @exception ServletException If an error occurs
  79.      */
  80.     public void init () throws ServletException {
  81.     }
  82.  
  83.     /**
  84.      * Returns the servlets context
  85.      *
  86.      * @since Servlet API 1.0
  87.      *
  88.      * @return The context
  89.      */
  90.     public ServletContext getServletContext() {
  91.         return servletConfig.getServletContext();
  92.     }
  93.  
  94.  
  95.     /**
  96.      * Gets a servlet's initialization parameter
  97.      *
  98.      * @since Servlet API 1.0
  99.      *
  100.      * @param name the name of the wanted parameter
  101.      * @return the value of the wanted parameter.
  102.      * null if the named parameter is not present.
  103.      */
  104.     public String getInitParameter (String name) {
  105.         return servletConfig.getInitParameter(name);
  106.     }
  107.  
  108.  
  109.     /**
  110.      * Gets all the initialization parameters
  111.      *
  112.      * @since Servlet API 1.0
  113.      *
  114.      * @return an Enumeration of all the parameters
  115.      */
  116.     public Enumeration getInitParameterNames () {
  117.         return servletConfig.getInitParameterNames();
  118.     }
  119.  
  120.  
  121.     /**
  122.      * Writes the class name and a message to the log.
  123.      * Calls <code>getServletContext().log()</code>.
  124.      *
  125.      * @since Servlet API 1.0
  126.      *
  127.      * @param message the message to write
  128.      */
  129.     public void log(String message) {
  130.         getServletContext().log(this.getClass().getName() + ": " + message);
  131.     }
  132.  
  133.  
  134.     /**
  135.      * Writes the class name, a message and a stack trace to the log.
  136.      * Calls <code>getServletContext().log()</code>.
  137.      *
  138.      * @since Servlet API 2.1
  139.      * @param message the message to write
  140.      * @param th the object that was thrown to cause this log
  141.      */
  142.     public void log(String message, Throwable th) {
  143.         getServletContext().log(this.getClass().getName() + ": " + message, th);
  144.     }
  145.  
  146.  
  147.     /**
  148.      * The servlet programmer can put other additional info (version
  149.      * number, etc) here.
  150.      * <p>
  151.      * The Servlet 2.1 Spec says that this should return an empty string.
  152.      * The Servlet 2.1 API says that this should return null unless overridden.
  153.      * This version returns the servlet's class name which seems more usefull.
  154.      *
  155.      * @since Servlet API 1.0
  156.      *
  157.      * @return The String holding the information
  158.      */
  159.     public String getServletInfo() {
  160.         return this.getClass().getName();
  161.     }
  162.  
  163.  
  164.     /**
  165.      * Gets the servlet servletConfig class
  166.      *
  167.      * @since Servlet API 1.0
  168.      *
  169.      * @return The servletConfig class
  170.      */
  171.     public ServletConfig getServletConfig() {
  172.         return servletConfig;
  173.     }
  174.  
  175.  
  176.     /**
  177.      * Called by the server every time it wants the servlet to handle
  178.      * a request.
  179.      * 
  180.      * @since Servlet API 1.0
  181.      *
  182.      * @param request all the request information
  183.      * @param response class to write all the response data to
  184.      * @exception ServletException If an error occurs
  185.      * @exception IOException If an error occurs
  186.      */
  187.     public abstract void service(ServletRequest request,
  188.                     ServletResponse response) throws ServletException, IOException;
  189.  
  190.  
  191.     /**
  192.      * Called by the server when it no longer needs the servlet.
  193.      * The servlet programmer should use this method to free all
  194.      * the resources the servlet is holding.
  195.      * <p>
  196.      * This version does nothing because it has nothing to clean up.
  197.      * <p>
  198.      * Note that the the 2.1 Spec says that this should do nothing,
  199.      * but the 2.1 API Doc says that it logs the destroy action.
  200.      *
  201.      * @since Servlet API 1.0
  202.      */
  203.     public void destroy() {
  204.         // log("destroy");
  205.     }
  206.     /**
  207.      * Gets you the name of this servlet's <em>instance</em>.
  208.      */
  209.     public String getServletName() {
  210.         return "unknown";
  211.     }
  212. }
  213.