用C++实现类似于JAVA HttpServlet 的编程接口
?
? ? ? 本人自99年开始接触网络编程,当初最早做的项目都是用 C 语言写一大堆 CGI,可谓是偿尽了编程的苦,因为那时国内的技术水平普遍比较低,如果你会 CGI 编程,就已经算是行业中人了,如果你对 CGI 编程比较熟练,则就可以称得是“专家”了,后来技术不断进步,各种国外的新技术都进入中国并不断得到普及,CGI 就逐渐沦为一种落后的技术,后来的 PHP, JSP/Servlet, ASP 逐渐占领了 WEB 编程的技术市场,这个时候如果你说再用 C 写 CGI,别人会感觉是在和古人对话。现在主流的 WEB 开发语言一个很大的优势就是有各种相对成熟的基础库和框架,开发效率很高,而 CGI 则就逊色很多。当然,这些语言也得有执行效率相对较低的问题,毕竟它们都是脚本语言或半编译语言,需要虚拟机解释执行,象 facebook 的 WEB 前端基本都是用 PHP 写的,他们为了解决执行效率问题,在一位华人的领导下开发了可以将 PHP 代码转成 C++ 代码的工具(hiphop),从而使执行效率大大提高,这也从另一个侧面反映出技术人员还是希望他们的程序能够运行的更快些。
? ? ? 本文主要描述了 acl_cpp 库中有关 WEB 编程的方法类,为了使大家容易上手,其中的接口设计及命名尽量模仿 JAVA HttpServlet 等相关的类(希望 Oracle 不会告我侵权,呵呵)。如果您会用C/C++编程,同时又有使用 Java Servlet 进行 WEB 编程的经验,则该文您读起来一点不会费力,当然如果您多年从事 WEB 开发,我想理解这些类的设计及用法也不应该有什么难度。好了,下面就开始讲如何使用 acl_cpp 库中的 http/ 模块下的类进行 web 编程。
? ? ? 在 acl_cpp/src/http 模块下,有几个类与 WEB 编程相关:HttpServlet,HttpServletRequest, HttpServletResponse, HttpSession, http_header, http_mime, http_client。如果您掌握了这几个类的用法,则进行 WEB 编程就不会有什么问题了,下面一一介绍这几个类:
? ? ? 一、HttpServlet 类
? ? ? 构造函数及析构函数:
?