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

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

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

【 tulaoshi.com - Web开发 】

input = socket.getInputStream();
  output = socket.getOutputStream();
await于是就创建一个Request对象并调用它的 parse 方法来解析原始的HTTP请求信息。

 

  // create Request object and parse
  Request request = new Request(input);
  request.parse();

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

  接下来,await 方法创建了一个Response 对象,使用setRequest方法并调用它的sendStaticResource 方法。

  // create Response object
  Response response = new Response(output);
  response.setRequest(request);
  response.sendStaticResource();

  最后,await关闭该Socket。调用Request的getUri方法来检查HTTP请求的URI是否是一个shutdown命令。如果是,shutdown变量被设置为true,程序退出while循环。

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

  // Close the socket
  socket.close();
  //check if the previous URI is a shutdown command
  shutdown = request.getUri().equals(SHUTDOWN_COMMAND);

  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)
  请求包头(Headers)
  消息体(Message body)

  现在,我们仅仅只对HTTP请求的第一部分请求行(Request line)感兴趣。一个请求行由方法标记开始,后面根请求的URI和协议版本,最后由CRLF字符结束。请求行中的元素被空格字符分开。比如,使用GET方法请求的index.html文件的请求行如下:

  GET /index.html HTTP/1.1 //这是一个请求行
  方法parse从socket的InputStream 中读取整个字节流,该字节流是 Request 对象传递进来的,然后parse将这些字节流存储在一个缓冲区里, 在缓冲区中组装一个称为request的StringBuffer对象。

  下面的Listing 1.2.显示了parse方法的用法:

  Listing 1.2. The Request class' parse method

  public void parse() {
  // Read a set of characters from the socket
  StringBuffer request = new StringBuffer(2048);
  int i;
  byte[] buffer = new byte[2048];

  try {
    i = input.read(buffer);
  }
  catch (IOException e) {
    e.printStackTrace();
    i = -1;
  }

  for (int j=0; ji; j++) {
    request.append((char) buffer[j]);
  }

  System.out.print(request.toString());
  uri = parseUri(request.toString());
  }

来源:https://www.tulaoshi.com/n/20160219/1606004.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设计模式最好的实现工具。 ...
标签: PHP
  ## manage_read.php <?php require ("func.php"); if (check_admin_password()) {     $board=$jl_forum[board];     switch ($job){         case "setgood":          ...
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管理的环...

经验教程

309

收藏

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