设为首页 加入收藏

TOP

开源C++版本CGI库CGICC入门(一)
2018-12-04 16:10:19 】 浏览:45
Tags:开源 版本 CGI CGICC 入门

原发布在ChinaUnix,但未自动搬迁过来:http://blog.chinaunix.net/uid-20682147-id-4895772.html

PDF版本:https://files-cdn.cnblogs.com/files/aquester/%E5%BC%80%E6%BA%90C%E5%8A%A0%E5%8A%A0%E7%89%88%E6%9C%ACCGI%E5%BA%93CGICC%E5%85%A5%E9%97%A8.pdf

目录

目录 1

1. 简介 1

2. CGICC组成 1

3. CGI输入处理子模块类结构 2

3.1. Cgicc 2

3.2. CgiEnvironment 2

3.3. HTTPCookie 2

3.4. CgiInput 3

3.5. FormFile 3

3.6. FormEntry 3

4. CGI输入处理子模块初始化流程 3

5. 编译和安装CGICC 4

6. CGICC使用示例 5

6.1. 页面效果 5

6.2. HTML文件 5

6.3. test.txt文件 6

6.4. CGI文件 6

6.5. 运行效果 8

7. HTML输出子模块类图 10

7.1. HTTPContentHeader 13

7.2. HTMLElement::render()函数 13

8. 问题? 16

 

1. 简介

CGICC是一个C++语言实现的开源CGI库,采用LGPL授权协议,使用较为简单。

CGICC官网:http://www.gnu.org/software/cgicc/,截止2015/3/14CGICC最新稳定版本为3.2.16,下载地址是:http://ftp.gnu.org/gnu/cgicc/cgicc-3.2.16.tar.gz,最新更新时间为2014/12/7(令人惊讶和欣慰的是作为古老的CGICGICC还在不断的更新)。

2. CGICC组成

CGICC由两大部分组成:

1) CGI输入处理子模块

2) HTML输出子模块

 

本文暂只介绍CGI输入处理子模块,对于HTML输出,推荐Google开源的ctemplatehttps://github.com/OlafvdSpek/ctemplate)。

3. CGI输入处理子模块类结构

 

3.1. Cgicc

CGICC的一类,通常直接在CGI的入口函数,如main函数中定义一个CGICC对象,然后即可使用CGICC提供的各种能力。

3.2. CgiEnvironment

提供get系列方法取各环境变量的值。

3.3. HTTPCookie

提花get系列方法取各Cookie的值,并支持set新增或修改Cookie值。

3.4. CgiInput

CgiEnvironment内部类,仅供CgiEnvironment使用。

3.5. FormFile

提供访问HTMLForm中的被上传文件信息和数据接口。

3.6. FormEntry

提供访问HTMLForm中的非被上传文件类的信息和数据接口。取URL参数值示例:

// http://127.0.0.1/?param_name=param_value

cgicc::form_iterator iter = cgi.getElement("param_name");

if (iter != cgi.getElements().end())

{

    std::string param_value = iter->getValue();

}

 

// 也可以这样做:

std::string param_value = cgi("param_name");

 

// 除此之外,FormEntry还提供了直接取指定数据类型的参数值,如:getIntegerValue、getDoubleva lue

4. CGI输入处理子模块初始化流程

初始化流程是由Cgicc构造函数触发的,一般可在CGImain函数中定义一个Cgicc对象:

 

5. 编译和安装CGICC

详细编译步骤如下:

1) 将CGICC源代码包(本文下载的是cgicc-3.2.16.tar.gz)上传到Linux某目录(本文将CGICC源代码包cgicc-3.2.16.tar.gz上传到/tmp目录);

2) 登录Linux,并进入目录/tmp

3) 解压CGICC源代码包cgicc-3.2.16.tar.gztar xzf cgicc-3.2.16.tar.gz

4) 解压后,会在/tmp下产生一个子目录cgicc-3.2.16,进入到这个子目录;

5) 然后执行configure命令(本文指定的安装目录为/usr/local/cgicc-3.2.16,可以根据需要设定为其它目录),以生成Makefile编译文件,如果要在共享库中使用CGICC,请使用下列编译命令:

./configure --prefix=/usr/local/cgicc-3.2.16 CXXFLAGS=-fPIC LDFLAGS=-fPIC

 

否则,可按如下命令编译:

./configure --prefix=/usr/local/cgicc-3.2.16

 

在一些环境上,如果不带-fPIC编译静态库,使用静态库时,就会报链接错误。

6) 执行make编译:make

7) 安装CGICC库:make install

8) 为/usr/local/cgicc-3.2.16建立不带版本号的软链接:

ln -s /usr/local/cgicc-3.2.16 /usr/local/cgicc

 

至此,CGICC库就安装好了!

6. CGICC使用示例

6.1. 页面效果

 

6.2. HTML文件

页面效果对应的HTML文件内容如下(HTML中的id一般是给前端如js使用的,而name通常是给服务端如CGI使用的):

<html>

    <head>

       <title>
编程开发网

首页 上一页 1 2 3 4 5 6 7 下一页 尾页 1/10/10
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇STL源码分析之空间配置器 下一篇c/c++ 拷贝控制 构造函数的问题

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(214) }