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

来源:asp之家 时间:2010-04-05 18:13: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服务器的工作机制。本文附带的应用程序源代码只包含三个类,但并不是所有的都有用。尽管如此,它还是能被作为一种很好的学习工具为我们服务。

标签:java,web服务器
0
投稿

猜你喜欢

  • 轻松架设Windows 2003中Web服务器

    2009-01-14 17:02:00
  • Linux如何查看进程栈信息示例

    2022-02-16 08:33:06
  • 阿里妈妈买家购买广告流程【图】

    2007-09-20 18:20:00
  • Google对网页进行自动排名的说明

    2007-08-14 16:35:00
  • VMware15安装CentOS7详细过程以及常见问题(图文)

    2021-03-06 20:52:07
  • 51wan 性感女王胸女来袭 太平公主纷纷落马

    2009-10-12 16:46:00
  • 全过程解析域名注册商由新网转移到美国Godaddy

    2010-02-01 12:49:00
  • 详解Centos6.5下docker 环境搭建

    2023-08-06 10:10:12
  • 建博数月日PV近千 坚持原创勤于更新推广

    2008-12-29 23:05:00
  • 比上帝还流行 最受欢迎10大圣诞礼物

    2008-12-16 13:45:00
  • FTP使用精萃--FTP的内部命令

    2009-12-22 19:28:00
  • 三大网站正面PK MSN、QQ、HI大斗法

    2008-03-05 21:36:00
  • 在Linux上实现DB2双机HA完整方案

    2008-10-10 12:50:00
  • Linux操作系统Ubuntu 9.10将集成CouchDB

    2009-10-28 08:24:00
  • GoDaddy:如何给Password Vault添加密码

    2010-04-12 12:34:00
  • 百度被伊朗黑客攻陷

    2010-01-12 13:42:00
  • Win2K Internet服务器安全构建指南(三)

    2007-10-26 13:52:00
  • DEDECMS专题制作方法

    2010-12-08 16:25:00
  • “米农”半夜“刨”好域名卖好价钱

    2009-10-14 15:32:00
  • 网站重建如何保护已有排名

    2008-02-17 14:09:00
  • asp之家 网站运营 m.aspxhome.com