网站建设| 数据库类| 图形图象| 程序设计| 现代办公| 操作系统| 考试认证| 网络技术| 软件工程| 电脑相关| 文学作品
网站开发| 网页制作| 操作系统| 图象图形| 考试认证| 数据库类| 程序设计| 硬件技术| 现代办公| 网络技术| 笑话频道
 
您的位置: 电脑书库首页-> 电脑文摘-> 网站开发-> CGI/PERL-> 访问标准CGI变量

访问标准CGI变量
作者:佚名 来源:InterNet 加入时间:2005-3-31
相关文章
  • CGI应用程序开发基础
  • ASP、CGI、ISAPI、ODBC之间的差别
  • 利用CGI方式实现Web查询
  • CGI技术及其开发
  • CGI扫描器的原理和实现过程
  • CGI编程--Perl的安装配置
  • CGI程式设计疑难杂症
  • CGI绝对路径和相对路径的简便设置方法
  • Perl CGI编程安全点滴
  • 相关书籍:
  • CGI,Java Script 探索
  • CGI脚本入门学习
  • CGI-Perl实例起步
  • 1. CGI变量简介
    如果你在以前使用过传统的CGI,你应该对“CGI变量”的概念很熟悉。 由这些变量可以取得一些和请求(Request)有关的信息。其中一些来自于 HTTP 请求命令行(request line) 和headers (例如:在URI中问号后面的部分或者Content-Length header),一些来自于 Socket本身(例如:被请求主机的IP和名称),还有一些来自于服务器的配置信息(例如:被映射为URL目录的实际 路径)。

    2. Servlet和标准CGI变量之间的对应关系
    下面的表格中给出了Servlet和标准CGI变量之间的对应关系,对以前使用CGI变量进行编程的朋友会有很大的帮助。 在下表中我们假设request是HttpServletRequest类型的对象。
    CGI变量 含义 在 doGet 或 doPost 访问的办法
    AUTH_TYPE 如果在请求中有 Authorization header ,则这个变量将会被赋值 (basic 或 digest) request.getAuthType()
    CONTENT_LENGTH 只有当请求的方法是 POST 时这个变量才会有意义,它表示传送的数据的字节数。 String.valueOf(request.getContentLength()) (返回String) 或者 request.getContentLength(),返回一个整数(int)。
    CONTENT_TYPE 如果被赋值,就表示数据的MIME类型。 request.getContentType()
    DOCUMENT_ROOT 和网站根目录对应的实际路径 getServletContext().getRealPath("/") 注意:在以前的Servlet标准中,这条语句是这样写的request.getRealPath("/") 。
    HTTP_XXX_YYY 访问任意的HTTP headers request.getHeader("Xxx-Yyy")
    PATH_INFO URL 指向的路径的信息。由于Servlet可以和服务器直接通讯,所以这个变量对Servlet没什么作用。 request.getPathInfo()
    PATH_TRANSLATED 在Server上被映射为web目录的目录的真实路径的信息。和上一个变量一样,对Servlet用处不大。 request.getPathTranslated()
    QUERY_STRING 如果用 GET 方法发出请求(requests),这个变量中将会存放请求的数据,其 形式为经过URL编码的一个大字符串。在servlet中,你很少会用到这个原始的字符串。而是 用 request.getParameter 方法来访问某个特定的请求数据。 request.getQueryString()
    REMOTE_ADDR 客户端的IP地址,是String类型的。其形式类似于 "192.9.48.9"。 request.getRemoteAddr()
    REMOTE_HOST 发出请求的客户端的域名(例如. "java.sun.com") 如果不能检测到域名,就用客户端的IP地址代替。 request.getRemoteHost()
    REMOTE_USER 如果 Authorization header 被赋值,则这个变量中放有用户名。 request.getRemoteUser()
    REQUEST_METHOD 请求的类型。通常为 GET 或 POST,但也可能是 HEAD, PUT, DELETE, OPTIONS, 或者 TRACE。 request.getMethod()
    SCRIPT_NAME srvlet的路径 request.getServletPath()
    SERVER_NAME 服务器的名称 request.getServerName()
    SERVER_PORT 服务器的端口 String.valueOf(request.getServerPort())(返回String类型) request.getServerPort()(返回int类型)
    SERVER_PROTOCOL 在请求命令行中用的协议的版本号。(例如. HTTP/1.0 或 HTTP/1.1)。 request.getProtocol()
    SERVER_SOFTWARE 所用 Web Server 软件的名称 getServletContext().getServerInfo()

    3. 例子:读取CGI变量。
    下面是一个显示除去 HTTP_XXX_YYY 外所有CGI变量的的servlet。他显示了在上面的表格中列出的所有CGI变量的值。
    3.1 ShowCGIVariables.java
    Download Here

    //! ####### Start ShowCGIVariables.java
    import java.io.*;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.util.*;

    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: 显示CGI变量";
    out.println("<HTML><HEAD><TITLE>"+title +"</TITLE></HEAD>"+
    "<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>没有被赋值</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);
    }
    }

    //! ####### End ShowCGIVariables.java


    [文章录入员:nancy]

    相关文章
  • CGI应用程序开发基础
  • ASP、CGI、ISAPI、ODBC之间的差别
  • 利用CGI方式实现Web查询
  • CGI技术及其开发
  • CGI扫描器的原理和实现过程
  • CGI编程--Perl的安装配置
  • CGI程式设计疑难杂症
  • CGI绝对路径和相对路径的简便设置方法
  • Perl CGI编程安全点滴
  • 相关书籍:
  • CGI,Java Script 探索
  • CGI脚本入门学习
  • CGI-Perl实例起步
  • 本站推荐内容

    近期主机类热搜关键词:
    美国服务器 美国服务器租用 海外服务器租用 国外服务器租用

    CGI/PERL
    ASP/ASP.NET
    PHP技术
    JSP技术
    XML技术
    CGI/PERL
    WEB服务器
    WordPress专题
    其它
    电脑教程阅读排行
    ·perl中的日期处理
    ·深入研究表单提交方式:GET/P...
    ·如何利用Perl开发Intern...
    ·CGI应用程序开发基础
    ·本地调试PERL CGI程序
    ·PERL与MySQL(DBI接口...
    ·PerlScript编写ASP
    ·CGI编程--Perl的安装配置
    ·Perl用于实现遗传算法
    ·ASP、CGI、ISAPI、OD...