OMToolkit介绍(2) :Web Server 实现
OMToolkit介绍(2) :Web Server 实现
本文将介绍OMToolkit中Web Server部分的实现,涉及的内容包括基于NIO的Server,配置文件的读取,Http 请求报文的分析,Session和Cookie的获取等。
1. 基于NIO的Server轮询
首先,是Server类的框架:
Request以Http报文作为输入,先将报文按两个换行符分为head和body,在从head中读取path,之后进行一些初始化处理。URL解码时用到了Cfg中的参数charset:entity指的是path后的第一个参数,之所以命名为entity,是与OMToolkit的约定有关的,即URL http://localhost/EntityClass/action/param1/value1/param2/value2 表示调用EntityClass的action方法,并将属性param1设置为value1,属性param2设置为value2。,这将在后面介绍 Web Framework实现时用到。
但仍然有两个例外,一个是形如 http://localhost/resources/* 的形式,表示读取资源文件;另一个是http://localhost//favicon.ico,这是浏览器经常需要访问的一个文件。isResources()方法的实现如下:
6.Session的获取和设置
接下来就是Session的处理了。OMToolkit是利用Cookie来设置session编号的,如果Http报文中包含了session编号,则在已有的HashMap中查找session;否则创建一个session,并通过 Set-cookie 的方式将session编号告知浏览器。
下面是Session类的实现:
另外,我们还需要一个操作Sesssion的辅助类SessionUtil:同时,需要在Request类中加入获取session的方法:
CookieUtil的实现如下:oldCookie:Set-Cookie: name=张三; Path=/; Expires=Sat,17 Mar 2012 07:47:55 GMTSet-Cookie: password=zhangsan; Path=/; Expires=Sat,17 Mar 2012 07:47:55 GMTnewCookie:Set-Cookie: name=张三; Path=/; Expires=Sat,17 Mar 2012 07:47:55 GMTSet-Cookie: password=zhangsan; Path=/; Expires=Sat,17 Mar 2012 07:47:55 GMT
到此为止,OMToolkit中的Server部分就介绍完毕了。现在的代码应该与OMServer_Complete.rar相似。当然,现在Server的功能还很局限。下一篇文章将介绍OMToolkit中的 Web Framework 的实现,到时我们将看到目前的 Server 的功能是如何得到扩展的。 1 楼 裴小星 2011-03-20 Accepter应该写作Acceptor,SVN上的源码已经修改了,后续的文章也将使用这个名称。