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 |
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 ? "<none>" : value);
}
private void print(PrintWriter out, String name, int value)
throws IOException
{
out.print(" " + name + ": ");
if (value == -1) {
out.println("<none>");
} else {
out.println(value);
}
}
public String getServletInfo() {
return "A servlet that shows the request headers sent by the client";
}
}
muscarellaATstanfordDOTedu |