At 12:04 AM 4/21/99 +0000, Craig R. McClanahan wrote:
>Richard Yumul wrote:
>
>> Thanks for your help! I did see the API documentation on how the client
side
>> variables are accessed through the method calls, I guess I should have
>been more
>> specific; would you know how to access those server variables, set by
apache?
>>
>
>The only environment variables you can see directly are those that are
>automatically translated into methods of HttpServletRequst.
[snip]
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.
I've appended this info to the FAQ-O-Matic.
// 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("<html><head><title>Too big</title></head>");
out.println("<body><h1>Error - 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("<head><title>Snoop Servlet</title></head>");
out.println("<body>");
out.println("<h1>Requested 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("<h1>Init Parameters</h1>");
out.println("<pre>");
first = false;
}
String param = (String) enum.nextElement();
out.println(" "+param+": "+getInitParameter(param));
}
out.println("</pre>");
}
out.println("<h1>Request information:</h1>");
print(out, "<pre><P>Request 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("<h1>Request 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("<h1>Servlet 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("<h1>Servlet 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("<h1>Attributes</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 ("<h1>Response 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";
}
}
Greg Muscarella
Business Analyst / Internet Developer
Stanford University
Controller's Office
(650) 723-0531
[EMAIL PROTECTED]
----------------------------------------------------------------
To subscribe: [EMAIL PROTECTED]
To unsubscribe: [EMAIL PROTECTED]
Archives and Other: <http://java.apache.org/main/mail.html/>
Problems?: [EMAIL PROTECTED]