-
Notifications
You must be signed in to change notification settings - Fork 1
How To Use?
Welcome to the CgiManager wiki! 这里告诉你如何快速使用CgiManager编译一个WebApp
一、框架结构
WWW是框架的根目录,你也可以根据需要更改为其他名称,比如webroot或者wwwroot
application 是非常重要的目录,里面有框架的配置文件和视图层目录view。
application/view 下放置控制器对应的html文件。
application/config.txt 是框架的核心配置文件。
application/database.txt 是框架的数据库配置文件。
application/route.txt 是框架的路由配置文件,常用于伪静态配置。
public 是资源目录,可在里面放置css js 以及需要用到的图片之类的文件。
favicon.ico 这个就不需要说明了吧若真的不知道,请百度一下
二、控制器的使用
本框架采用MVC的模式进行开发,控制器的使用非常重要。下面将用一个小例子创建一个控制器。
首先新建一个C++类, 如CIndex。其头文件如下:
#pragma once
#include "CgiManager.h"
class CIndex :
public CController //别忘了继承CController类
{
public:
CIndex();
~CIndex();
// 必须是静态函数
static void index();
};cpp文件如下:
#include "Index.h"
CIndex::CIndex()
{
}
CIndex::~CIndex()
{
}
void CIndex::index()
{
// 展示首页 空参数将访问默认的index.html
HtmlView();
}这样就写好了一个简单的控制器类。接下来只需要注册这个控制器类就可以使用了~
我们再新建一个cpp文件,如 main.cpp 用做入口。
#include "CgiManager.h"
// 加载控制器
#include "Index.h"
// CGI程序入口点 (注意,是cgiMain而不是main)
int cgiMain()
{
// 定义控制器对象
CIndex index;
// 绑定方法 (参数:绑定的控制器对象, 绑定的url, 绑定的方法)
CController::BindFunction(index, "index", index.index);
// 初始化控制器 (无论有多少控制器,只需在最后调用一次就可以)
CController::Initialize();
// 返回
return true;
}这样子就可以使用了。注意Initialize只需在最后调用一次就行。
接下来我们把index.html放到 www/application/view/index 目录下。[此处的index指的是控制器名。]
这样子就可以通过在浏览器访问localhost/index/index 看到首页了~ [url规则: 控制器名/绑定的方法名]
当然,如果config.txt里配置了默认控制器和方法,可直接访问localhost。
看到这里,你可能会问,控制器名不是CIndex吗,为什么变成index了。这是因为config.txt里默认的控制器前缀为C。
如果需要使用伪静态,根据需求配置好route.txt就可以了。
如localhost/index.html等同于访问localhost/index/index
三、模型的使用
根据需求配置好database.txt后,框架将会自动连接到数据库,非常方便。
在需要使用的控制器里声明模型对象后就可以使用了。
void CIndex::test()
{
// 构造数据模型
CModel pModel;
// 创建表 (若不存在则创建,已存在则不会执行)
pModel.Create("user", "user_id INTEGER PRIMARY KEY AUTOINCREMENT, user_name varchar(255), password varchar(255)");
// 检查数据 (不存在则插入数据)
if(!pModel.Check("user", "user_name = 'shadow'"))
{
pModel.Save("user", "null, 'shadow', '123456'")
}
// 根据字段名称查询数值
string name = pModel.Get("user", "user_name", "user_name = 'shadow'");
string pwd = pModel.Get("user", "password", "user_name = 'shadow'");
OutPut("用户名:%s 密码:%s", name.c_str(), pwd.c_str());
}这样子就可以使用模型了,是不是非常简单呢~