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

下載本文檔

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

文檔簡介

1、 基于CGI/Perl的WebMIS的設(shè)計(jì)與實(shí)現(xiàn)朱立谷 劉玲 趙衛(wèi)國 宋小波 梁哲煒 (湘潭大學(xué)信息工程學(xué)院,湖南省湘潭市)摘要:本文設(shè)計(jì)和實(shí)現(xiàn)了一個基于Web三層結(jié)構(gòu)的房屋租賃信息系統(tǒng)。采用了Linux作為操作系統(tǒng),Apache和MySQL作為Web服務(wù)器和數(shù)據(jù)庫服務(wù)器,采用CGI/Perl編程技術(shù)實(shí)現(xiàn)了動態(tài)網(wǎng)頁和數(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中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A1 引言 隨著Internet的普及和Internet/Intranet技術(shù)的不斷發(fā)展, 使得以Web技術(shù)為核心的瀏覽器/Web服務(wù)器/數(shù)據(jù)庫服務(wù)器三層體系結(jié)構(gòu)的應(yīng)用成為企業(yè)管理信息系統(tǒng)開發(fā)技術(shù)的主流1。Intranet終端系統(tǒng)已經(jīng)統(tǒng)一為Web瀏覽程序的單一平臺。Intranet系統(tǒng)里的文件即應(yīng)用程序處理結(jié)果,都能通過Web瀏覽程序顯示出來。用戶通過運(yùn)行Web瀏覽程序,各種處理任務(wù)都可以通過Web瀏覽程序調(diào)用系統(tǒng)資源來完成。 瀏覽器/服務(wù)器模型與傳統(tǒng)的客戶機(jī)/服務(wù)器模式相比有以下優(yōu)勢: 瀏覽器/服務(wù)器模式大大簡化了客戶端??蛻舳顺蔀閺C客戶機(jī),開發(fā)

4、、維護(hù)等幾乎所有工作也都集中在服務(wù)器端。對網(wǎng)絡(luò)應(yīng)用進(jìn)行升級時,只需要更新服務(wù)端,不必要更新客戶端,減輕了系統(tǒng)維護(hù)與升級的成本和工作量。 事物層可在跨平臺的客戶端共享,不同邏輯組件的分離意味著圖形設(shè)計(jì)人員,事物邏輯開發(fā)人員和數(shù)據(jù)庫分析人員可以相對獨(dú)立的設(shè)計(jì)各自的部分。統(tǒng)一的,抽象的用戶界面可使用戶更有效的從同一數(shù)據(jù)源中存取數(shù)據(jù)。瀏覽器/服務(wù)器結(jié)構(gòu)可更有效的在Internet/Intranet上運(yùn)行。極大的發(fā)揮對異構(gòu)系統(tǒng)及異種數(shù)據(jù)庫的支持能力,及幾乎是無限制的系統(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ù)庫放在數(shù)據(jù)庫服務(wù)器上作為數(shù)據(jù)層。 瀏覽器/服務(wù)器三層結(jié)構(gòu)分布十分靈活,功能層和數(shù)據(jù)層中的服務(wù)器可以有一個到多個。大規(guī)模管理信息系統(tǒng)中的數(shù)據(jù)庫和應(yīng)用程序組件可以被分布在不同的服務(wù)器上運(yùn)行。這些服務(wù)器可以是本地的,也可以是遠(yuǎn)程的,使系統(tǒng)更合理,更靈活,更具擴(kuò)展性。系統(tǒng)具有徹底的開放性,不限制將要訪問系統(tǒng)的用戶數(shù)。我們開發(fā)的是一個小型信息系統(tǒng),因此所有的服務(wù)器均集中在一臺主機(jī)上。2.2 系統(tǒng)體系結(jié)構(gòu)本系統(tǒng)的體系結(jié)構(gòu)如圖1所示。采用Red Hat Linux 7.2作為系統(tǒng)平臺。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再加上一個完全基于網(wǎng)絡(luò)的操作系統(tǒng)Linux,是建立一個Web站點(diǎn)的首選2。MySQL是一種速度快可靠性高并且易于使用的數(shù)據(jù)庫產(chǎn)品,可以適應(yīng)幾百萬條記錄的數(shù)據(jù)表。MySQL容易與Apache集成。Apache帶有專門的Perl支持模塊,為建立基于數(shù)據(jù)庫的動態(tài)網(wǎng)站提供了強(qiáng)大工具。Apache服務(wù)器MySQL服務(wù)器瀏 覽 器G程序圖1 基于CGI/PERL的WEBMIS的體系結(jié)構(gòu)執(zhí)行順序:請

7、求訪問表單頁面;返回表單頁面;用戶提交表單內(nèi)容;表單傳送到CGI程序處理; 調(diào)用SQL語句;返回?cái)?shù)據(jù);返回處理結(jié)果;返回顯示處理結(jié)果頁面。12483756CGI/Perl采用CGI/Perl來創(chuàng)建動態(tài)的Web頁面。CGI程序的主要任務(wù)是處理用戶提交的表單數(shù)據(jù)內(nèi)容,并產(chǎn)生表單網(wǎng)頁的數(shù)據(jù)。Perl是最適合處理文本格式數(shù)據(jù)的語言,成為CGI程序的首選語言。CGI程序?qū)⒂脩粼L問數(shù)據(jù)庫請求轉(zhuǎn)換成查詢數(shù)據(jù)庫的語句,并將查詢的結(jié)果以HTML的形式返回給客戶。用戶輸入的數(shù)據(jù)是文本內(nèi)容,查詢數(shù)據(jù)庫SQL語句是文本內(nèi)容,數(shù)據(jù)庫返回的結(jié)果也是文本內(nèi)容,所以,Perl最適合編寫CGI程序的語言。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程序時,所有這些環(huán)境變量被設(shè)置。命令行參數(shù):WEB服務(wù)器調(diào)用CGI程序時指定命令行參數(shù)。標(biāo)準(zhǔn)輸入:WEB服務(wù)器將HTTP請求報(bào)文體中的信息送至CGI程序的標(biāo)準(zhǔn)輸入,輸入內(nèi)容的長度由環(huán)境變量CONTENT_LENGTH決定。標(biāo)準(zhǔn)輸出:CGI程序?qū)⒆约旱妮敵鏊椭翗?biāo)準(zhǔn)輸出,這里的標(biāo)準(zhǔn)輸出實(shí)際上是一個完整的客戶端瀏

