本站内容搜索:
   您的位置:素材中国>>教程 >>网络编程 >>CGI专区 >>访问标准CGI变量 提交错误报告
访问标准CGI变量
[ 来源:素材中国 | 作者:| 时间:2005-08-02 04:14:42 | 浏览:人次 ]

 
  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

 
 
       
   您的位置:素材中国>>教程 >>网络编程 >>CGI专区 >>访问标准CGI变量
 点此在百度搜索关键字"访问标准CGI变量"  点此在GOOGLE搜索关键字"访问标准CGI变量"
热门文章:
  ·在CGI中如何使用cookie   ·实战 FastCGI
  ·设置IIS以使用CGI   ·Perl在CGI程序设计中常用的函数和指令
  ·谈谈修改CGI程序的几个要点   ·在C++Builder中开发CGI的一点点体会
  ·CGI编程安全点滴   ·使用Perl编写CGI时需要注意的几个问题
  ·cgi程序的绝对路径和相对路径   ·访问标准CGI变量

  首页  素材图片  高精图库  矢量图库  网页素材  网页模板  壁纸  明星  下载  教程  字体  香车美女  QQ专题  论坛

网站介绍 | 广告业务 | 设计业务 | 免责声明 | 版权声明 | 联系我们|提交错误报告
素材中国版权所有