| Accessing the Standard CGI Variables | 
|---|
Content-Length header), some are derived 
from the socket itself (e.g. the name and IP address of the 
requesting host), and some are derived from server installation parameters 
(e.g. the mapping of URLs to actual paths).
request is the
HttpServletRequest supplied to the doGet and
doPost methods.
| CGI Variable | Meaning | Accessing it from doGet or doPost | 
|---|---|---|
| AUTH_TYPE | If an Authorizationheader was supplied, this is the
        scheme specified (basicordigest) | request.getAuthType() | 
| CONTENT_LENGTH | For POSTrequests only, the number of bytes of data sent. | Technically, the equivalent is String.valueOf(request.getContentLength())(aString)
        but you'll probably want to just callrequest.getContentLength(), which returns anint. | 
| CONTENT_TYPE | MIME type of attached data, if specified. | request.getContentType() | 
| DOCUMENT_ROOT | Path to directory corresponding to http://host/ | getServletContext().getRealPath("/")Note that this wasrequest.getRealPath("/")in
        older servlet specifications. | 
| HTTP_XXX_YYY | Access to arbitrary HTTP headers | request.getHeader("Xxx-Yyy") | 
| PATH_INFO | Path information attached to the URL. Since servlets, unlike standard CGI programs, can talk to the server, they don't need to treat this separately. Path info could be sent as part of the regular form data. | request.getPathInfo() | 
| PATH_TRANSLATED | The path information mapped to a real path on the server. Again, with servlets there is no need to have a special case for this. | request.getPathTranslated() | 
| QUERY_STRING | For GETrequests, this is the attached data as one big string,
        with values still URL-encoded. You rarely
        want the raw data in servlets; instead userequest.getParameterto access individual parameters. | request.getQueryString() | 
| REMOTE_ADDR | The IP address of the client that made the request,
        as a String. E.g. "192.9.48.9". | request.getRemoteAddr() | 
| REMOTE_HOST | The fully qualified domain name (e.g. "java.sun.com")
        of the client that made the request. The IP address is returned if
        this cannot be determined. | request.getRemoteHost() | 
| REMOTE_USER | If an Authorizationheader was supplied, the user part. | request.getRemoteUser() | 
| REQUEST_METHOD | The request type, which is usually GETorPOST, but is
        occasionallyHEAD,PUT,DELETE,OPTIONS, orTRACE. | request.getMethod() | 
| SCRIPT_NAME | Path to servlet. | request.getServletPath() | 
| SERVER_NAME | Web server's name | request.getServerName() | 
| SERVER_PORT | Port server is listening on. | Technically, the equivalent is String.valueOf(request.getServerPort()), which returns
        aString. You'll usually just wantrequest.getServerPort(), which returns anint. | 
| SERVER_PROTOCOL | Name and version used in the request line (e.g. HTTP/1.0orHTTP/1.1). | request.getProtocol() | 
| SERVER_SOFTWARE | Identifying information about the Web server | getServletContext().getServerInfo() | 
HTTP_XXX_YYY, which are just the
HTTP request headers shown in the previous section.
package hall; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; /** Creates a table showing the values of all the CGI variables. ** Part of tutorial on servlets and JSP that appears at * http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/ * 1999 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>"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
