亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

基于FastCGI和HTML模板的嵌入式WEBMVC開發(fā)框架的制作方法

文檔序號:6377393閱讀:828來源:國知局
專利名稱:基于FastCGI和HTML模板的嵌入式WEB MVC開發(fā)框架的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種基于FastCGI和HTML模板的嵌入式WEB MVC開發(fā)框架。
背景技術(shù)
目前市面上有不少嵌入式設(shè)備上WEB開發(fā)框架,如使用PHP、EJscript以及近來新起的服務(wù)端JavaScript等,但大多數(shù)都體積太大動輒好幾兆。在一些小型嵌入式設(shè)備上因成本原因Flash空間都非常小,很多只有6-8M,在這點flash空間上大部分要用來存放業(yè)務(wù)程序代碼,不可能為WEB應(yīng)用使用太大的開發(fā)框架。
市面上也有些小型嵌入式設(shè)備上WEB開發(fā)框架,其實現(xiàn)方法為Web Server接受到Http請求解析出用戶提交的數(shù)據(jù)放到環(huán)境變量,CGI程序從環(huán)境變量中讀取用戶數(shù)據(jù)進行相應(yīng)業(yè)務(wù)處理后構(gòu)造相應(yīng)HTML頁面打印輸出。但這種方法實現(xiàn)的太簡單,有的只是實現(xiàn)了一個類似HTML模板,將業(yè)務(wù)通過一個標(biāo)簽映射到業(yè)務(wù)代碼,特制較多,不適用通用WEB開發(fā)且基本只適用于CGI,性能低下。有鑒于此,本發(fā)明人針對現(xiàn)有技術(shù)的缺陷深入研究,并有本案產(chǎn)生。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于提供一種基于FastCGI和HTML模板的嵌入式WEBMVC開發(fā)框架,適用于小型嵌入式設(shè)備,小巧、高效、結(jié)構(gòu)優(yōu)良,框架體積小巧只占用100K左右flash空間。本發(fā)明采用以下技術(shù)方案解決上述技術(shù)問題
基于FastCGI和HTML模板的嵌入式WEB MVC開發(fā)框架,該框架運行向下依賴FastCGI進程管理器及網(wǎng)頁服務(wù)器,向上為WebApp Plugin業(yè)務(wù)邏輯處理模塊提供服務(wù);其特征在于該框架包括FastCGI子進程模塊、請求派發(fā)控制模塊、偵聽器管理模塊、業(yè)務(wù)插件管理模塊、Session會話控制模塊、編解碼模塊、數(shù)據(jù)接收模塊、數(shù)據(jù)響應(yīng)輸出模塊和HTML模板模塊;
所述FastCGI子進程模塊通過Socket或者PIPE與所述網(wǎng)頁服務(wù)器通信,用于阻塞等待所述FastCGI進程管理器的連接;當(dāng)接收到瀏覽器的請求時,所述網(wǎng)頁服務(wù)器與該模塊建立連接,將數(shù)據(jù)傳遞過來,該模塊完成處理后將標(biāo)準(zhǔn)輸出和錯誤信息從同一連接返回所述網(wǎng)頁服務(wù)器;當(dāng)該模塊關(guān)閉連接時,請求便告處理完成;該模塊接著等待并處理來自運行在網(wǎng)頁服務(wù)器中的FastCGI進程管理器的下一個連接;若是在CGI模式中進程在此便退出了,再將結(jié)果數(shù)據(jù)傳遞給網(wǎng)頁服務(wù)器并關(guān)閉連接,再阻塞等待下一次連接;
所述請求派發(fā)控制模塊負(fù)責(zé)請求到來時,使用多線程對請求進行派發(fā)控制處理;該模塊從FastCGI進程管理器獲得請求,首先調(diào)用所述數(shù)據(jù)接收模塊將頁面數(shù)據(jù)封裝,然后調(diào)用所述Session會話控制模塊刷新Session,后將請求交給所述偵聽器管理模塊;
所述偵聽器管理模塊負(fù)責(zé)根據(jù)配置文件動態(tài)加載、管理所述WebApp Plugin業(yè)務(wù)邏輯處理模塊的業(yè)務(wù)偵聽器插件;偵聽器容器從所述請求派發(fā)控制模塊獲得請求,根據(jù)配置將請求交給各偵聽器逐一處理,偵聽器處理完后根據(jù)返回結(jié)果決定是否繼續(xù)處理該請求,如不需要處理則返回所述數(shù)據(jù)響應(yīng)輸出模塊,如需處理則將請求交給所述業(yè)務(wù)插件管理模塊;
所述業(yè)務(wù)插件管理模塊負(fù)責(zé)根據(jù)配置文件動態(tài)加載業(yè)務(wù)插件,管理所述WebAppPlugin業(yè)務(wù)邏輯處理模塊的業(yè)務(wù)處理插件;該模塊接收到所述偵聽器管理模塊的請求后進行相應(yīng)的業(yè)務(wù)邏輯處理,此時用戶可視情況決定直接拼湊HTML將處理結(jié)果輸出到客戶端或者將結(jié)果數(shù)據(jù)封裝到一個鏈表,并設(shè)置所述HTML模板模塊通過該模板輸出HTML到客戶端;
所述Session會話控制模塊為用戶二次開發(fā)提供會話控制功能,該會話控制利用cookie實現(xiàn),在向瀏覽器返回數(shù)據(jù)時設(shè)置上一個Cookie攜帶上一串隨機生成的Sessionid,同時該Session id與Session容器中某個Session對象建立一對一關(guān)聯(lián);瀏覽器重 新發(fā)起請求時會帶上Cookie,所述網(wǎng)頁服務(wù)器獲取該Cookie找到Session id再查找到 Session對象,以此對象維護多個請求間的會話;當(dāng)瀏覽器一定時間沒有和網(wǎng)頁服務(wù)器請求時,Session自動超時銷毀;
所述編解碼模塊完成URL,HTML特殊字符編解碼;
所述數(shù)據(jù)接收模塊對請求提交的數(shù)據(jù)進行統(tǒng)一封裝,對應(yīng)用層屏蔽GET提交和POST提交的差異,用戶通過該模塊API獲取表單、cookie、文件上傳數(shù)據(jù);
所述數(shù)據(jù)響應(yīng)輸出模塊J^HTTP響應(yīng)信令進行封裝提供重定向、狀態(tài)碼、響應(yīng)內(nèi)容類型、字符編碼、HTML輸出功能支持;
所述HTML模板模塊通過使用服務(wù)端標(biāo)簽實現(xiàn)內(nèi)容動態(tài)替換,標(biāo)簽包括數(shù)據(jù)輸出標(biāo)簽、邏輯判斷標(biāo)簽、循環(huán)控制標(biāo)簽、文件包含標(biāo)簽四類。進一步地,所述偵聽器管理模塊動態(tài)加載業(yè)務(wù)偵聽器插件,具體包括框架定義偵聽器接口,偵聽器插件按照偵聽接口規(guī)范實現(xiàn)插件類,將插件創(chuàng)建函數(shù)名添加到插件配置文件,偵聽器模塊啟動時解析配置文件找到創(chuàng)建函數(shù)創(chuàng)建插件實例。進一步地,所述業(yè)務(wù)插件管理模塊動態(tài)加載業(yè)務(wù)插件,具體包括框架定義業(yè)務(wù)插件接口,業(yè)務(wù)插件按照插件接口規(guī)范實現(xiàn)插件類,將插件創(chuàng)建函數(shù)名加入到插件配置文件中,業(yè)務(wù)插件模塊啟動時解析配置文件找到創(chuàng)建函數(shù)創(chuàng)建插件實例。本發(fā)明的優(yōu)點在于本發(fā)明使用了 FastCGI技術(shù)解決了傳統(tǒng)CGI速度響應(yīng)慢的問題;使用了插件進行業(yè)務(wù)開發(fā)保證框架小巧靈活普遍使用;使用HTML模板技術(shù)實現(xiàn)頁面顯示和邏輯完全分離的MVC結(jié)構(gòu)(這里視圖層V即為HTML模板模塊,而邏輯層M為業(yè)務(wù)插件管理模塊,V與M通過控制層C進行交互,控制層由上面所述的請求派發(fā)控制模塊、Session會話控制模塊組成);使用二級壓縮充分減小頁面空間占用;對Session、HTTP header等常用操作API支持便于WEB業(yè)務(wù)開發(fā)。框架集中專注小型嵌入式設(shè)備上的應(yīng)用場景實現(xiàn)了一個性能優(yōu)越、開發(fā)快速、結(jié)構(gòu)優(yōu)良且體積小巧的WEB開發(fā)框架。


