Please browse the categories below to previous answers to questions like yours. If you do not find the answer for your particular situation, ask for help on the appropriate mailing list.
(Answer) (Category) Java Apache Project : (Category) Apache JServ 1.0 : (Category) Programming and Misc. Tidbits :
How do I access environment variables from my servlet?
Richard Yumul wrote:

> Can somebody please tell me how to access the server enviroment variables?  For
> example, how do you access variables like DOCUMENT_ROOT, etc.?
>
> Thanks,
> Rich Yumul
>

Most of the "interesting" CGI-related environment variables are directly
translated into methods in the HttpServletRequest.  For example, the
PATH_INFO value is returned by getPathInfo(), PATH_TRANSLATED by
getPathTranslated(), and so on.  The details are in the Javadoc API descriptions
of each method.
cmcclanahanATmytownnetDOTcom

The particular case of DOCUMENT_ROOT is interesting, because it is an Apache
extension, not a standard CGI variable (and thus it is not visible through the
standard servlet API).  Apache JServ does know about this value, however, and uses
it as the basis for paths calculated by the getRealPath() call.
cmcclanahanATmytownnetDOTcom
Actually, you can get other non-standard cgi-environment
variables in Apache-Jserv (and other servlet engines)
but unfortunatly it is not consistant accross 
Servlet Engines.  You do this using the getAttribute()
method along with the servlet specific attribute name.
In the case of Apache-Jserv it's "org.apache.jserv." but
you'd have to check on what to use for other servlet engines.
And just to mix things up more others make the variable
available via getHeaders() (JRUN for instance).


So, to get the DOCUMENT_ROOT variable you would do someting like

String DocRoot = getAttribute(org.apache.jserv.DOCUMENT_ROOT);

Below is a modification of Sun's SnoopServlet that will return
all available Apache-Jserv attributes.



// SuperSnoop based on Sun's SnoopServlet

import java.io.*;
import java.util.*;

import javax.servlet.*;
import javax.servlet.http.*;
import java.util.Hashtable;


/**
 * Snoop servlet. This servlet simply echos back the request line and
 * headers that were sent by the client, plus any HTTPS information
 * which is accessible.
 *
 * @version     1.19 98/02/25
 * @author      David Connelly
 */
public
class SuperSnoop extends HttpServlet {


    public void doPost (HttpServletRequest req, HttpServletResponse res)
        throws ServletException, IOException
    {
        //value chosen to limit denial of service
        if (req.getContentLength() > 8*1024) {  
            res.setContentType("text/html");
            PrintWriter out = res.getWriter();

            out.println("htmlheadtitleToo big/title/head");
            out.println("bodyh1Error - content length >8k not ");
            out.println("/h1/body/html");
        } else {
            doGet(req, res);
        }
    }
    
