package coreservlets;

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


/**//** Creates a table showing the current value of each
* of the standard CGI variables.
* <P>
* Taken from Core Servlets and JavaServer Pages
* from Prentice Hall and Sun Microsystems Press,
* http://www.coreservlets.com/.
* © 2000 Marty Hall; may be freely used or adapted.
*/


public class ShowCGIVariables extends HttpServlet
{
public void doGet(HttpServletRequest request,
HttpServletResponse response)

throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String[][] variables =


{
{ "AUTH_TYPE", request.getAuthType() },


{ "CONTENT_LENGTH",
String.valueOf(request.getContentLength()) },


{ "CONTENT_TYPE", request.getContentType() },


{ "DOCUMENT_ROOT",
getServletContext().getRealPath("/") },


{ "PATH_INFO", request.getPathInfo() },


{ "PATH_TRANSLATED", request.getPathTranslated() },


{ "QUERY_STRING", request.getQueryString() },


{ "REMOTE_ADDR", request.getRemoteAddr() },


{ "REMOTE_HOST", request.getRemoteHost() },


{ "REMOTE_USER", request.getRemoteUser() },


{ "REQUEST_METHOD", request.getMethod() },


{ "SCRIPT_NAME", request.getServletPath() },


{ "SERVER_NAME", request.getServerName() },


{ "SERVER_PORT",
String.valueOf(request.getServerPort()) },


{ "SERVER_PROTOCOL", request.getProtocol() },


{ "SERVER_SOFTWARE",
getServletContext().getServerInfo() }
};
String title = "Servlet Example: Showing CGI Variables";
out.println(ServletUtilities.headWithTitle(title) +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" +
"<TABLE BORDER=1 ALIGN=\"CENTER\">\n" +
"<TR BGCOLOR=\"#FFAD00\">\n" +
"<TH>CGI Variable Name<TH>Value");

for(int i=0; i<variables.length; i++)
{
String varName = variables[i][0];
String varValue = variables[i][1];
if (varValue == null)
varValue = "<I>Not specified</I>";
out.println("<TR><TD>" + varName + "<TD>" + varValue);
}
out.println("</TABLE></BODY></HTML>");
}


/**//** POST and GET requests handled identically. */

public void doPost(HttpServletRequest request,
HttpServletResponse response)

throws ServletException, IOException
{
doGet(request, response);
}
}
