C++网站开发MVC框架TreeFrog Framework教程——2.简单示例
2017-06-11 22:47
309 查看
C++网站开发MVC框架TreeFrog Framework教程——2.简单示例
下面以一个博客文章管理网站的开发实例作为这个框架的使用入门教程。安装TreeFrog Framework
下面以Ubuntu为例说明:1.安装框架的依赖库:
$ sudo apt-get install -y qt5-default qt5-qmake libqt5sql5-mysql libqt5sql5-psql libqt5sql5-odbc libqt5sql5-sqlite libqt5core5a libqt5qml5 libqt5xml5 qtbase5-dev qtdeclarative5-dev qtbase5-dev-tools gcc g++ make
2.安装客户端的DB库
$ sudo apt-get install -y libmysqlclient-dev libpq5 libodbc1
3.下载框架源码
网址:http://www.treefrogframework.org/download
4.源码安装
$ tar xvfz treefrog-x.x.x.tar.gz $ cd treefrog-x.x.x $ ./configure $ cd src $ make $ sudo make install $ cd ../tools $ make $ sudo make install
生成项目的骨架
我们为程序命名为bolgapp,那么执行下面的命令即可自动生成项目的骨架:$ tspawn new blogapp
创建数据表
在数据库中创建存储“博客文章”的数据表,它包含以下数据列:id、title, body, created_at, updated_at, lock_revision。其中created_at和updated_at分别表示创建时间和修改时间,它们会由TreeFrog负责自动插入和更新。lock_revisio这个名字会被TreeFrog识别为乐观锁,他一般表示的是当前资源的版本号,因此其数据类型一般是整型。1.MySQL
$ mysql -u root -p mysql> CREATE DATABASE blogdb DEFAULT CHARACTER SET utf8; mysql> USE blogdb; mysql> CREATE TABLE blog (id INTEGER AUTO_INCREMENT PRIMARY KEY, title VARCHAR(20), body VARCHAR(200), created_at DATETIME, updated_at DATETIME, lock_revision INTEGER) DEFAULT CHARSET=utf8; mysql> DESC blog; +---------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | title | varchar(20) | YES | | NULL | | | body | varchar(200) | YES | | NULL | | | created_at | datetime | YES | | NULL | | | updated_at | datetime | YES | | NULL | | | lock_revision | int(11) | YES | | NULL | | +---------------+--------------+------+-----+---------+----------------+
2.SQLite
$ cd blogapp $ sqlite3 db/blogdb sqlite> CREATE TABLE blog (id INTEGER PRIMARY KEY AUTOINCREMENT, title VARCHAR(20), body VARCHAR(200), created_at TIMESTAMP, updated_at TIMESTAMP, lock_revision INTEGER);
关于乐观锁
所谓乐观锁,其实就是在更新数据(写操作)时不主动进行获得锁并上锁的操作,而是在最后保存写入时再通过检查对象数据的版本号,如果与原来的一致(说明期间没有其他人进行更新),那才执行最后的写入操作,否则放弃执行。TreeFrog的ORM框架支持乐观锁机制,这需要对应的数据表提供一个数据列来表示版本号(一般是整型)。这样就可以省去大量的上锁操作,可以提高系统的整体效率。配置数据库
使用文本编辑器打开项目工程目录下的config/database.ini文件,在[dev]配置子项中根据自己的情况输入对应的值,保存后再退出。1.MySQL的例子:
[dev] DriverType=QMYSQL DatabaseName=blogdb HostName= Port= UserName=root Password=****** ConnectOptions=
2.SQLite的例子:
[dev] DriverType=QSQLITE DatabaseName=db/blogdb HostName= Port= UserName= Password= ConnectOptions=
运行下面的命令:
$ cd blogapp $ tspawn --show-tables
如果配置成功的话,会显示下面的内容:
DriverType: QMYSQL DatabaseName: blogdb HostName: Database opened successfully ----------------- Available tables: blog
根据数据表自动生成源代码
下面的命令会根据之前创建好的数据表blog自动生成C++源代码——包括控制器、模型、视图。$ tspawn scaffold blog
编译项目源代码
首先运行下面的命令生成Makefile文件。如果输出了大量的WARNING警告,不用担心,这属于正常情况。$ qmake -r "CONFIG+=debug" 或者 $ qmake -r "CONFIG+=release"
运行make命令,把刚才自动生成的源代码都编译了。
$ make
如果编译成功,那么将会在lib目录下生成以下库文件:controller、model、view、helper
启动项目
在项目的根目录下运行下面的命令,开启项目(默认端口号是8800):$ treefrog -e dev
这样默认是shell前台运行项目,可以按Ctrl+c来关闭停止。当然,你也可以加上-d选项来让程序在后台执行。这里的dev指的就是读取各个配置表中的[dev]配置子项。当然,你也可以指定其他的配置子项。
配置子项 | 说明 |
---|---|
dev | 开发用 |
test | 测试用 |
product | 正式发行用 |
$ treefrog -k stop
强制停止程序:
$ treefrog -k abort
重启程序:
$ treefrog -k restart
用浏览器访问
开启程序后,在浏览器的地址栏上输入http://localhost:8800/Blog即可访问到我们的博客文章系统。相关文章推荐
- C++网站开发MVC框架TreeFrog Framework教程——4.生成器
- C++网站开发MVC框架TreeFrog Framework教程——6.模型层
- C++网站开发MVC框架TreeFrog Framework教程——5.控制器
- C++网站开发MVC框架TreeFrog Framework教程——7.ERB模板
- C++网站开发MVC框架TreeFrog Framework教程——1.简介
- C++网站开发MVC框架TreeFrog Framework教程——8.Otama模板
- C++网站开发MVC框架TreeFrog Framework教程——9.WebSocket
- TreeFrog Framework开发环境搭建 (C++ web framework, based on Qt)
- TreeFrog Framework(C++ web framework, based on Qt)开发环境搭建
- TreeFrog Framework 开发入门之HelloWorld
- 一个极好的C++教程网站,适合想开始做些开发的CG艺术家。
- 动态网站开发技术学习2:VS 2010制作作第一个简单示例网站
- Ubuntu 安装mysql,以及使用C++开发简单示例
- Java Spring开发环境搭建及简单入门示例教程
- phonegap 开发入门 PhoneGap官方网站上有详细的入门示例教程,这里,我针对使用PhoneGap进行Android移动应用的开发对其官网的Get Started进行一些介绍、补充。 Ste
- Linux C/C++ Openssl RSA Encrypt/Decrypt(加密/解密) 简单示例教程
- MCSD培训教程70-016 Microsoft Visual C++ 6.0 桌面应用程序开发
- 计划写一个MyEclipse6.0开发Spring应用的简单教程。
- spring2.5 + hibernate3.2 标注(annotation)开发的简单示例
- Silverlight 2学习教程(二):开发简单的Silverlight 2应用程序