没有合适的资源?快使用搜索试试~ 我知道了~
首页开源C++版本CGI库CGICC入门
开源C++版本CGI库CGICC入门
需积分: 33 899 浏览量
更新于2023-03-16
评论 2
收藏 665KB PDF 举报
CGICC是一个C++语言实现的开源CGI库,采用LGPL授权协议,使用较为简单。 CGICC官网:http://www.gnu.org/software/cgicc/,截止2015/3/14,CGICC最新稳定版本为3.2.16,下载地址是:http://ftp.gnu.org/gnu/cgicc/cgicc-3.2.16.tar.gz,最新更新时间为2014/12/7(令人惊讶和欣慰的是作为古老的CGI,CGICC还在不断的更新)。
资源详情
资源评论
资源推荐

1
开源
C++
版本
CGI
库
CGICC
入门
易剑 2015/3/14
目录
目录..................................................................................................................................................... 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/14,CGICC 最新稳定版
本为 3.2.16,下载地址是:http://ftp.gnu.org/gnu/cgicc/cgicc-3.2.16.tar.gz,最新更新时间为
2014/12/7(令人惊讶和欣慰的是作为古老的 CGI,CGICC 还在不断的更新)。
2. CGICC
组成
CGICC 由两大部分组成:

开源 C++版本 CGI 库 CGICC 入门
2
1) CGI 输入处理子模块
2) HTML 输出子模块
本文暂只介绍 CGI 输入处理子模块,对于 HTML 输出,推荐 Google 开源的 ctemplate
(https://github.com/OlafvdSpek/ctemplate)。
3. CGI
输入处理子模块类结构
Cgicc
+getEnvironment()
+getFiles()
+getFile()
+getElements()
+getElementByValue()
+getElement()
+getHost()
+getVersion()
+getCompileTime()
+getCompileDate()
+save()
+restore()
-parseMIME()
-parseFormInput()
CgiEnvironment
+getCookies()
+getCookieList()
+getQueryString()
+getContentLength()
+getContentType()
+getPostData()
+getServerName()
+getServerSoftware()
+getServerProtocol()
+getGatewayInterface()
+getServerPort()
+usingHTTPS()
+getRequestMethod()
+getUserAgent()
+getAccept()
+getRemoteAddr()
+getRemoteHost()
+getRemoteIdent()
+getRemoteUser()
+getReferrer()
+getRedirectURL()
+getRedirectStatus()
+getRedirectRequest()
+getPathInfo()
+getPathTranslated()
+getScriptName()
+getAuthType()
FormEntry
-string fName
-string fValue
+getName()
+getValue()
+getStrippedValue()
+getIntegerValue()
+getDoubleValue()
+length()
+isEmpty()
FormFile
-string fName
-string fFilename
-string fDataType
-string fData
+getName()
+getFilename()
+getDataType()
+getData()
+getDataLength()
*
*
CgiInput
+read()
+getenv()
HTTPCookie
+getName()
+getValue()
+getComment()
+getDomain()
+getMaxAge()
+getPath()
+isSecure()
+setName()
+setValue()
+setComment()
+setDomain()
+setMaxAge()
+setPath()
+setSecure()
*
CgiInput由 外 部 调 用 者 传 入 ,
如 果 外 部 没 有 传 入 ,
则 CgiEnvironment类 的 构 造 函 数
创 建 局 部 对 象
std::cin.read(data, length);
std::getenv(varName);
CgiEnvironment构 造 函 数 中 , 会 解 析 出 常 用 的 环 境 变 量 ,
并 保 存 起 来 , 之 后 调 用 它 的 get函 数 即 可 取 得 值 ;
同 时 , 会 将 cookie按 名 值 对 方 式 解 析 存 储 起 来 ;
对 于 post数据 会 一 次 性 读 取 存 到 fPostData中 同 ,
由 于 post数据 是 一 次 性 存 在 在 内 存 中 的 , 所 以 不 能 过 大 。
MStreamable
+render()
3.1.Cgicc
CGICC 的一类,通常直接在 CGI 的入口函数,如 main 函数中定义一个 CGICC 对象,
然后即可使用 CGICC 提供的各种能力。
3.2.CgiEnvironment
提供 get 系列方法取各环境变量的值。
3.3.HTTPCookie
提花 get 系列方法取各 Cookie 的值,并支持 set 新增或修改 Cookie 值。

开源 C++版本 CGI 库 CGICC 入门
3
3.4.CgiInput
CgiEnvironment 内部类,仅供 CgiEnvironment 使用。
3.5.FormFile
提供访问 HTML 的 Form 中的被上传文件信息和数据接口。
3.6.FormEntry
提供访问 HTML 的 Form 中的非被上传文件类的信息和数据接口。取 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、getDoubleValue
4. CGI 输入处理子模块初始化流程
初始化流程是由 Cgicc 构造函数触发的,一般可在 CGI 的 main 函数中定义一个 Cgicc
对象:

开源 C++版本 CGI 库 CGICC 入门
4
: main
Cgicc CgiEnvironment CgiInput
1 : Cgicc()
2 : CgiEnvironment()
query string
post
3 : CgiInput()
4 : readEnvironmentVariables()
5 : parseCookies()
6 : return
7 : parseFormInput()
8 : parseMIME()
9 : parseFormInput()
10 : parseMIME()
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.gz:tar 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 建立不带版本号的软链接:
剩余15页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0