



免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看
下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
基于CGI/Perl的WebMIS的設(shè)計(jì)與實(shí)現(xiàn)朱立谷 劉玲 趙衛(wèi)國(guó) 宋小波 梁哲煒 (湘潭大學(xué)信息工程學(xué)院,湖南省湘潭市411105)摘要:本文設(shè)計(jì)和實(shí)現(xiàn)了一個(gè)基于Web三層結(jié)構(gòu)的房屋租賃信息系統(tǒng)。采用了Linux作為操作系統(tǒng),Apache和MySQL作為Web服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器,采用CGI/Perl編程技術(shù)實(shí)現(xiàn)了動(dòng)態(tài)網(wǎng)頁(yè)和數(shù)據(jù)訪問(wèn)。該方法適合于小型企業(yè)建立經(jīng)濟(jì)實(shí)用的WebMIS系統(tǒng)。關(guān)鍵詞:WebMIS,CGI/Perl,Apache,MySQL,LinuxAbstract: In this paper A WebMIS based on the three-layer architecture is designed and realized. Linux is used as operating system, Apache as Web Server, and MySQL as database Server. Dynamic Web Page and database access are realized by CGI/Perl programming. This solution is useful for small enterprises because it is very economic.KeyWords: WebMIS,CGI/Perl,Apache,MySQL,Linux中圖分類(lèi)號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A1 引言 隨著Internet的普及和Internet/Intranet技術(shù)的不斷發(fā)展, 使得以Web技術(shù)為核心的瀏覽器/Web服務(wù)器/數(shù)據(jù)庫(kù)服務(wù)器三層體系結(jié)構(gòu)的應(yīng)用成為企業(yè)管理信息系統(tǒng)開(kāi)發(fā)技術(shù)的主流1。Intranet終端系統(tǒng)已經(jīng)統(tǒng)一為Web瀏覽程序的單一平臺(tái)。Intranet系統(tǒng)里的文件即應(yīng)用程序處理結(jié)果,都能通過(guò)Web瀏覽程序顯示出來(lái)。用戶通過(guò)運(yùn)行Web瀏覽程序,各種處理任務(wù)都可以通過(guò)Web瀏覽程序調(diào)用系統(tǒng)資源來(lái)完成。 瀏覽器/服務(wù)器模型與傳統(tǒng)的客戶機(jī)/服務(wù)器模式相比有以下優(yōu)勢(shì): 瀏覽器/服務(wù)器模式大大簡(jiǎn)化了客戶端??蛻舳顺蔀閺C客戶機(jī),開(kāi)發(fā)、維護(hù)等幾乎所有工作也都集中在服務(wù)器端。對(duì)網(wǎng)絡(luò)應(yīng)用進(jìn)行升級(jí)時(shí),只需要更新服務(wù)端,不必要更新客戶端,減輕了系統(tǒng)維護(hù)與升級(jí)的成本和工作量。 事物層可在跨平臺(tái)的客戶端共享,不同邏輯組件的分離意味著圖形設(shè)計(jì)人員,事物邏輯開(kāi)發(fā)人員和數(shù)據(jù)庫(kù)分析人員可以相對(duì)獨(dú)立的設(shè)計(jì)各自的部分。統(tǒng)一的,抽象的用戶界面可使用戶更有效的從同一數(shù)據(jù)源中存取數(shù)據(jù)。瀏覽器/服務(wù)器結(jié)構(gòu)可更有效的在Internet/Intranet上運(yùn)行。極大的發(fā)揮對(duì)異構(gòu)系統(tǒng)及異種數(shù)據(jù)庫(kù)的支持能力,及幾乎是無(wú)限制的系統(tǒng)擴(kuò)展能力。2.系統(tǒng)的體系結(jié)構(gòu)與開(kāi)發(fā)環(huán)境2.1 三層結(jié)構(gòu)技術(shù) 本系統(tǒng)采用三層結(jié)構(gòu)實(shí)現(xiàn):將客戶端與用戶界面無(wú)關(guān)的功能移進(jìn)了中間層(第二層)與表示功能層和數(shù)據(jù)層構(gòu)成三層結(jié)構(gòu)。Web服務(wù)器作為表示層,大量的業(yè)務(wù)處理程序放在應(yīng)用服務(wù)器上作為功能層,而將數(shù)據(jù)庫(kù)放在數(shù)據(jù)庫(kù)服務(wù)器上作為數(shù)據(jù)層。 瀏覽器/服務(wù)器三層結(jié)構(gòu)分布十分靈活,功能層和數(shù)據(jù)層中的服務(wù)器可以有一個(gè)到多個(gè)。大規(guī)模管理信息系統(tǒng)中的數(shù)據(jù)庫(kù)和應(yīng)用程序組件可以被分布在不同的服務(wù)器上運(yùn)行。這些服務(wù)器可以是本地的,也可以是遠(yuǎn)程的,使系統(tǒng)更合理,更靈活,更具擴(kuò)展性。系統(tǒng)具有徹底的開(kāi)放性,不限制將要訪問(wèn)系統(tǒng)的用戶數(shù)。我們開(kāi)發(fā)的是一個(gè)小型信息系統(tǒng),因此所有的服務(wù)器均集中在一臺(tái)主機(jī)上。2.2 系統(tǒng)體系結(jié)構(gòu)本系統(tǒng)的體系結(jié)構(gòu)如圖1所示。采用Red Hat Linux 7.2作為系統(tǒng)平臺(tái)。Linux不但可以完全免費(fèi)得到,具有比Windows更大的穩(wěn)定性和更強(qiáng)的功能。運(yùn)行在Linux系統(tǒng)下的Web服務(wù)器Apache穩(wěn)定性高、速度快,而且功能強(qiáng)大,許多大型的門(mén)戶網(wǎng)站和綜合網(wǎng)站都用它作為Web服務(wù)器軟件。Apache再加上一個(gè)完全基于網(wǎng)絡(luò)的操作系統(tǒng)Linux,是建立一個(gè)Web站點(diǎn)的首選2。MySQL是一種速度快可靠性高并且易于使用的數(shù)據(jù)庫(kù)產(chǎn)品,可以適應(yīng)幾百萬(wàn)條記錄的數(shù)據(jù)表。MySQL容易與Apache集成。Apache帶有專(zhuān)門(mén)的Perl支持模塊,為建立基于數(shù)據(jù)庫(kù)的動(dòng)態(tài)網(wǎng)站提供了強(qiáng)大工具。Apache服務(wù)器MySQL服務(wù)器瀏 覽 器G程序圖1 基于CGI/PERL的WEBMIS的體系結(jié)構(gòu)執(zhí)行順序:請(qǐng)求訪問(wèn)表單頁(yè)面;返回表單頁(yè)面;用戶提交表單內(nèi)容;表單傳送到CGI程序處理; 調(diào)用SQL語(yǔ)句;返回?cái)?shù)據(jù);返回處理結(jié)果;返回顯示處理結(jié)果頁(yè)面。12483756CGI/Perl采用CGI/Perl來(lái)創(chuàng)建動(dòng)態(tài)的Web頁(yè)面。CGI程序的主要任務(wù)是處理用戶提交的表單數(shù)據(jù)內(nèi)容,并產(chǎn)生表單網(wǎng)頁(yè)的數(shù)據(jù)。Perl是最適合處理文本格式數(shù)據(jù)的語(yǔ)言,成為CGI程序的首選語(yǔ)言。CGI程序?qū)⒂脩粼L問(wèn)數(shù)據(jù)庫(kù)請(qǐng)求轉(zhuǎn)換成查詢數(shù)據(jù)庫(kù)的語(yǔ)句,并將查詢的結(jié)果以HTML的形式返回給客戶。用戶輸入的數(shù)據(jù)是文本內(nèi)容,查詢數(shù)據(jù)庫(kù)SQL語(yǔ)句是文本內(nèi)容,數(shù)據(jù)庫(kù)返回的結(jié)果也是文本內(nèi)容,所以,Perl最適合編寫(xiě)CGI程序的語(yǔ)言。2.3 CGI的工作原理CGI規(guī)范主要定義CGI程序與Web服務(wù)器之間的通信方式,CGI程序可以通過(guò)以下4種方式與WEB服務(wù)器進(jìn)行通信3。環(huán)境變量(Environmental Variable):WEB服務(wù)器使用環(huán)境變量與CGI程序通信。在CGI規(guī)范中定義了這些起通信作用的環(huán)境變量。當(dāng)WEBServer調(diào)用CGI程序時(shí),所有這些環(huán)境變量被設(shè)置。命令行參數(shù):WEB服務(wù)器調(diào)用CGI程序時(shí)指定命令行參數(shù)。標(biāo)準(zhǔn)輸入:WEB服務(wù)器將HTTP請(qǐng)求報(bào)文體中的信息送至CGI程序的標(biāo)準(zhǔn)輸入,輸入內(nèi)容的長(zhǎng)度由環(huán)境變量CONTENT_LENGTH決定。標(biāo)準(zhǔn)輸出:CGI程序?qū)⒆约旱妮敵鏊椭翗?biāo)準(zhǔn)輸出,這里的標(biāo)準(zhǔn)輸出實(shí)際上是一個(gè)完整的客戶端瀏覽器可以識(shí)別的HTML文檔。我們采用的是將CGI程序包含在HTML頁(yè)面之內(nèi)執(zhí)行的方式,這種執(zhí)行方式被稱(chēng)為服務(wù)器端包含(Server-Side Include),即SSI。SSI HTML文檔的后綴是“. shtml”。當(dāng)用戶訪問(wèn)這種文檔時(shí),Web服務(wù)器創(chuàng)建子進(jìn)程來(lái)執(zhí)行這些CGI程序,并將CGI程序執(zhí)行的結(jié)果輸出到文檔中,返回給用戶。2.4 CGI/Perl可以編寫(xiě)CGI程序的語(yǔ)言有很多,如:C,VB等。我們選用Perl語(yǔ)言,因?yàn)镻erl語(yǔ)言具有適應(yīng)性強(qiáng),使用簡(jiǎn)單的特點(diǎn),已成為CGI編程事實(shí)上的標(biāo)準(zhǔn)語(yǔ)言。用Perl編寫(xiě)的CGI程序執(zhí)行方法如下:用戶通過(guò)瀏覽器向Web服務(wù)器發(fā)出HTTP請(qǐng)求,如果請(qǐng)求是一個(gè)CGI程序(通常以CGI或pl為文件名后綴),則服務(wù)器啟動(dòng)本機(jī)上的Perl解釋器,載入該CGI程序運(yùn)行。如果HTTP請(qǐng)求方法是POST,CGI程序從標(biāo)準(zhǔn)輸入讀取瀏覽器發(fā)送的數(shù)據(jù)內(nèi)容,如果HTTP請(qǐng)求方式是GET,CGI程序從環(huán)境變量QUERY_STRING中獲取瀏覽器發(fā)送的數(shù)據(jù)內(nèi)容。最后將數(shù)據(jù)發(fā)送到客戶的瀏覽器。因?yàn)槊钚袇?shù)和環(huán)境變量的大小都有限制因素,而通過(guò)標(biāo)準(zhǔn)輸入傳送的數(shù)據(jù)則不然,所以表格應(yīng)盡可能的使用POST請(qǐng)求類(lèi)型。2.5 數(shù)據(jù)庫(kù)的連接和斷開(kāi)Perl提供了一個(gè)用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行編程的接口,這個(gè)接口叫DBI4。在訪問(wèn)數(shù)據(jù)庫(kù)之前Perl程序必須與數(shù)據(jù)庫(kù)建立連接,一次數(shù)據(jù)庫(kù)連接被稱(chēng)為一次數(shù)據(jù)庫(kù)會(huì)話(session)。DBI使用一個(gè)數(shù)據(jù)庫(kù)句柄來(lái)標(biāo)識(shí)每個(gè)數(shù)據(jù)庫(kù)會(huì)話。所有的DBI函數(shù)均使用這個(gè)句柄操作數(shù)據(jù)庫(kù)。DBI函數(shù)connect與數(shù)據(jù)庫(kù)建立連接,并返回標(biāo)識(shí)這個(gè)連接的數(shù)據(jù)庫(kù)句柄。函數(shù)disconnect用于斷開(kāi)與數(shù)據(jù)庫(kù)的連接,并且釋放數(shù)據(jù)庫(kù)句柄。use DBI;#連接到MySQL中的mk數(shù)據(jù)庫(kù)。$dbh=DBI-connect(DBI:MySQL:mk,root,197911) | die“cannot connect to database:”.DBI-errstr;$rc=$dbh-disconnect();2.6 SQL語(yǔ)句DBI使用SQL語(yǔ)句完成數(shù)據(jù)庫(kù)的操作。DBI將一次操作分成兩個(gè)階段:準(zhǔn)備SQL語(yǔ)句和執(zhí)行SQL語(yǔ)句。方法prepare用來(lái)準(zhǔn)備一條語(yǔ)句,這個(gè)方法返回一個(gè)語(yǔ)句句柄;方法execute執(zhí)行已被準(zhǔn)備的語(yǔ)句,完成實(shí)際的操作。一個(gè)語(yǔ)句句柄可以是以下三種狀態(tài)之一:就緒狀態(tài)(Prepared),調(diào)用了prepare方法成功之后;打開(kāi)狀態(tài)(Open),執(zhí)行execute操作成功之后;非法狀態(tài)(Invalid),調(diào)用disconnect方法成功之后,或prepare調(diào)用失敗。以下是SQL程序片段:#準(zhǔn)備向house表中插入一組記錄$sth=$dbh-prepare(qinsert into house values (?,?,?,?,?,?,?,?,?) | die Cant prepare statement :$sth-errstrn;#執(zhí)行插入語(yǔ)句$sth-execute($h_name,$h_id,$h_area,$h_struct,$h_use,$h_app,$h_money,$h_status,$h_memo) ;準(zhǔn)備語(yǔ)句包含代替字符“?”,在執(zhí)行語(yǔ)句時(shí),必須用實(shí)際字符替代所有這些替代字符這些實(shí)際值在參數(shù)中傳遞。3. 房屋租賃信息系統(tǒng)的功能與實(shí)現(xiàn)圖2 房屋租賃系統(tǒng)結(jié)構(gòu)和功能圖界 面房屋修改界 面租戶登記界 面房屋登記界 面租戶查詢界 面房屋查詢界 面空房查詢界 面租戶修改界 面成員注冊(cè)界 面密碼修改界 面成員查詢界 面房屋退租界 面成員管理界面(member.shtml)租戶管理界面(lessee.shtml)管理員管理界面(manager.shtml)圖2 房屋租賃信息系統(tǒng)結(jié)構(gòu)和功能圖界 面登陸界面(Index.html,身份認(rèn)證test.pl) 房屋租賃信息系統(tǒng)由三大模塊組成: 管理員系統(tǒng)管理模塊:包括房產(chǎn)資料登記和修改,租戶資料登記以及租賃信息的統(tǒng)計(jì)。租戶系統(tǒng)管理模塊:包括租戶資料的修改,退租管理以及房屋和交費(fèi)信息的查詢。 成員系統(tǒng)管理模塊:成員資料的登記以及房屋信息資料的查詢。如圖2所示。在進(jìn)入房屋租賃系統(tǒng)的時(shí)候,必須進(jìn)行身份認(rèn)證。有三種身份,各種身份對(duì)應(yīng)數(shù)據(jù)庫(kù)中的一個(gè)表。由CGI程序調(diào)取數(shù)據(jù)庫(kù)中的用戶信息,通過(guò)身份認(rèn)證后分別進(jìn)入系統(tǒng)不同的界面,否則返回登錄界面。登錄界面的程序Index.html的主要部分如下:用戶名:密碼:用戶填寫(xiě)數(shù)據(jù)后按下按鈕提交數(shù)據(jù)到WEB服務(wù)器,即名為WebMIS的主機(jī)。由action指定的動(dòng)作是執(zhí)行程序test.pl。關(guān)鍵是將用戶填寫(xiě)的數(shù)據(jù)傳遞給該程序,Post方式?jīng)Q定用標(biāo)準(zhǔn)輸入傳遞數(shù)據(jù)。將數(shù)據(jù)插入到MySQL數(shù)據(jù)庫(kù)里具體的表中要用到DBI。DBI定義了三種與數(shù)據(jù)庫(kù)進(jìn)行交互的句柄:驅(qū)動(dòng)器程序句柄 $drh, 數(shù)據(jù)庫(kù)句柄 $dbh, 語(yǔ)句句柄 $sth。$drh沒(méi)有實(shí)際的用處。Perl與數(shù)據(jù)庫(kù)進(jìn)行信息交互的程序如下:#! /usr/bin/Perl;use CGI qw/:standard/;use DBI$q=new CGI;#變量賦值$name=param(name);$pass=param(passwd);#連接MySQL中的某一個(gè)數(shù)據(jù)庫(kù)$dbh=DBI-connect(dbi:MySQL:mk,root,197911) |dieCant connect to databse discuss : DBI-errstrn;$sth=$dbh-prepare(select * from manager where name=? And password=?)|die “cannot:dbi-errstrn”;$sth-execute($name,$pass)|die “dbh-errstrn”;if ($sth-fetchrow_array)print $q-redirect(“./manager.shtml”);else print $q-redirect(“./index.pl”);其中param是一個(gè)獲取參數(shù)函數(shù),它將由標(biāo)準(zhǔn)輸入得到的數(shù)據(jù)按html表格中輸入數(shù)據(jù)對(duì)應(yīng)的名字拆分,分別賦值給自定義變量($name,$pass)。4結(jié)論 采用CGI/Perl編程技術(shù)實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁(yè),在Linux環(huán)境下實(shí)現(xiàn)了用于房屋租賃的三層結(jié)構(gòu)WebMIS。CGI/Perl 編程簡(jiǎn)明扼要,易于實(shí)現(xiàn)。本系統(tǒng)所用的系統(tǒng)軟件均可免費(fèi)獲得,這為小型企業(yè)建立基于Web的信息系統(tǒng)提供了一個(gè)非常經(jīng)濟(jì)和實(shí)用
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年人教版小升初數(shù)學(xué)專(zhuān)項(xiàng)訓(xùn)練-雞兔同籠(含答案)
- 精彩視頻分享廣告設(shè)計(jì)師試題及答案
- 2024紡織品設(shè)計(jì)師證書(shū)考試重要試題及答案
- 生理學(xué)解剖試題及答案
- 冰雕設(shè)計(jì)考試題及答案
- 保密在線考試題庫(kù)及答案
- .net專(zhuān)業(yè)面試題目及答案
- 市場(chǎng)競(jìng)爭(zhēng)下的紡織研發(fā)戰(zhàn)略試題及答案
- 開(kāi)發(fā)潛能的廣告設(shè)計(jì)師考試試題及答案
- 新聞夜航考試題及答案
- 韋氏測(cè)試題及答案
- 歷年貴州特崗試題及答案
- 2025怎樣正確理解全過(guò)程人民民主的歷史邏輯、實(shí)踐邏輯與理論邏輯?(答案3份)
- 國(guó)家開(kāi)放大學(xué)《工具書(shū)與文獻(xiàn)檢索》形考任務(wù)1-4參考答案及作業(yè)1
- GB/T 45501-2025工業(yè)機(jī)器人三維視覺(jué)引導(dǎo)系統(tǒng)通用技術(shù)要求
- 淺談南京市區(qū)地形地貌和工程地質(zhì)層構(gòu)成
- 北師大版四年級(jí)數(shù)學(xué)下冊(cè)第五單元 認(rèn)識(shí)方程標(biāo)準(zhǔn)檢測(cè)卷(含答案)
- 人工智能在環(huán)保領(lǐng)域的應(yīng)用及挑戰(zhàn)
- 2025年陜西省初中學(xué)業(yè)水平考試英語(yǔ) 例析與指導(dǎo) 試卷示例題答案及聽(tīng)力材料
- 泉州地理會(huì)考題目及答案
- 2025年工會(huì)知識(shí)競(jìng)賽題庫(kù)200題及答案(完整版)
評(píng)論
0/150
提交評(píng)論