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

2016-02-19 14:02 0 1 收藏

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的基于Jave的Web服务工作机制(6),过去的都会过去,迎接崭新的开始,释放更美好的自己。

【 tulaoshi.com - Web开发 】

parseUri 方法从请求行那里得到URI。Listing 1.3 展示了parseUri 方法的用途。 parseUri 减缩请求中的第一个和第二个空格来获得URI。

 

  Listing 1.3. The Request class' parseUri method

  private String parseUri(String requestString) {
  int index1, index2;
  index1 = requestString.indexOf(' ');

  if (index1 != -1) {
    index2 = requestString.indexOf(' ', index1 + 1);
    if (index2 index1)
     return requestString.substring(index1 + 1, index2);
  }

  return null;
}

  Response类

  Response表示一个HTTP响应。它的构造函数接受一个OutputStream对象,比如下面的:

  public Response(OutputStream output) {
  this.output = output;
  }
  Response 对象被HttpServer类的await方法构造,该方法被传递的参数是从socket那里得到的OutputStream对象。

  Response类有两个公共方法: setRequest和sendStaticResource. setRequest方法传递一个Request对象给Response对象。Listing 1.4中的代码显示了这个:

  Listing 1.4. The Response class' setRequest method

  public void setRequest(Request request) {
  this.request = request;
  }
  sendStaticResource 方法用来发送一个静态资源,比如HTML文件。Listing 1.5给出了它的实现过程:

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  Listing 1.5. The Response class' sendStaticResource method

  public void sendStaticResource() throws IOException {
  byte[] bytes    = new byte[BUFFER_SIZE];
  FileInputStream fis = null;

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  try {
    File file = new File(HttpServer.WEB_ROOT, request.getUri());
    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);
      }
    }
    else {
      // file not found
      String errorMessage = "HTTP/1.1 404 File Not Foundrn" +
        "Content-Type: text/htmlrn" +
        "Content-Length: 23rn" +
        "rn" +
        "h1File Not Found/h1";
      output.write(errorMessage.getBytes());
    }
  }
  catch (Exception e) {
    // thrown if cannot instantiate a File object
    System.out.println(e.toString() );
  }
  finally {
    if (fis != null)
      fis.close();
  }
}

来源:https://www.tulaoshi.com/n/20160219/1605995.html

延伸阅读
       基于Linux的目录服务实现   · 魏星 王舒晟·CPCW      摘要:       本文的目的是通过使用Linux系统支持的应用软件包(openldap),快速实现基于LDAP协议的目录服务系统来支持Windows消息簿中的用户查询功能。作者从用户的观点介绍了目录服...
标签: Web开发
引言 大家都知道可以通过post或者get获得form表单的数据,那么我们如何实现不刷新的提交直接获得页面上的数据呢?这就要借助xmlhttp协议了。xmlhttp是xmldom技术的一部分。   下面的代码就是一个很简单的例子,我们利用xmlhttp技术实现简单的用户登陆。 开始 1.简单的登录页面 login.jsp ...
MVC介绍 MVC模式是一种非常理想化的设计模式,应用MVC模式完成两个以上项目的人都有同样的体会,他们已经对以前的工作方法进行了彻底的改造。工作模式的改变要付出痛苦的代价,但现在你有现成的技术架构可以采用,避免在项目中自己开发、摸索。它就是开源Apache Struts framework,它提供了实现MVC设计模式最好的实现工具。 ...
5.5.1 基于Web管理的原理 1. 客户机 客户机操作系统为Windows 2000、Windows 98或Windows NT,安装IE 5.0以上的浏览器,安装Java插件Oracle JInitiator 1.1.8.10和基于Applet技术的。 2. 中间层 安装和Apache HTTP服务器。 3. 数据库服务器 安装数据库服务器,运行。 5.5.2 如何构建基于Web管理的环...
标签: Web开发
摘要 在当前的网络信息时代,信息量不仅庞大而且源自于不同的数据源,信息集成一直是研究的热点。基于多代理(Multi-Agent)的信息资源集成方案有所不足,而XML集成机制的优点,适于网络环境下基于XML的信息集成。本方案:包括系统的总体框图、层次结构、工作过程及信息系统主要部分的具体设计。 关键词 XML,资源集成,DTD,XSL, Wrapp...

经验教程

541

收藏

33
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部