[ 来源: | 作者: | 时间:2007-07-16 | 收藏 | 推荐 ] 【大 中 小】
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")
45398 www.it55.com it55学习IT知识,享受IT生活 4dfkjn
3. 例子:读取CGI变量。
下面是一个显示除去 HTTP_XXX_YYY 外所有CGI变量的的servlet。他显示了在上面的表格中列出的所有CGI变量的值。
3.1 ShowCGIVariables.java
Download Here
IT资讯之家 www.it55.com
//! ####### Start ShowCGIVariables.java
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
sflj www.it55.com kg^&fgd
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() },
sflj www.it55.com kg^&fgd
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
//! ####### End ShowCGIVariables.java
45398 www.it55.com it55学习IT知识,享受IT生活 4dfkjn
(编辑:IT资讯之家 www.it55.com)