9、覽器可以識別的HTML文檔。我們采用的是將CGI程序包含在HTML頁面之內(nèi)執(zhí)行的方式,這種執(zhí)行方式被稱為服務(wù)器端包含(Server-Side Include),即SSI。SSI HTML文檔的后綴是“. shtml”。當(dāng)用戶訪問這種文檔時,Web服務(wù)器創(chuàng)建子進(jìn)程來執(zhí)行這些CGI程序,并將CGI程序執(zhí)行的結(jié)果輸出到文檔中,返回給用戶。2.4 CGI/Perl可以編寫CGI程序的語言有很多,如:C,VB等。我們選用Perl語言,因?yàn)镻erl語言具有適應(yīng)性強(qiáng),使用簡單的特點(diǎn),已成為CGI編程事實(shí)上的標(biāo)準(zhǔn)語言。用Perl編寫的CGI程序執(zhí)行方法如下:用戶通過瀏覽器向Web服務(wù)器發(fā)出HTTP請求,如果請

10、求是一個CGI程序(通常以CGI或pl為文件名后綴),則服務(wù)器啟動本機(jī)上的Perl解釋器,載入該CGI程序運(yùn)行。如果HTTP請求方法是POST,CGI程序從標(biāo)準(zhǔn)輸入讀取瀏覽器發(fā)送的數(shù)據(jù)內(nèi)容,如果HTTP請求方式是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請求類型。2.5 數(shù)據(jù)庫的連接和斷開Perl提供了一個用于對數(shù)據(jù)庫進(jìn)行編程的接口,這個接口叫DBI4。在訪問數(shù)據(jù)庫之前Perl程序必須與數(shù)據(jù)庫建立連接,一次數(shù)據(jù)庫連接被稱為

