你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 跟高手学编程
用Java实现非阻塞的HTTP服务器(十二)
 

} catch (IOException e) {

        e.printStackTrace();

        channelIO.close();

        if (response !=  null) {

            response.release();

        }

    }

  }

 

  /* 发送HTTP响应,如果全部发送完毕,就返回false,否则返回true */ 

  private boolean send() throws IOException {

    return response.send(channelIO);

  }

}

6.代表HTTP请求的Request

RequestHandler通过ChannelIO读取HTTP请求数据时,这些数据放在requestByteBuffer中。当HTTP请求的所有数据接收完毕,就要对requestByteBuffer中的数据进行解析,然后创建相应的Request对象。Request对象就表示特定的HTTP请求。

本范例仅支持GETHEAD请求方式,在这两种方式下,HTTP请求没有正文部分,并且以“\r\n\r\n”结尾。Request类有三个成员变量:actionuriversion,它们分别表示HTTP请求中的请求方式、URIHTTP协议的版本。例程6Request类的源程序:

//例程6  Request.java

import java.net.*;

import java.nio.*;

import java.nio.charset.*;

import java.util.regex.*;

/* 代表客户的HTTP请求 */

public class Request {

  static class Action {  //枚举类,表示HTTP请求方式

    private String name;

    private Action(String name) { this.name = name; }

    public String toString() { return name; }

 

    static Action GET = new Action("GET");

    static Action PUT = new Action("PUT");

    static Action POST = new Action("POST");

    static Action HEAD = new Action("HEAD");

 

    public static Action parse(String s) {

        if (s.equals("GET"))

            return GET;

        if (s.equals("PUT"))

            return PUT;

        if (s.equals("POST"))

            return POST;

        if (s.equals("HEAD"))

            return HEAD;

        throw new IllegalArgumentException(s);

    }

  }

 

  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089