下面參照附圖結(jié)合實施例對本發(fā)明作進一步的描述。圖I是本發(fā)明中模塊關(guān)系示意圖。圖2是本發(fā)明中FastCGI子模塊關(guān)系示意圖。
圖3是本發(fā)明中FastCGI子進程模塊流程示意圖。圖4是本發(fā)明中請求派發(fā)控制模塊流程示意圖。圖5是本發(fā)明中框架定義偵聽器接口示意圖。圖6是本發(fā)明中框架定義業(yè)務(wù)插件接口示意圖。圖7是本發(fā)明中Session會話控制模塊的會話創(chuàng)建流程圖。圖8是本發(fā)明中Session會話控制模塊的Session清理流程圖。圖9是使用本發(fā)明的框架的請求處理流程示意圖。
具體實施方式
如圖I所示,框架系統(tǒng)上下文定義,網(wǎng)頁服務(wù)器是指Web前端服務(wù)器,此服務(wù)器負(fù)責(zé)完成連接管理,靜態(tài)資源文件處理等,本發(fā)明所屬網(wǎng)頁服務(wù)器需支持FastCGI,參考服務(wù)器如Lighttpd, Apache等;FastCGI進程管理器是指實現(xiàn)了 FastCGI規(guī)范、能完成CGI解析器進程管理功能的中間件;FCGI Server是本發(fā)明所述框架部分,框架運行需向下依賴FastCGI進程管理器及網(wǎng)頁服務(wù)器,向上為WebApp Plugin業(yè)務(wù)模塊提供服務(wù);WebAppPlugin是本發(fā)明所述用戶基于框架做二次開發(fā)實現(xiàn)的業(yè)務(wù)邏輯處理模塊,該模塊需實現(xiàn)框架接口,以插件的形式存在獨立編譯成動態(tài)庫,通過配置文件指定插件參數(shù)能被框架自動加載運行。其中包含業(yè)務(wù)偵聽器插件和業(yè)務(wù)處理插件兩類。偵聽器插件是一種能接受所有請求插件,框架會將所有請求都交給偵聽器插件逐一過濾,偵聽器插件處理后同意執(zhí)行的請求框架才會繼續(xù)將該請求派發(fā)到具體的業(yè)務(wù)插件處理,給用戶做全局請求控制處理能力;業(yè)務(wù)處理插件是完成某項具體任務(wù)的應(yīng)用程序,框架會根據(jù)配置文件派發(fā)業(yè)務(wù)處理請求,只有該業(yè)務(wù)插件關(guān)心的請求才會被派發(fā)到該插件處理。本發(fā)明如圖2所示,基于FastCGI和HTML模板的嵌入式WEB MVC開發(fā)框架,包括FastCGI子進程模塊、請求派發(fā)控制模塊、偵聽器管理模塊、業(yè)務(wù)插件管理模塊、Session會話控制模塊、編解碼模塊、數(shù)據(jù)接收模塊、數(shù)據(jù)響應(yīng)輸出模塊和HTML模板模塊。FastCGI子進程模塊通過Socket或者PIPE與所述網(wǎng)頁服務(wù)器通信,用于阻塞等待所述FastCGI進程管理器的連接;當(dāng)接收到瀏覽器的請求時,所述網(wǎng)頁服務(wù)器與該模塊建立連接,將數(shù)據(jù)傳遞過來,該模塊完成處理后將標(biāo)準(zhǔn)輸出和錯誤信息從同一連接返回所述網(wǎng)頁服務(wù)器;當(dāng)該模塊關(guān)閉連接時,請求便告處理完成;該模塊接著等待并處理來自運行在網(wǎng)頁服務(wù)器中的FastCGI進程管理器的下一個連接;若是在CGI模式中進程在此便退出了,再將結(jié)果數(shù)據(jù)傳遞給網(wǎng)頁服務(wù)器并關(guān)閉連接,再阻塞等待下一次連接。如圖3所
/Jn ο請求派發(fā)控制模塊負(fù)責(zé)請求到來時,使用多線程對請求進行派發(fā)控制處理。該模塊從FastCGI進程管理器獲得請求,首先調(diào)用所述數(shù)據(jù)接收模塊將頁面數(shù)據(jù)封裝,然后調(diào)用所述Session會話控制模塊刷新Session,后將請求交給所述偵聽器管理模塊。如圖4所示。偵聽器管理模塊負(fù)責(zé)根據(jù)配置文件動態(tài)加載、管理業(yè)務(wù)偵聽器插件。負(fù)責(zé)根據(jù)配置文件動態(tài)加載、管理所述WebApp Plugin業(yè)務(wù)邏輯處理模塊的業(yè)務(wù)偵聽器插件;偵聽器容器從所述請求派發(fā)控制模塊獲得請求,根據(jù)配置將請求交給各偵聽器逐一處理,偵聽器處理完后根據(jù)返回結(jié)果決定是否繼續(xù)處理該請求,如不需要處理則返回所述數(shù)據(jù)響應(yīng)輸出模塊,如需處理則將請求交給所述業(yè)務(wù)插件管理模塊。偵聽器管理模塊動態(tài)加載業(yè)務(wù)偵聽器插件,具體包括框架定義偵聽器接口,如圖5所示;偵聽器插件按照偵聽接口規(guī)范實現(xiàn)插件類,將插件創(chuàng)建函數(shù)名添加到插件配置文件,如
< xml version=〃L 0〃 encoding=〃utf_8〃?>
〈lib path=,,/lib/mod—servlet. so,,>
〈listener createfunction=,,createLoginListener,,/>
</lib>
參數(shù)說明
path 指定插件庫·
createfunction : 指定插件創(chuàng)建函數(shù)名
偵聽器模塊啟動時解析配置文件找到創(chuàng)建函數(shù)創(chuàng)建插件實例。業(yè)務(wù)插件管理模塊負(fù)責(zé)根據(jù)配置文件動態(tài)加載業(yè)務(wù)插件,管理業(yè)務(wù)插件。該模塊接收到所述偵聽器管理模塊的請求后進行相應(yīng)的業(yè)務(wù)邏輯處理,此時用戶可視情況決定直接拼湊HTML將處理結(jié)果輸出到客戶端或者將結(jié)果數(shù)據(jù)封裝到一個鏈表,并設(shè)置所述HTML模板模塊通過該模板輸出HTML到客戶端;業(yè)務(wù)插件管理模塊動態(tài)加載業(yè)務(wù)插件,具體包括框架定義業(yè)務(wù)插件接口,如圖6所示;業(yè)務(wù)插件按照插件接口規(guī)范實現(xiàn)插件類,將插件創(chuàng)建函數(shù)名加入到插件配置文件中,如
< xml version=〃L 0〃 encoding=〃utf_8〃?>
〈lib path=,,/lib/mod—servlet. so〃>
〈servlet id=〃login〃 createfunction=〃createLoginServlet〃 />
〈servlet id=〃status〃 createfunction=〃createStatusServlet〃 />
</lib>
參數(shù)說明
Path :指定插件庫
id 指定請求派發(fā)時映射標(biāo)識
createfunction : 指定插件創(chuàng)建函數(shù)名
業(yè)務(wù)插件模塊啟動時解析配置文件找到創(chuàng)建函數(shù)創(chuàng)建插件實例。Session會話控制模塊為用戶二次開發(fā)提供會話控制功能,該會話控制利用cookie實現(xiàn),在向瀏覽器返回數(shù)據(jù)時設(shè)置上一個Cookie攜帶上一串隨機生成的sessionid,同時該Session id與session容器中某個session對象建立一對一關(guān)聯(lián);瀏覽器重新發(fā)起請求時會帶上Cookie,服務(wù)器獲取該Cookie找到session id再查找到session對象,以此對象維護多個請求間的會話;實現(xiàn)流程如圖7所示。當(dāng)瀏覽器一定時間沒有來和網(wǎng)頁服務(wù)器請求時,Session自動超時銷毀;如圖8所示。編解碼模塊完成URL,HTML特殊字符編解碼。數(shù)據(jù)接收模塊對請求提交的數(shù)據(jù)進行統(tǒng)一封裝,對應(yīng)用層屏蔽GET提交和POST提交差異,用戶通過該模塊API獲取表單、cookie、文件上傳數(shù)據(jù);
數(shù)據(jù)響應(yīng)輸出模塊J^HTTP響應(yīng)信令進行封裝提供重定向、狀態(tài)碼、響應(yīng)內(nèi)容類型、字符編碼、HTML輸出功能支持。
HTML模板模塊通過使用服務(wù)端標(biāo)簽實現(xiàn)內(nèi)容動態(tài)替換,標(biāo)簽包括數(shù)據(jù)輸出標(biāo)簽、邏輯判斷標(biāo)簽、循環(huán)控制標(biāo)簽、文件包含標(biāo)簽四類。數(shù)據(jù)輸出標(biāo)簽,如
<csp:var name=〃varname〃 default=〃value〃/>
實現(xiàn)將數(shù)據(jù)varname動態(tài)填充到HTML頁面中該標(biāo)簽所處位置。邏輯判斷標(biāo)簽,如
<csp: if name=,,varname,,value=,,testvalue,,>
<hl>varname equal testvalue </hl>
<csp: elsif name =,,varname,,value=,,testvalue2,,>
<hI>varname equal testvalue2</hl>
<csp:else>
<hI>varname neither equal testvalue nor testvalue2</hl> </csp:if>
如果 varname 值與 testvalue 值相等將輸出〈hl>varname equal testvalue </hl> 如果 varname 值與 testvalue2 值相等將輸出〈hl>varname equal testvalue2 </
hl>
否則將輸出 <hl>varname neither equal testvalue nor testvalue2</hl>
循環(huán)控制標(biāo)簽,如
<csp: loop name=〃loopname〃>
<hl>here is loop tag output〈/hl>
</csp:loop>
將根據(jù)loopname中數(shù)組或鏈表個數(shù)循環(huán)輸出 <hl>here is loop tag output〈/hl>
文件包含標(biāo)簽,如
〈csp:include name=〃filename〃>
此標(biāo)簽將filename的頁面內(nèi)容拷貝到標(biāo)簽所在位置。使用本發(fā)明的框架,系統(tǒng)啟動步驟為
網(wǎng)頁服務(wù)器啟動時加載FastCGI進程管理器創(chuàng)建一個或多個CGI解析進程(FCGIServer)并等待來自網(wǎng)頁服務(wù)器的鏈接;
框架啟動時解析XML配置文件,發(fā)現(xiàn)有插件動態(tài)庫的配置則打開動態(tài)庫,再查找插件配置,發(fā)現(xiàn)插件配置后解析出插件入口函數(shù)通過入口函數(shù)創(chuàng)建插件實例;如果插件是配置成懶加載的,則在啟動時不創(chuàng)建插件實例,只有在有請求調(diào)用的時候才創(chuàng)建插件實例,盡量減少內(nèi)存空間占用。使用本發(fā)明的框架,請求處理步驟為
網(wǎng)頁服務(wù)器接收到瀏覽器請求,判斷該請求是需要FCGIServer處理的,則FastCGI進程管理器選擇并連接到一個FCGIServer。網(wǎng)頁服務(wù)器將CGI環(huán)境變量和標(biāo)準(zhǔn)輸入發(fā)送到FCGIServer ;
FCGIServer接收到請求后交給請求派發(fā)控制模塊;
請求派發(fā)控制模塊將頁面數(shù)據(jù)封裝、調(diào)用Sessions會話控制模塊刷新Session,后將請求交給偵聽器容器,偵聽器容器根據(jù)配置將請求交給各個偵聽器逐一處理;
偵聽器處理完后根據(jù)返回結(jié)果決定是否繼續(xù)處理該請求,如不需要處理則返回,如需處理則將請求按照配置規(guī)則在插件容器中查找匹配到相應(yīng)的處理插件,若找到對應(yīng)的插件則將請求交給插件,同時將頁面數(shù)據(jù)注入給插件;
插件接收到請求后進行相應(yīng)的業(yè)務(wù)邏輯處理,此時用戶可視情況決定直接拼湊HTML將處理結(jié)果輸出到客戶端或者將結(jié)果數(shù)據(jù)封裝到一個鏈表,并設(shè)置HTML模板通過模板輸出HTML到客戶端;
通常簡單是結(jié)果輸出可直接拼湊HTML ;若需要返回一個較多內(nèi)容和樣式的頁面則使用HTML模板能更好將數(shù)據(jù)和樣式分離;
插件處理完業(yè)務(wù)邏輯返回后框架接著處理,框架將插件設(shè)置的數(shù)據(jù)鏈表和HTML模板綁定將鏈表的數(shù)據(jù)輸出到HTML模板中。 具體可參閱圖9。使用本發(fā)明的框架,WEB發(fā)布步驟為
步驟一將HTML,HTML模板進行多余字符壓縮,此不影響瀏覽器解析但能減少字符
數(shù);
減小文件體積;
去除注釋;
去除HTML、HTML模板文件中“ ”、“\t\n”等格式控制字符;
將內(nèi)容為空的標(biāo)簽壓縮如〈a href=”#” ></a>壓縮為〈a href=”#”/> ;
將javascript中較長的函數(shù)名替換成短函數(shù)名;
步驟二 使用gzip做二級壓縮
使用GZIP將HTML模板頁面壓縮,讀取HTML模板時判斷如果文件后綴是.gz壓縮的,則由原來的直接讀取文件改為從壓縮包中解壓出文件數(shù)據(jù),以一定的時間消耗換取空間;引入GZIP壓縮后頁面空間占用減少達到60%以上。本發(fā)明使用了 FastCGI技術(shù)解決了傳統(tǒng)CGI速度響應(yīng)慢的問題;使用了插件進行業(yè)務(wù)開發(fā)保證框架小巧靈活普遍使用;使用HTML模板技術(shù)實現(xiàn)頁面顯示和邏輯完全分離的MVC結(jié)構(gòu);使用二級壓縮充分減小頁面空間占用;對Session、HTTP header等常用操作API支持便于WEB業(yè)務(wù)開發(fā)。框架集中專注小型嵌入式設(shè)備上的應(yīng)用場景實現(xiàn)了一個性能優(yōu)越、開發(fā)快速、結(jié)構(gòu)優(yōu)良且體積小巧的WEB開發(fā)框架。以上所述僅為本發(fā)明的較佳實施用例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.基于FastCGI和HTML模板的嵌入式WEBMVC開發(fā)框架,該框架運行向下依賴FastCGI進程管理器及網(wǎng)頁服務(wù)器,向上為WebApp Plugin業(yè)務(wù)邏輯處理模塊提供服務(wù);其特征在于該框架包括FastCGI子進程模塊、請求派發(fā)控制模塊、偵聽器管理模塊、業(yè)務(wù)插件管理模塊、Session會話控制模塊、編解碼模塊、數(shù)據(jù)接收模塊、數(shù)據(jù)響應(yīng)輸出模塊和HTML模板模塊; 所述FastCGI子進程模塊通過Socket或者PIPE與所述網(wǎng)頁服務(wù)器通信,用于阻塞等待所述FastCGI進程管理器的連接;當(dāng)接收到瀏覽器的請求時,所述網(wǎng)頁服務(wù)器與該模塊建立連接,將數(shù)據(jù)傳遞過來,該模塊完成處理后將標(biāo)準(zhǔn)輸出和錯誤信息從同一連接返回所述網(wǎng)頁服務(wù)器;當(dāng)該模塊關(guān)閉連接時,請求便告處理完成;該模塊接著等待并處理來自運行在網(wǎng)頁服務(wù)器中的FastCGI進程管理器的下一個連接;若是在CGI模式中進程在此便退出了,再將結(jié)果數(shù)據(jù)傳遞給網(wǎng)頁服務(wù)器并關(guān)閉連接,再阻塞等待下一次連接; 所述請求派發(fā)控制模塊負(fù)責(zé)請求到來時,使用多線程對請求進行派發(fā)控制處理;該模塊從FastCGI進程管理器獲得請求,首先調(diào)用所述數(shù)據(jù)接收模塊將頁面數(shù)據(jù)封裝,然后調(diào)用所述Session會話控制模塊刷新Session,后將請求交給所述偵聽器管理模塊; 所述偵聽器管理模塊負(fù)責(zé)根據(jù)配置文件動態(tài)加載、管理所述WebApp Plugin業(yè)務(wù)邏輯處理模塊的業(yè)務(wù)偵聽器插件;偵聽器容器從所述請求派發(fā)控制模塊獲得請求,根據(jù)配置將請求交給各偵聽器逐一處理,偵聽器處理完后根據(jù)返回結(jié)果決定是否繼續(xù)處理該請求,如不需要處理則返回所述數(shù)據(jù)響應(yīng)輸出模塊,如需處理則將請求交給所述業(yè)務(wù)插件管理模塊; 所述業(yè)務(wù)插件管理模塊負(fù)責(zé)根據(jù)配置文件動態(tài)加載業(yè)務(wù)插件,管理所述WebAppPlugin業(yè)務(wù)邏輯處理模塊的業(yè)務(wù)處理插件;該模塊接收到所述偵聽器管理模塊的請求后進行相應(yīng)的業(yè)務(wù)邏輯處理,此時用戶可視情況決定直接拼湊HTML將處理結(jié)果輸出到客戶端或者將結(jié)果數(shù)據(jù)封裝到一個鏈表,并設(shè)置所述HTML模板模塊通過該模板輸出HTML到客戶端; 所述Session會話控制模塊為用戶二次開發(fā)提供會話控制功能,該會話控制利用cookie實現(xiàn),在向瀏覽器返回數(shù)據(jù)時設(shè)置上一個Cookie攜帶上一串隨機生成的Sessionid,同時該Session id與Session容器中某個Session對象建立一對一關(guān)聯(lián);瀏覽器重新發(fā)起請求時會帶上Cookie,所述網(wǎng)頁服務(wù)器獲取該Cookie找到Session id再查找到Session對象,以此對象維護多個請求間的會話;當(dāng)瀏覽器一定時間沒有和網(wǎng)頁服務(wù)器請求時,Session自動超時銷毀; 所述編解碼模塊完成URL,HTML特殊字符編解碼; 所述數(shù)據(jù)接收模塊對請求提交的數(shù)據(jù)進行統(tǒng)一封裝,對應(yīng)用層屏蔽GET提交和POST提交的差異,用戶通過該模塊API獲取表單、cookie、文件上傳數(shù)據(jù); 所述數(shù)據(jù)響應(yīng)輸出模塊J^HTTP響應(yīng)信令進行封裝提供重定向、狀態(tài)碼、響應(yīng)內(nèi)容類型、字符編碼、HTML輸出功能支持; 所述HTML模板模塊通過使用服務(wù)端標(biāo)簽實現(xiàn)內(nèi)容動態(tài)替換,標(biāo)簽包括數(shù)據(jù)輸出標(biāo)簽、邏輯判斷標(biāo)簽、循環(huán)控制標(biāo)簽、文件包含標(biāo)簽四類。
2.如權(quán)利要求I所述的基于FastCGI和HTML模板的嵌入式WEBMVC開發(fā)框架,其特征在于所述偵聽器管理模塊動態(tài)加載業(yè)務(wù)偵聽器插件,具體包括框架定義偵聽器接口,偵聽器插件按照偵聽接口規(guī)范實現(xiàn)插件類,將插件創(chuàng)建函數(shù)名添加到插件配置文件,偵聽器模塊啟動時解析配置文件找到創(chuàng)建函數(shù)創(chuàng)建插件實例。
3.如權(quán)利要求I所述的基于FastCGI和HTML模板的嵌入式WEB MVC開發(fā)框架,其特征在于所述業(yè)務(wù)插件管理模塊動態(tài)加載業(yè)務(wù)插件,具體包括框架定義業(yè)務(wù)插件接口,業(yè)務(wù)插件按照插件接口規(guī)范實現(xiàn)插件類,將插件創(chuàng)建函數(shù)名加入到插件配置文件中,業(yè)務(wù)插件模塊啟動時解析配置文件找到創(chuàng)建函數(shù)創(chuàng)建插件實例。
全文摘要
基于FastCGI和HTML模板的嵌入式WEBMVC開發(fā)框架,該框架運行向下依賴FastCGI進程管理器及網(wǎng)頁服務(wù)器,向上為WebAppPlugin業(yè)務(wù)邏輯處理模塊提供服務(wù);該框架包括FastCGI子進程模塊、請求派發(fā)控制模塊、偵聽器管理模塊、業(yè)務(wù)插件管理模塊、Session會話控制模塊、編解碼模塊、數(shù)據(jù)接收模塊、數(shù)據(jù)響應(yīng)輸出模塊和HTML模板模塊。本發(fā)明提供了一種基于FastCGI和HTML模板的嵌入式WEBMVC開發(fā)框架,適用于小型嵌入式設(shè)備,小巧、高效、結(jié)構(gòu)優(yōu)良,框架體積小巧只占用100K左右flash空間。
文檔編號G06F9/44GK102902537SQ20121035059
公開日2013年1月30日 申請日期2012年9月19日 優(yōu)先權(quán)日2012年9月19日
發(fā)明者黃慶文 申請人:廈門億聯(lián)網(wǎng)絡(luò)技術(shù)股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1