⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpinformation.java

📁 21天学通java的示例程序源代码
💻 JAVA
字号:
// HTTPInformation.java

package com.wrox.httpserver;

import java.io.*;
import java.util.*;

/**
 * This class encapsulates HTTP header information for a HTTP request
 * and sets up the environment strings for CGI execution.
 */
class HTTPInformation extends HTTPConstants {

  // Instance variables
  public String serverSoftware;
  public String serverName;
  public String gateway;
  public String serverProtocol = HTTP_10;
  public int serverPort;
  public String requestMethod;
  public String pathInfo;
  public String translatedPath;
  public String scriptName;
  public String queryString;
  public String remoteHost;
  public String remoteAddr;
  public String authType;
  public String remoteUser;
  public String remoteIdent;
  public String contentType;
  public String contentLength;
  public String documentRoot;
  public String accept;
  public String host;
  public String pragma;
  public String referer;
  public String userAgent;

  // The request string and http status are stored for logging purposes
  public String requestString;
  public int status;

  // CGI 1.0 required environment variables
  private final static String env_serverSoftware = "SERVER_SOFTWARE";
  private final static String env_serverName = "SERVER_NAME";
  private final static String env_gateway = "GATEWAY_INTERFACE";
  private final static String env_serverProtocol = "SERVER_PROTOCOL";
  private final static String env_serverPort = "SERVER_PORT";
  private final static String env_requestMethod = "REQUEST_METHOD";
  private final static String env_pathInfo = "PATH_INFO";
  private final static String env_translatedPath = "PATH_TRANSLATED";
  private final static String env_scriptName = "SCRIPT_NAME";
  private final static String env_queryString = "QUERY_STRING";
  private final static String env_remoteHost = "REMOTE_HOST";
  private final static String env_remoteAddr = "REMOTE_ADDR";
  private final static String env_authType = "AUTH_TYPE";
  private final static String env_remoteUser = "REMOTE_USER";
  private final static String env_remoteIdent = "REMOTE_IDENT";
  private final static String env_contentType = "CONTENT_TYPE";
  private final static String env_contentLength = "CONTENT_LENGTH";
  private final static String env_docRoot = "DOCUMENT_ROOT";

  // Important HTTP header lines
  private final static String env_accept = "HTTP_ACCEPT";
  private final static String env_host = "HTTP_HOST";
  private final static String env_pragma = "HTTP_PRAGMA";
  private final static String env_referer = "HTTP_REFERER";
  private final static String env_userAgent = "HTTP_USER_AGENT";

  /**
   * Constructs an HTTP header information object and initializes
   * known header fields.
   */
  public HTTPInformation() {

    // Initialize known header fields
    serverSoftware = SERVER_SOFTWARE;
    gateway = GATEWAY_VERSION;
    serverPort = HTTPConfig.config.getPort();
    documentRoot = HTTPConfig.config.getDocumentRoot();
  }

  /**
   * Returns the environment string array to be passed to Runtime.exec to set
   * up the environment for CGI execution.
   */
  public String[] getCGIEnvironment() {
    Hashtable env = new Hashtable();

    // Add everything to a hashtable first
    put(env, env_serverSoftware, serverSoftware);
    put(env, env_serverName, serverName);
    put(env, env_gateway, gateway);
    put(env, env_serverProtocol, serverProtocol);
    put(env, env_serverPort, new Integer(serverPort).toString());
    put(env, env_requestMethod, requestMethod);
    put(env, env_pathInfo, pathInfo);
    put(env, env_translatedPath, translatedPath);
    put(env, env_scriptName, scriptName);
    put(env, env_queryString, queryString);
    put(env, env_remoteHost, remoteHost);
    put(env, env_remoteAddr, remoteAddr);
    put(env, env_authType, authType);
    put(env, env_remoteUser, remoteUser);
    put(env, env_remoteIdent, remoteIdent);
    put(env, env_contentType, contentType);
    put(env, env_contentLength, contentLength);
    put(env, env_docRoot, documentRoot);
    put(env, env_accept, accept);
    put(env, env_host, host);
    put(env, env_pragma, pragma);
    put(env, env_referer, referer);
    put(env, env_userAgent, userAgent);

    // Construct an environment string array
    String cgi_env[] = new String[env.size()];

    int i = 0;
    for (Enumeration e = env.keys(); e.hasMoreElements(); ) {
      String key = (String) e.nextElement();
      StringBuffer sb = new StringBuffer(key);

      sb.append("=");
      sb.append((String) env.get(key));

      cgi_env[i++] = sb.toString();
    } 

    return cgi_env;
  } 

  /**
   * Helper method to put an environment field into the hashtable.
   */
  private void put(Hashtable env, String key, String value) {
    if (key != null && value != null) {
      env.put(key, value);
    } 
  } 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -