王博 鮑玉薇 石家莊信息工程職業(yè)學(xué)院
隨著網(wǎng)絡(luò)在社會生產(chǎn)、生活中的應(yīng)用越來越廣泛,程序在網(wǎng)絡(luò)中傳輸數(shù)據(jù)是一項重要的功能需求,在程序設(shè)計課程的教學(xué)中,網(wǎng)絡(luò)功能模塊的學(xué)習(xí)顯得尤為重要。通常一個具有網(wǎng)絡(luò)功能的程序數(shù)據(jù)傳輸?shù)倪^程是一個客戶端程序Client 與一個服務(wù)端程序Server 進行相互的數(shù)據(jù)發(fā)送與接收。對于剛開始學(xué)習(xí)網(wǎng)絡(luò)功能的初學(xué)者來說,同時學(xué)習(xí)客戶端與服務(wù)端的網(wǎng)絡(luò)功能實現(xiàn)難度會更大,且容易引起知識思維上的混亂,因此在傳統(tǒng)教學(xué)中,首先是從客戶端程序Client 入手,與服務(wù)端通信,第二階段是學(xué)習(xí)服務(wù)端Server 的程序編寫方法。在第一階段需要一個可同時為多個課程提供快速應(yīng)用的服務(wù)端方案。
TreeFrog 框架基于C++和QT,是一個全棧高速網(wǎng)頁框架,具有高速優(yōu)化的C++引擎,使用O/R 映射,簡化數(shù)據(jù)庫操作,支持多種數(shù)據(jù)庫。
TreeFrog 框架不同于其他應(yīng)用框架,可實現(xiàn)一個工程項目的快速搭建,其他框架的思路是提供一套API。
生成器用于快速生成應(yīng)用程序骨架,包括控制器、模型、視圖、工具類、配置文件、數(shù)據(jù)庫存儲目錄、靜態(tài)頁面目錄、腳本目錄等,這些內(nèi)容組成了一個服務(wù)端項目的全部所需內(nèi)容。生成器可用于一次性生成控制器、模型、視圖等功能模塊,項目骨架生成后,可單獨生成需要的控制器、模型等功能模塊。
控制器用于響應(yīng)客戶端的響應(yīng),通過定義Action 控制器可以區(qū)分客戶端的請求內(nèi)容。TreeFrog 是全棧解決方案,可提供服務(wù)、數(shù)據(jù)、頁面等完整功能。
模型是一個對象,TreeFrog 中模型功能可生成對應(yīng)數(shù)據(jù)表的模型類。通過模型可以根據(jù)數(shù)據(jù)表生成對應(yīng)的對象類及常用的CRUD 方法,簡化數(shù)據(jù)庫的訪問,對于復(fù)雜的數(shù)據(jù)庫操作也可通過SQL 語句完成。
根據(jù)教學(xué)內(nèi)容需求,以教學(xué)案例注冊登錄界面為例,需要存儲與查詢用戶名與密碼,首先生成整個項目的骨架Skeleton,服務(wù)端的TreeFrog 控制器對應(yīng)方法,loginAction用于查詢注冊信息,registAction 用于存儲注冊信息,根據(jù)數(shù)據(jù)庫中的數(shù)據(jù)表,生成應(yīng)用架構(gòu)Scaffold,Scaffold 包括控制器,模型,視圖源文件。
在TreeFrog 命令窗口中使用“tspawn new tserver”生成項目骨架,tserver 作為項目名稱,同時創(chuàng)建項目名稱為根目錄的目錄樹,修改config 目錄下的database.ini 配置文件,數(shù)據(jù)庫使用SQLite,修改driverType=QSQLITE,databaseName=db/tsdb。在數(shù)據(jù)庫中創(chuàng)建users 數(shù)據(jù)表,字段為id INTEGER AUTO_INCREMENT PRIMARY KEY,uname VARCHAR(30),pwd VARCHAR(30)。
在TreeFrog 命令窗口中使用“tspawn controller LoginCheck login registNew”生成控制器,LoginCheck 是控制器名稱,將會生成LoginCheckController 類,login 和registNew 是TreeFrog 中的兩個Action,對應(yīng)LoginCheck Controller 類中的兩個方法,分別用于登錄時用戶名與密碼的檢測以及注冊新用戶時對數(shù)據(jù)庫添加數(shù)據(jù)的操作。
在TreeFrog 命令窗口中使用“tspawn model users”生成模型,users 是數(shù)據(jù)表的名稱,將會生成usersobject 作為users 類的定義,可使用其中的屬性id、uname、pwd 作為與數(shù)據(jù)庫對應(yīng)字段的三個屬性,同時生成users類,該類中自動生成create、update、save、remove、get 方法,可實現(xiàn)數(shù)據(jù)庫中CRUD操作。
客戶端訪問控制器通過/LoginCheck/login方式登錄,通過/LoginCheck/registNew 方式注冊新,分別調(diào)用TreeFrog 項目LoginCheck Controller 類中l(wèi)ogin 與registNew 方法,通過httpRequest().formItemValue("userinfo")獲取客戶端發(fā)送過來的信息,約定使用json格式發(fā)送,提取用戶名與密碼存儲為QString類型,調(diào)用模型中的方法getAll()讀取數(shù)據(jù)庫的用戶信息,存儲為QList
使用TreeFrog 提供的renderJson(jsonObj)將確認(rèn)信息發(fā)送給客戶端。在registNew 方法中使用同樣的遍歷方法查看用戶名是否已經(jīng)存在,不存在可注冊。
本文通過分析TreeFrog 功能特點,確定了TreeFrog 的功能應(yīng)用可用于程序設(shè)計課程網(wǎng)絡(luò)模塊教學(xué)中,并且能夠根據(jù)不同教學(xué)案例需求,快速實現(xiàn)相應(yīng)功能,相較傳統(tǒng)的教學(xué)案例制作方法更加高效,同時可為TreeFrog 服務(wù)器搭建提供應(yīng)用參考。