Java Socket编程之五

介绍了一个用于处理HTTP请求的Java类,该类能够解析并存储HTTP请求的头部信息,为后续处理提供便利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导读:
  简单的WEB服务器
  一个简单的WEB服务器将由列表9.2这样构建.当然,还必须要对方法和回应事件进行改进.简单的服务器不会分析和存储请求头.新的WEB服务器将分析和存储请求,为以后的处理作准备.为了达到这个目的,你必须有一个包含HTTP请求的类.
  HTTPrequest类
  列表9.5列出了一个完整的HTTPrequest类.这个类必须包括一个请求头所需的所有信息.
  列表9.5.HTTPrequest类.
  import java.io.*;
  import java.util.*;
  import java.net.*;
  import NameValue;
  /**
  * 这个类有一个HTTP请求的所有信息
  */
  public class HTTPrequest
  {
  public String version;
  public String method;
  public String file;
  public Socket clientSocket;
  public DataInputStream inbound;
  public NameValue headerpairs[];
  /**
  * 建立一个这个类的实例
  */
  public HTTPrequest()
  {
  version = null;
  method = null;
  file = null;
  clientSocket = null;
  inbound = null;
  inbound = null;
  headerpairs = new NameValue[0];
  }
  /**
  * 加入一个名称/值对到核心数组
  */
  public void addNameValue(String name, String value)
  {
  try
  {
  NameValue temp[] = new NameValue[ headerpairs.length + 1 ];
  System.arraycopy(headerpairs, 0, temp, 0, headerpairs.length);
  temp[ headerpairs.length ] = new NameValue(name, value);
  headerpairs = temp;
  }
  catch (NullPointerException npe)
  {
  System.out.println("NullPointerException while adding name-value:
  " + npe);
  }
  }
  /**
  * 以字符串的形式归还这个类
  */
  public String toString()
  {
  String s = method + " " + file + " " + version + "/n";
  for (int x = 0; x
  s += headerpairs[x] + "/n";
  return s;
  }
  }
  NameValue类简单地存储了两个字符串:name 和 value.当一个新的对要被加入时,一个新的数组将被分配.新的数组接受了旧的数组和新的成员.旧的数组然后被一个新建的对象覆盖了.
  Java Socket编程之一
  Java Socket编程之二
  Java Socket编程之三
  Java Socket编程之四
  Java Socket编程之五
  
  简单的WEB服务器 一个简单的WEB服务器将由列表9.2这样构建.当然,还必须要对方法和回应事件进行改进.简单的服务器不会分析和存储请求头.新的WEB服务器将分析和存储请求,为以后的处理作准备.为了达到这个目的,你必须有一个包含HTTP请求的类. HTTPrequest类 列表9.5列出了一个完整的HTTPrequest类.这个类必须包括一个请求头所需的所有信息. 列表9.5.HTTPrequest类. import java.io.*; import java.util.*; import java.net.*; import NameValue; /** * 这个类有一个HTTP请求的所有信息 */ public class HTTPrequest { public String version; public String method; public String file; public Socket clientSocket; public DataInputStream inbound; public NameValue headerpairs[]; /** * 建立一个这个类的实例 */ public HTTPrequest() { version = null; method = null; file = null; clientSocket = null; inbound = null; inbound = null; headerpairs = new NameValue[0]; } /** * 加入一个名称/值对到核心数组 */ public void addNameValue(String name, String value) { try { NameValue temp[] = new NameValue[ headerpairs.length + 1 ]; System.arraycopy(headerpairs, 0, temp, 0, headerpairs.length); temp[ headerpairs.length ] = new NameValue(name, value); headerpairs = temp; } catch (NullPointerException npe) { System.out.println("NullPointerException while adding name-value: " + npe); } } /** * 以字符串的形式归还这个类 */ public String toString() { String s = method + " " + file + " " + version + "/n"; for (int x = 0; x

本文转自
http://www.cn-java.com/www1/?action-viewnews-itemid-895
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值