input = socket.getInputStream(); output = socket.getOutputStream(); await于是就创建一个Request对象并调用它的 parse 方法来解析原始的HTTP请求信息。
// create Request object and parse 接下来,await 方法创建了一个Response 对象,使用setRequest方法并调用它的sendStaticResource 方法。 // create Response object 最后,await关闭该Socket。调用Request的getUri方法来检查HTTP请求的URI是否是一个shutdown命令。如果是,shutdown变量被设置为true,程序退出while循环。 // Close the socket Request类 Request类代表一个HTTP请求。Socket处理客户端的通讯,将返回一个InputStream对象,通过传递该对象,可以构造一个Request类的实例。通过调用InputStream 对象的read方法来获得这个HTTP请求的原始数据(raw data)。 Request 有两个公共方法:parse 和 getUri。parse方法解释HTTP请求的原始数据。它不做很多事情----它能够利用的唯一信息只是HTTP请求的URI ,这个URI是从私有方法 parseUri.得到的。parseUri 方法保存URI 到uri 变量中,然后调用公共方法getUri来返回一个HTTP请求的URI。 为了理解parse 和 parseUri 方法是如何工作的,需要知道HTTP请求的内部结构。这个结构是在RFC2616文档中定义的。 一个HTTP请求包含三个部分: 请求行(Request line) GET /index.html HTTP/1.1 //这是一个请求行 下面的Listing 1.2.显示了parse方法的用法: Listing 1.2. The Request class' parse method public void parse() { try { for (int j=0; j<i; j++) { System.out.print(request.toString()); |