基于CGIPerl的WebMIS的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
基于CGIPerl的WebMIS的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
基于CGIPerl的WebMIS的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
基于CGIPerl的WebMIS的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
基于CGIPerl的WebMIS的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩6頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 基于CGI/Perl的WebMIS的設(shè)計(jì)與實(shí)現(xiàn)朱立谷 劉玲 趙衛(wèi)國(guó) 宋小波 梁哲煒 (湘潭大學(xué)信息工程學(xué)院,湖南省湘潭市)摘要:本文設(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ù)訪問。該方法適合于小型企業(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 i

2、s 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,

3、Linux中圖分類號(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)開發(fā)技術(shù)的主流1。Intranet終端系統(tǒng)已經(jīng)統(tǒng)一為Web瀏覽程序的單一平臺(tái)。Intranet系統(tǒng)里的文件即應(yīng)用程序處理結(jié)果,都能通過Web瀏覽程序顯示出來。用戶通過運(yùn)行Web瀏覽程序,各種處理任務(wù)都可以通過Web瀏覽程序調(diào)用系統(tǒng)資源來完成。 瀏覽器/服務(wù)器模型與傳統(tǒng)的客戶機(jī)/服務(wù)器模式相比有以下優(yōu)勢(shì): 瀏覽器/服務(wù)器模式大大簡(jiǎn)化了客戶端??蛻舳顺蔀閺C客戶機(jī),開發(fā)

4、、維護(hù)等幾乎所有工作也都集中在服務(wù)器端。對(duì)網(wǎng)絡(luò)應(yīng)用進(jìn)行升級(jí)時(shí),只需要更新服務(wù)端,不必要更新客戶端,減輕了系統(tǒng)維護(hù)與升級(jí)的成本和工作量。 事物層可在跨平臺(tái)的客戶端共享,不同邏輯組件的分離意味著圖形設(shè)計(jì)人員,事物邏輯開發(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ù)的支持能力,及幾乎是無限制的系統(tǒng)擴(kuò)展能力。2.系統(tǒng)的體系結(jié)構(gòu)與開發(fā)環(huán)境2.1 三層結(jié)構(gòu)技術(shù) 本系統(tǒng)采用三層結(jié)構(gòu)實(shí)現(xiàn):將客戶端與用戶界面無關(guān)的功能移進(jìn)了中間層(第二層)與

5、表示功能層和數(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)具有徹底的開放性,不限制將要訪問系統(tǒng)的用戶數(shù)。我們開發(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不但

6、可以完全免費(fèi)得到,具有比Windows更大的穩(wěn)定性和更強(qiáng)的功能。運(yùn)行在Linux系統(tǒng)下的Web服務(wù)器Apache穩(wěn)定性高、速度快,而且功能強(qiáng)大,許多大型的門戶網(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帶有專門的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)

7、求訪問表單頁(yè)面;返回表單頁(yè)面;用戶提交表單內(nèi)容;表單傳送到CGI程序處理; 調(diào)用SQL語(yǔ)句;返回?cái)?shù)據(jù);返回處理結(jié)果;返回顯示處理結(jié)果頁(yè)面。12483756CGI/Perl采用CGI/Perl來創(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問數(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最適合編寫CGI程序的語(yǔ)言。2.3 CGI的工作原

8、理CGI規(guī)范主要定義CGI程序與Web服務(wù)器之間的通信方式,CGI程序可以通過以下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è)完整的客戶端瀏

9、覽器可以識(shí)別的HTML文檔。我們采用的是將CGI程序包含在HTML頁(yè)面之內(nèi)執(zhí)行的方式,這種執(zhí)行方式被稱為服務(wù)器端包含(Server-Side Include),即SSI。SSI HTML文檔的后綴是“. shtml”。當(dāng)用戶訪問這種文檔時(shí),Web服務(wù)器創(chuàng)建子進(jìn)程來執(zhí)行這些CGI程序,并將CGI程序執(zhí)行的結(jié)果輸出到文檔中,返回給用戶。2.4 CGI/Perl可以編寫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編寫的CGI程序執(zhí)行方法如下:用戶通過瀏覽器向Web服務(wù)器發(fā)出HTTP請(qǐng)求,如果請(qǐng)

10、求是一個(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)境變量的大小都有限制因素,而通過標(biāo)準(zhǔn)輸入傳送的數(shù)據(jù)則不然,所以表格應(yīng)盡可能的使用POST請(qǐng)求類型。2.5 數(shù)據(jù)庫(kù)的連接和斷開Perl提供了一個(gè)用于對(duì)數(shù)據(jù)庫(kù)進(jìn)行編程的接口,這個(gè)接口叫DBI4。在訪問數(shù)據(jù)庫(kù)之前Perl程序必須與數(shù)據(jù)庫(kù)建立連接,一次數(shù)據(jù)庫(kù)連接被稱為

11、一次數(shù)據(jù)庫(kù)會(huì)話(session)。DBI使用一個(gè)數(shù)據(jù)庫(kù)句柄來標(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用于斷開與數(shù)據(jù)庫(kù)的連接,并且釋放數(shù)據(jù)庫(kù)句柄。use DBI;#連接到MySQL中的mk數(shù)據(jù)庫(kù)。$dbh=DBI-connect(DBI:MySQL:mk,root,) | die“cannot connect to database:”.DBI-errstr;$rc=$dbh-disconnect();2.6 SQL語(yǔ)句DBI使用SQL語(yǔ)句完成數(shù)據(jù)庫(kù)的操作。DBI將一次操作分成

12、兩個(gè)階段:準(zhǔn)備SQL語(yǔ)句和執(zhí)行SQL語(yǔ)句。方法prepare用來準(zhǔn)備一條語(yǔ)句,這個(gè)方法返回一個(gè)語(yǔ)句句柄;方法execute執(zhí)行已被準(zhǔn)備的語(yǔ)句,完成實(shí)際的操作。一個(gè)語(yǔ)句句柄可以是以下三種狀態(tài)之一:就緒狀態(tài)(Prepared),調(diào)用了prepare方法成功之后;打開狀態(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

13、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è)界 面密碼修改界 面成員查詢界 面房屋退租界 面成員管理界面

14、(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ù)中的用戶信息,通過身份認(rèn)證后分

15、別進(jìn)入系統(tǒng)不同的界面,否則返回登錄界面。登錄界面的程序Index.html的主要部分如下:用戶名:密碼:用戶填寫數(shù)據(jù)后按下按鈕提交數(shù)據(jù)到WEB服務(wù)器,即名為WebMIS的主機(jī)。由action指定的動(dòng)作是執(zhí)行程序test.pl。關(guān)鍵是將用戶填寫的數(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沒有實(shí)際的用處。Perl與數(shù)據(jù)庫(kù)進(jìn)行信息交互的程序如下:#! /usr/bin/Perl;use CGI qw/:standar

16、d/;use DBI$q=new CGI;#變量賦值$name=param(name);$pass=param(passwd);#連接MySQL中的某一個(gè)數(shù)據(jù)庫(kù)$dbh=DBI-connect(dbi:MySQL:mk,root,) |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. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論