Java Socket编程(五) 简单的WEB服务器

 更新时间:2006年12月23日 00:00:00   作者:  
文章来源:aspcn 作者:孙雯

简单的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 < headerpairs.length; x++ )
s += headerpairs[x] + "\n";
return s;
}
}

NameValue类简单地存储了两个字符串:name 和 value.当一个新的对要被加入时,一个新的数组将被分配.新的数组接受了旧的数组和新的成员.旧的数组然后被一个新建的对象覆盖了.

相关文章

  • Maven 生成打包可执行jar包的方法步骤

    Maven 生成打包可执行jar包的方法步骤

    这篇文章主要介绍了Maven 生成打包可执行jar包的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • 详解自动注册Gateway网关路由配置

    详解自动注册Gateway网关路由配置

    这篇文章主要为大家介绍了自动注册Gateway网关路由配置的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Mybatis查询记录条数的实例代码

    Mybatis查询记录条数的实例代码

    这篇文章主要介绍了Mybatis查询记录条数的实例代码,需要的朋友可以参考下
    2017-08-08
  • Java中jqGrid 学习笔记整理——进阶篇(二)

    Java中jqGrid 学习笔记整理——进阶篇(二)

    这篇文章主要介绍了Java中jqGrid 学习笔记整理——进阶篇(二)的相关资料,需要的朋友可以参考下
    2016-04-04
  • Java并发编程之Semaphore详解

    Java并发编程之Semaphore详解

    这篇文章主要介绍了Java并发编程之Semaphore详解,Semaphore信号量可以用来控制同时访问特定资源的线程数量,常用于限流场景,Semaphore接收一个int整型值,表示 许可证数量,需要的朋友可以参考下
    2023-11-11
  • Springboot核心机制详细介绍

    Springboot核心机制详细介绍

    SpringBoot的核心机制包括自动配置、起步依赖、主类和运行器、以及嵌入式服务器等,通过这些机制,SpringBoot简化了应用开发过程,本文给大家介绍Springboot核心机制,感兴趣的朋友一起看看吧
    2024-11-11
  • spring cloud eureka 服务启动失败的原因分析及解决方法

    spring cloud eureka 服务启动失败的原因分析及解决方法

    这篇文章主要介绍了spring cloud eureka 服务启动失败的原因解析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Java实现字符编码转换(utf-8/gbk)

    Java实现字符编码转换(utf-8/gbk)

    这篇文章主要为大家详细介绍了如何使用Java实现字符编码转换工具,主要针对UTF-8和GBK两种编码格式,文中的示例代码讲解详,需要的可以了解下
    2025-03-03
  • IntelliJ IDEA中程序包org.slf4j找不到的解决

    IntelliJ IDEA中程序包org.slf4j找不到的解决

    这篇文章主要介绍了IntelliJ IDEA中程序包org.slf4j找不到的解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Java 九宫重排(满分解法)

    Java 九宫重排(满分解法)

    本文主要介绍了Java 九宫重排(满分解法),文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论