11、一次數(shù)據(jù)庫會話(session)。DBI使用一個數(shù)據(jù)庫句柄來標(biāo)識每個數(shù)據(jù)庫會話。所有的DBI函數(shù)均使用這個句柄操作數(shù)據(jù)庫。DBI函數(shù)connect與數(shù)據(jù)庫建立連接,并返回標(biāo)識這個連接的數(shù)據(jù)庫句柄。函數(shù)disconnect用于斷開與數(shù)據(jù)庫的連接,并且釋放數(shù)據(jù)庫句柄。use DBI;#連接到MySQL中的mk數(shù)據(jù)庫。$dbh=DBI-connect(DBI:MySQL:mk,root,) | die“cannot connect to database:”.DBI-errstr;$rc=$dbh-disconnect();2.6 SQL語句DBI使用SQL語句完成數(shù)據(jù)庫的操作。DBI將一次操作分成

12、兩個階段:準(zhǔn)備SQL語句和執(zhí)行SQL語句。方法prepare用來準(zhǔn)備一條語句,這個方法返回一個語句句柄;方法execute執(zhí)行已被準(zhǔn)備的語句,完成實(shí)際的操作。一個語句句柄可以是以下三種狀態(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í)行插入語句$sth-execute($h_name,$h_id,$h_area,$h_struct,$h_use,$h_app,$h_money,$h_status,$h_memo) ;準(zhǔn)備語句包含代替字符“?”,在執(zhí)行語句時,必須用實(shí)際字符替代所有這些替代字符這些實(shí)際值在參數(shù)中傳遞。3. 房屋租賃信息系統(tǒng)的功能與實(shí)現(xiàn)圖2 房屋租賃系統(tǒng)結(jié)構(gòu)和功能圖界 面房屋修改界 面租戶登記界 面房屋登記界 面租戶查詢界 面房屋查詢界 面空房查詢界 面租戶修改界 面成員注冊界 面密碼修改界 面成員查詢界 面房屋退租界 面成員管理界面

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)的時候,必須進(jìn)行身份認(rèn)證。有三種身份,各種身份對應(yīng)數(shù)據(jù)庫中的一個表。由CGI程序調(diào)取數(shù)據(jù)庫中的用戶信息,通過身份認(rèn)證后分

15、別進(jìn)入系統(tǒng)不同的界面,否則返回登錄界面。登錄界面的程序Index.html的主要部分如下:用戶名:密碼:用戶填寫數(shù)據(jù)后按下按鈕提交數(shù)據(jù)到WEB服務(wù)器,即名為WebMIS的主機(jī)。由action指定的動作是執(zhí)行程序test.pl。關(guān)鍵是將用戶填寫的數(shù)據(jù)傳遞給該程序,Post方式?jīng)Q定用標(biāo)準(zhǔn)輸入傳遞數(shù)據(jù)。將數(shù)據(jù)插入到MySQL數(shù)據(jù)庫里具體的表中要用到DBI。DBI定義了三種與數(shù)據(jù)庫進(jìn)行交互的句柄:驅(qū)動器程序句柄 $drh, 數(shù)據(jù)庫句柄 $dbh, 語句句柄 $sth。$drh沒有實(shí)際的用處。Perl與數(shù)據(jù)庫進(jìn)行信息交互的程序如下:#! /usr/bin/Perl;use CGI qw/:standar

16、d/;use DBI$q=new CGI;#變量賦值$name=param(name);$pass=param(passwd);#連接MySQL中的某一個數(shù)據(jù)庫$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是一個獲取參數(shù)函數(shù),它將由標(biāo)準(zhǔn)輸入得到的數(shù)據(jù)按html表格中輸入數(shù)據(jù)對應(yīng)的名字拆分,分別賦值給自定義變量($name,$pass)。4結(jié)論 采用CGI/Perl編程技術(shù)實(shí)現(xiàn)動態(tài)網(wǎng)頁,在Linux環(huán)境下實(shí)現(xiàn)了用于房屋租賃的三層結(jié)構(gòu)WebMIS。CGI/Perl 編程簡明扼要,易于實(shí)現(xiàn)。本系統(tǒng)所用的系統(tǒng)軟件均可免費(fèi)獲得,這為小型企業(yè)建立基于Web的信息系統(tǒng)提供了一個非常經(jīng)濟(jì)和實(shí)用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論