设为首页  
联系我们  
加入收藏  
网页制作 冲浪宝典 图形图像 操作系统 软件教学 编程开发 认证考试 安全技术 站长专区 文学驿站 娱乐天地 游戏天地 办公软件
文章搜索
您的位置: 首页 >> 文章首页 >> 编程开发 >> Java >> Introduction to CGI Variables
精品推荐
Java点击TOP10
·我写的Java学生成绩管理系统源代码
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·MyEclipse 下开发JSF教程
·java网络五子棋的源代码
·servlet和JSP过滤器Filter
·用Eclipse Visual Editor 开发SWT GUI
·JSF+Spring+Hibernate的实例讲解(原创翻译)
·一个相对不错的地区代码级联实现
·《Thinking in Java》读书笔记
编程开发点击TOP10
·数字小键盘指法练习
·ASP.NET 程序中常用的三十三种代码
·用C语言编通讯录程序(初学者级别的)
·我写的Java学生成绩管理系统源代码
·CHK文件恢复工具
·Modem 常用AT指令集
·java笔试题
·异常java.sql.SQLException: Io exception:The Network Adapter could not establish connection
·单片机模拟I2C总线及24C02(I2C EEPROM)读写实例(源代码)
·C++经典电子书下载
精选专题

Introduction to CGI Variables

作者: 来源:网络文章 时间:2005-12-16 22:41:24


1. IntrodUCtion to CGI Variables

If you come to Java servlets from traditional CGI, you are probably used to the idea of "CGI Variables". These are a somewhat eclectic collection of information about the request. Some are derived from the HTTP request line and headers (e.g. the part of the URI that came after the question mark and typically contains the form data, or the 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).

2. Servlet Equivalent of Standard CGI Variables

Although it probably makes more sense to think of different sources of data (request data, server data, etc.) as distinct, eXPerienced CGI programmers may find the following table useful. Assume that request is the HttpServletRequest supplied to the doGet and doPost methods.

CGI Variable Meaning Accessing it from doGet or doPost
AUTH_TYPE If an Authorization header was supplied, this is the scheme specified (basic or digest) request.getAuthType()
CONTENT_LENGTH For POST requests only, the number of bytes of data sent. Technically, the equivalent is String.valueOf(request.getContentLength()) (a String) but you'll probably want to just call request.getContentLength(), which returns an int.
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 was request.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 GET requests, this is the attached data as one big string, with values still URL-encoded. You rarely want the raw data in servlets; instead use request.getParameter to 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 Authorization header was supplied, the user part. request.getRemoteUser()
REQUEST_METHOD The request type, which is usually GET or POST, but is occasionally HEAD, PUT, DELETE, OPTIONS, or TRACE. 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 a String. You'll usually just want request.getServerPort(), which returns an int.
SERVER_PROTOCOL Name and version used in the request line (e.g. HTTP/1.0 or HTTP/1.1). request.getProtocol()
SERVER_SOFTWARE Identifying information about the Web server getServletContext().getServerInfo()

3. Example: Reading the CGI Variables

Here's a servlet that creates a table showing the values of all the CGI variables other than HTTP_XXX_YYY, which are just the HTTP request headers shown in the previous section.

3.1 ShowCGIVariables.java

You can also download the source or try it on-line. Note: also uses ServletUtilities.java, shown earlier.
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);}}

3.2 ShowCGIVariables Output

ShowCGIVariables: Output



Introduction to CGI Variables 相关文章:
Introduction to CGI Variables 相关软件:
特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
转载请注明来源:http://www.xgdown.com