    public void doGet (HttpServletRequest req, HttpServletResponse res)
        throws ServletException, IOException
    {
        res.setContentType("text/html");
        PrintWriter out = res.getWriter();

        out.println("html");
        out.println("headtitleSnoop Servlet/title/head");
        out.println("body");

        out.println("h1Requested URL:/h1");
        out.println("pre");
        out.println (HttpUtils.getRequestURL (req).toString ());
        out.println("/pre");

        Enumeration enum = getServletConfig().getInitParameterNames();
        if (enum != null) {
            boolean first = true;
            while (enum.hasMoreElements()) {
                if (first) {
                    out.println("h1Init Parameters/h1");
                    out.println("pre");
                    first = false;
                }
                String param = (String) enum.nextElement();
                out.println(" "+param+": "+getInitParameter(param));
            }
            out.println("/pre");
        }

        out.println("h1Request information:/h1");
        print(out, "prePRequest method", req.getMethod());
        print(out, "Request URI", req.getRequestURI());
        print(out, "Request protocol", req.getProtocol());
        print(out, "Servlet path", req.getServletPath());
        print(out, "Path info", req.getPathInfo());
        print(out, "Path translated", req.getPathTranslated());
        print(out, "Query string", req.getQueryString());
        print(out, "Content length", req.getContentLength());
        print(out, "Content type", req.getContentType());
        print(out, "Server name", req.getServerName());
        print(out, "Server port", req.getServerPort());
        print(out, "Remote user", req.getRemoteUser());
        print(out, "Remote address", req.getRemoteAddr());
        print(out, "Remote host", req.getRemoteHost());
        print(out, "Authorization scheme", req.getAuthType());
        out.println("/pre");
        
        Enumeration e = req.getHeaderNames();
        if (e.hasMoreElements()) {
            out.println("h1Request headers:/h1");
            out.println("pre");
            while (e.hasMoreElements()) {
                String name = (String)e.nextElement();
                out.println(" " + name + ": " + req.getHeader(name));
            }
            out.println("/pre");
        }

        e = req.getParameterNames();
        if (e.hasMoreElements()) {
            out.println("h1Servlet parameters (Single Value style):/h1");
            out.println("pre");
            while (e.hasMoreElements()) {
                String name = (String)e.nextElement();
                out.println(" " + name + " = " + req.getParameter(name));
            }
            out.println("/pre");
        }

        e = req.getParameterNames();
        if (e.hasMoreElements()) {
            out.println("h1Servlet parameters (Multiple Value style):/h1");
            out.println("pre");
            while (e.hasMoreElements()) {
                String name = (String)e.nextElement();
                String vals[] = (String []) req.getParameterValues(name);
                if (vals != null) {
                    out.print("b " + name + " = /b"); 
                    out.println(vals[0]);
                    for (int i = 1; i<vals.length; i++)
                        out.println("           " + vals[i]);
                }
                out.println("p");
            }
            out.println("/pre");
        }
        

         // Attributes available from Jserv

      String prefix = "org.apache.jserv.";
      Object attrsObj = req.getAttribute("org.apache.jserv.attribute_names");
      if ( attrsObj != null && attrsObj instanceof Enumeration ) {
          Enumeration attrs = (Enumeration) attrsObj;
          out.println("p");
          out.println("h1Attributes/h1");
          out.println("available via HttpServletRequest.getAttribute()");
          out.println("br");
          while ( attrs.hasMoreElements()) {
              String attr = attrs.nextElement().toString();
              if ( req.getAttribute(prefix + attr) != null ) {
                  out.println( prefix + attr + " = " +
                      req.getAttribute(prefix + attr).toString());
              } else {
                  out.println( prefix + attr + " = NULL " );
              }
              out.println("br");
          }
      }

        String  charset = res.getCharacterEncoding ();

        out.println ("h1Response Information:/h1");
        out.println ("pre");
        out.println ("MIME character encoding: " + charset);
        out.println ("/pre");

        out.println("/body/html");
    }

    private void print(PrintWriter out, String name, String value)
        throws IOException
    {
        out.print(" " + name + ": ");
        out.println(value == null ? "&lt;none&gt;" : value);
    }

    private void print(PrintWriter out, String name, int value)
        throws IOException
    {
        out.print(" " + name + ": ");
        if (value == -1) {
            out.println("&lt;none&gt;");
        } else {
            out.println(value);
        }
    }

    public String getServletInfo() {
        return "A servlet that shows the request headers sent by the client";
    }
}


 
muscarellaATstanfordDOTedu
[Append to This Answer]
Previous: (Category) Tutorials, FAQ's, Resources, Websites
Next: (Answer) I'm getting Html as text in the page when it is returned from a servlet...why?
This document is: http://java.apache.org/faq/?file=118
[Search] [Appearance] [Show Expert Edit Commands]
This is a Faq-O-Matic 2.709.
Please browse the categories below to previous answers to questions like yours. If you do not find the answer for your particular situation, ask for help on the appropriate mailing list.