动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
   服务器 → 阅读文章

 基于Jave的Web服务工作机制(7)

作者来源:天极网 
阅读 数 477 人次 , 2006-2-15 18:07:00 

sendStaticResource 方法是非常简单的。它首先传递父路径和子路径给File类的构造器,从而对java.io.File类进行了实例化。

  File file = new File(HttpServer.WEB_ROOT, request.getUri());
  然后它检查文件是否存在。如果存在,sendStaticResource 方法通过传递File对象来构造一个java.io.FileInputStream对象。然后调用FileInputStream 的read方法,将字节流写如到OutputStream输出。注意这种情况下, 静态资源的内容也被作为原始数据被发送给了浏览器。

if (file.exists()) {
  fis  = new FileInputStream(file);
  int ch = fis.read(bytes, 0, BUFFER_SIZE);

  while (ch != -1) {
    output.write(bytes, 0, ch);
    ch = fis.read(bytes, 0, BUFFER_SIZE);
  }
}

  如果这个文件不存在,sendStaticResource 方法发送一个错误消息给浏览器。

String errorMessage = "HTTP/1.1 404 File Not Found\r\n" +
  "Content-Type: text/html\r\n" +
  "Content-Length: 23\r\n" +
  "\r\n" +
  "<h1>File Not Found</h1>";
  output.write(errorMessage.getBytes());

  编译和运行应用程序

  为了编译和运行应用,你首先需要解压包含本文应用程序的.zip文件。你解压的目录成为工作目录(working directory),它有三个子目录: src/, classes/, 和 lib/。 要编译应用程序需要在工作目录输入如下语句:

  javac -d . src/ex01/pyrmont/*.java
  这个-d 选项参数将结果写到当前目录,而不是src/ 目录。

  要运行应用程序,在工作目录中输入如下语句:

  java ex01.pyrmont.HttpServer
  要测试你的应用程序,打开浏览器,在地址栏中输入如下URL:

  http://localhost:8080/index.html
  你将可以看到浏览器中显示的index.html 页面。

  Figure 1. The output from the web server

  在控制台(Console),你能看到如下内容:

  GET /index.html HTTP/1.1
  Accept: */*
  Accept-Language: en-us
  Accept-Encoding: gzip, deflate
  User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
  Host: localhost:8080
  Connection: Keep-Alive

  GET /images/logo.gif HTTP/1.1
  Accept: */*
  Referer: http://localhost:8080/index.html
  Accept-Language: en-us
  Accept-Encoding: gzip, deflate
  User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
  Host: localhost:8080
  Connection: Keep-Alive

  概要总结

  在本文中,你了解了一个简单的WEB服务器的工作机制。本文附带的应用程序源代码只包含三个类,但并不是所有的都有用。尽管如此,它还是能被作为一种很好的学习工具为我们服务。

  
 
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:基于Jave的Web服务工作机制(6)
· 下一篇:让DNS服务器支持泛域名解析
· 我自搭建流媒体服务器(8)
· Linux防火墙配置基础篇
· 用户升级服务器的几点建议
· 代理入门系列之五
· XP技巧连载之磁盘存储一句话秘技放送


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077