Class CGI


  • public abstract class CGI
    extends java.lang.Object
    This is the main class you have to extend with your CGI program. You should implement the cgi() method.
    Author:
    Matthew Johnson <src@matthew.ath.cx>
    • Constructor Summary

      Constructors 
      Constructor Description
      CGI()  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      protected abstract void cgi​(java.util.Map POST, java.util.Map GET, java.util.Map ENV, java.util.Map COOKIES, java.lang.String[] params)
      Override this method in your CGI program.
      void doCGI​(java.lang.String[] args)
      This method sets up all the CGI variables and calls the cgi() method, then writes out the page data.
      void flush()
      Flushes the output.
      java.io.OutputStream getOutputStream()
      This will return an OutputStream that you can write data directly to.
      void header​(java.lang.String variable, java.lang.String value)
      Called by CGIs to send a header to the output
      void out​(byte[] data)
      Called by CGIs to send byte data to the output.
      void out​(java.lang.String data)
      Called by CGIs to send a string to the output.
      void setcookie​(java.lang.String variable, java.lang.String value)
      Sets a Cookie in the web browser.
      void setcookie​(java.lang.String variable, java.lang.String value, java.lang.String path, java.lang.String domain, java.util.Date expires, boolean secure)
      Sets a Cookie in the web browser, with extended attributes.
      protected void setErrorHandler​(CGIErrorHandler handler)
      Sets a custom exception handler.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • CGI

        public CGI()
    • Method Detail

      • header

        public final void header​(java.lang.String variable,
                                 java.lang.String value)
                          throws CGIHeaderSentException
        Called by CGIs to send a header to the output
        Parameters:
        variable - The header variable to set.
        value - The value of the variable.
        Throws:
        CGIHeaderSentException - if the headers have already been sent.
        See Also:
        flush()
      • setcookie

        public final void setcookie​(java.lang.String variable,
                                    java.lang.String value,
                                    java.lang.String path,
                                    java.lang.String domain,
                                    java.util.Date expires,
                                    boolean secure)
                             throws CGIHeaderSentException
        Sets a Cookie in the web browser, with extended attributes. Calls header() so must be called before sending any output. A parameter will not be sent if it is null.
        Parameters:
        variable - The cookie variable to set.
        value - The value of the variable.
        path - The path that the cookie will be returned for.
        domain - The domain that the cookie will be returned for.
        expires - The expiry date of the cookie.
        secure - Will only send the cookie over HTTPS if this is true.
        Throws:
        CGIHeaderSentException - if the headers have already been sent.
        See Also:
        flush(), header(java.lang.String, java.lang.String)
      • getOutputStream

        public final java.io.OutputStream getOutputStream()
                                                   throws java.io.IOException
        This will return an OutputStream that you can write data directly to. Calling this method will cause the output to be flushed and the Headers sent. At the moment this is not buffered and will be sent directly to the client. Subsequent calls to out() will appear after data written to the output stream.
        Returns:
        an OutputStream
        Throws:
        java.io.IOException
        See Also:
        out(byte[])
      • flush

        public final void flush()
                         throws java.io.IOException
        Flushes the output. Note that you cannot send a header after a flush. If you want to send both text and binary data in a page you may do so either side of a flush.
        Throws:
        java.io.IOException
        See Also:
        header(java.lang.String, java.lang.String)
      • setErrorHandler

        protected final void setErrorHandler​(CGIErrorHandler handler)
        Sets a custom exception handler. Gets called when an exception is thrown. The default error handler prints the error nicely in HTML and then exits gracefully.
        Parameters:
        handler - The new exception handler
      • cgi

        protected abstract void cgi​(java.util.Map POST,
                                    java.util.Map GET,
                                    java.util.Map ENV,
                                    java.util.Map COOKIES,
                                    java.lang.String[] params)
                             throws java.lang.Exception
        Override this method in your CGI program.
        Parameters:
        POST - A Map of variable =$gt; value for the POST variables.
        GET - A Map of variable =$gt; value for the GET variables.
        ENV - A Map of variable =$gt; value for the Webserver environment variables.
        COOKIES - A Map of variable =$gt; value for the browser-sent cookies.
        params - An array of parameters passed to the CGI (GET with no variable assignments)
        Throws:
        java.lang.Exception - You can throw anything, it will be caught by the error handler.
      • doCGI

        public final void doCGI​(java.lang.String[] args)
        This method sets up all the CGI variables and calls the cgi() method, then writes out the page data.