



免費預(yù)覽已結(jié)束,剩余1頁可下載查看
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基于CGI/Perl的WebMIS的設(shè)計與實現(xiàn)朱立谷 劉玲 趙衛(wèi)國 宋小波 梁哲煒 (湘潭大學(xué)信息工程學(xué)院,湖南省湘潭市411105)摘要:本文設(shè)計和實現(xiàn)了一個基于Web三層結(jié)構(gòu)的房屋租賃信息系統(tǒng)。采用了Linux作為操作系統(tǒng),Apache和MySQL作為Web服務(wù)器和數(shù)據(jù)庫服務(wù)器,采用CGI/Perl編程技術(shù)實現(xiàn)了動態(tài)網(wǎng)頁和數(shù)據(jù)訪問。該方法適合于小型企業(yè)建立經(jīng)濟實用的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中圖分類號:TP391 文獻標識碼: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瀏覽程序顯示出來。用戶通過運行Web瀏覽程序,各種處理任務(wù)都可以通過Web瀏覽程序調(diào)用系統(tǒng)資源來完成。 瀏覽器/服務(wù)器模型與傳統(tǒng)的客戶機/服務(wù)器模式相比有以下優(yōu)勢: 瀏覽器/服務(wù)器模式大大簡化了客戶端??蛻舳顺蔀閺C客戶機,開發(fā)、維護等幾乎所有工作也都集中在服務(wù)器端。對網(wǎng)絡(luò)應(yīng)用進行升級時,只需要更新服務(wù)端,不必要更新客戶端,減輕了系統(tǒng)維護與升級的成本和工作量。 事物層可在跨平臺的客戶端共享,不同邏輯組件的分離意味著圖形設(shè)計人員,事物邏輯開發(fā)人員和數(shù)據(jù)庫分析人員可以相對獨立的設(shè)計各自的部分。統(tǒng)一的,抽象的用戶界面可使用戶更有效的從同一數(shù)據(jù)源中存取數(shù)據(jù)。瀏覽器/服務(wù)器結(jié)構(gòu)可更有效的在Internet/Intranet上運行。極大的發(fā)揮對異構(gòu)系統(tǒng)及異種數(shù)據(jù)庫的支持能力,及幾乎是無限制的系統(tǒng)擴展能力。2.系統(tǒng)的體系結(jié)構(gòu)與開發(fā)環(huán)境2.1 三層結(jié)構(gòu)技術(shù) 本系統(tǒng)采用三層結(jié)構(gòu)實現(xiàn):將客戶端與用戶界面無關(guān)的功能移進了中間層(第二層)與表示功能層和數(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ù)器上運行。這些服務(wù)器可以是本地的,也可以是遠程的,使系統(tǒng)更合理,更靈活,更具擴展性。系統(tǒng)具有徹底的開放性,不限制將要訪問系統(tǒng)的用戶數(shù)。我們開發(fā)的是一個小型信息系統(tǒng),因此所有的服務(wù)器均集中在一臺主機上。2.2 系統(tǒng)體系結(jié)構(gòu)本系統(tǒng)的體系結(jié)構(gòu)如圖1所示。采用Red Hat Linux 7.2作為系統(tǒng)平臺。Linux不但可以完全免費得到,具有比Windows更大的穩(wěn)定性和更強的功能。運行在Linux系統(tǒng)下的Web服務(wù)器Apache穩(wěn)定性高、速度快,而且功能強大,許多大型的門戶網(wǎng)站和綜合網(wǎng)站都用它作為Web服務(wù)器軟件。Apache再加上一個完全基于網(wǎng)絡(luò)的操作系統(tǒng)Linux,是建立一個Web站點的首選2。MySQL是一種速度快可靠性高并且易于使用的數(shù)據(jù)庫產(chǎn)品,可以適應(yīng)幾百萬條記錄的數(shù)據(jù)表。MySQL容易與Apache集成。Apache帶有專門的Perl支持模塊,為建立基于數(shù)據(jù)庫的動態(tài)網(wǎng)站提供了強大工具。Apache服務(wù)器MySQL服務(wù)器瀏 覽 器G程序圖1 基于CGI/PERL的WEBMIS的體系結(jié)構(gòu)執(zhí)行順序:請求訪問表單頁面;返回表單頁面;用戶提交表單內(nèi)容;表單傳送到CGI程序處理; 調(diào)用SQL語句;返回數(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的工作原理CGI規(guī)范主要定義CGI程序與Web服務(wù)器之間的通信方式,CGI程序可以通過以下4種方式與WEB服務(wù)器進行通信3。環(huán)境變量(Environmental Variable):WEB服務(wù)器使用環(huán)境變量與CGI程序通信。在CGI規(guī)范中定義了這些起通信作用的環(huán)境變量。當WEBServer調(diào)用CGI程序時,所有這些環(huán)境變量被設(shè)置。命令行參數(shù):WEB服務(wù)器調(diào)用CGI程序時指定命令行參數(shù)。標準輸入:WEB服務(wù)器將HTTP請求報文體中的信息送至CGI程序的標準輸入,輸入內(nèi)容的長度由環(huán)境變量CONTENT_LENGTH決定。標準輸出:CGI程序?qū)⒆约旱妮敵鏊椭翗藴瘦敵?,這里的標準輸出實際上是一個完整的客戶端瀏覽器可以識別的HTML文檔。我們采用的是將CGI程序包含在HTML頁面之內(nèi)執(zhí)行的方式,這種執(zhí)行方式被稱為服務(wù)器端包含(Server-Side Include),即SSI。SSI HTML文檔的后綴是“. shtml”。當用戶訪問這種文檔時,Web服務(wù)器創(chuàng)建子進程來執(zhí)行這些CGI程序,并將CGI程序執(zhí)行的結(jié)果輸出到文檔中,返回給用戶。2.4 CGI/Perl可以編寫CGI程序的語言有很多,如:C,VB等。我們選用Perl語言,因為Perl語言具有適應(yīng)性強,使用簡單的特點,已成為CGI編程事實上的標準語言。用Perl編寫的CGI程序執(zhí)行方法如下:用戶通過瀏覽器向Web服務(wù)器發(fā)出HTTP請求,如果請求是一個CGI程序(通常以CGI或pl為文件名后綴),則服務(wù)器啟動本機上的Perl解釋器,載入該CGI程序運行。如果HTTP請求方法是POST,CGI程序從標準輸入讀取瀏覽器發(fā)送的數(shù)據(jù)內(nèi)容,如果HTTP請求方式是GET,CGI程序從環(huán)境變量QUERY_STRING中獲取瀏覽器發(fā)送的數(shù)據(jù)內(nèi)容。最后將數(shù)據(jù)發(fā)送到客戶的瀏覽器。因為命令行參數(shù)和環(huán)境變量的大小都有限制因素,而通過標準輸入傳送的數(shù)據(jù)則不然,所以表格應(yīng)盡可能的使用POST請求類型。2.5 數(shù)據(jù)庫的連接和斷開Perl提供了一個用于對數(shù)據(jù)庫進行編程的接口,這個接口叫DBI4。在訪問數(shù)據(jù)庫之前Perl程序必須與數(shù)據(jù)庫建立連接,一次數(shù)據(jù)庫連接被稱為一次數(shù)據(jù)庫會話(session)。DBI使用一個數(shù)據(jù)庫句柄來標識每個數(shù)據(jù)庫會話。所有的DBI函數(shù)均使用這個句柄操作數(shù)據(jù)庫。DBI函數(shù)connect與數(shù)據(jù)庫建立連接,并返回標識這個連接的數(shù)據(jù)庫句柄。函數(shù)disconnect用于斷開與數(shù)據(jù)庫的連接,并且釋放數(shù)據(jù)庫句柄。use DBI;#連接到MySQL中的mk數(shù)據(jù)庫。$dbh=DBI-connect(DBI:MySQL:mk,root,197911) | die“cannot connect to database:”.DBI-errstr;$rc=$dbh-disconnect();2.6 SQL語句DBI使用SQL語句完成數(shù)據(jù)庫的操作。DBI將一次操作分成兩個階段:準備SQL語句和執(zhí)行SQL語句。方法prepare用來準備一條語句,這個方法返回一個語句句柄;方法execute執(zhí)行已被準備的語句,完成實際的操作。一個語句句柄可以是以下三種狀態(tài)之一:就緒狀態(tài)(Prepared),調(diào)用了prepare方法成功之后;打開狀態(tài)(Open),執(zhí)行execute操作成功之后;非法狀態(tài)(Invalid),調(diào)用disconnect方法成功之后,或prepare調(diào)用失敗。以下是SQL程序片段:#準備向house表中插入一組記錄$sth=$dbh-prepare(qinsert into house values (?,?,?,?,?,?,?,?,?) | die 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í)行語句時,必須用實際字符替代所有這些替代字符這些實際值在參數(shù)中傳遞。3. 房屋租賃信息系統(tǒng)的功能與實現(xiàn)圖2 房屋租賃系統(tǒng)結(jié)構(gòu)和功能圖界 面房屋修改界 面租戶登記界 面房屋登記界 面租戶查詢界 面房屋查詢界 面空房查詢界 面租戶修改界 面成員注冊界 面密碼修改界 面成員查詢界 面房屋退租界 面成員管理界面(member.shtml)租戶管理界面(lessee.shtml)管理員管理界面(manager.shtml)圖2 房屋租賃信息系統(tǒng)結(jié)構(gòu)和功能圖界 面登陸界面(Index.html,身份認證test.pl) 房屋租賃信息系統(tǒng)由三大模塊組成: 管理員系統(tǒng)管理模塊:包括房產(chǎn)資料登記和修改,租戶資料登記以及租賃信息的統(tǒng)計。租戶系統(tǒng)管理模塊:包括租戶資料的修改,退租管理以及房屋和交費信息的查詢。 成員系統(tǒng)管理模塊:成員資料的登記以及房屋信息資料的查詢。如圖2所示。在進入房屋租賃系統(tǒng)的時候,必須進行身份認證。有三種身份,各種身份對應(yīng)數(shù)據(jù)庫中的一個表。由CGI程序調(diào)取數(shù)據(jù)庫中的用戶信息,通過身份認證后分別進入系統(tǒng)不同的界面,否則返回登錄界面。登錄界面的程序Index.html的主要部分如下:用戶名:密碼:用戶填寫數(shù)據(jù)后按下按鈕提交數(shù)據(jù)到WEB服務(wù)器,即名為WebMIS的主機。由action指定的動作是執(zhí)行程序test.pl。關(guān)鍵是將用戶填寫的數(shù)據(jù)傳遞給該程序,Post方式?jīng)Q定用標準輸入傳遞數(shù)據(jù)。將數(shù)據(jù)插入到MySQL數(shù)據(jù)庫里具體的表中要用到DBI。DBI定義了三種與數(shù)據(jù)庫進行交互的句柄:驅(qū)動器程序句柄 $drh, 數(shù)據(jù)庫句柄 $dbh, 語句句柄 $sth。$drh沒有實際的用處。Perl與數(shù)據(jù)庫進行信息交互的程序如下:#! /usr/bin/Perl;use CGI qw/:standard/;use DBI$q=new CGI;#變量賦值$name=param(name);$pass=param(passwd);#連接MySQL中的某一個數(shù)據(jù)庫$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是一個獲取參數(shù)函數(shù),它將由標準輸入得到的數(shù)據(jù)按html表格中輸入數(shù)據(jù)對應(yīng)的名字拆分,分別賦值給自定義變量($name,$pass)。4結(jié)論 采用CGI/Perl編程技術(shù)實現(xiàn)動態(tài)網(wǎng)頁,在Linux環(huán)境下實現(xiàn)了用于房屋租賃的三層結(jié)構(gòu)WebMIS。CGI/Perl 編程簡明扼要,易于實現(xiàn)。本系統(tǒng)所用的系統(tǒng)軟件均可免費獲得,這為小型企業(yè)建立基于Web的信息系統(tǒng)提供了一個非常經(jīng)濟和實用
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 商業(yè)綜合體儲藏室所有權(quán)轉(zhuǎn)移協(xié)議
- 民營企業(yè)廠房租賃安全生產(chǎn)協(xié)議范本
- 涉及租賃房屋周邊商業(yè)配套的退房協(xié)議
- 房屋委托租房協(xié)議書范本
- 農(nóng)產(chǎn)品集中采購合作協(xié)議
- 無人振搗機軌跡規(guī)劃
- 下肢深靜脈血栓治療與護理
- 2024年高考語文復(fù)習(xí):宮苑類題材古代詩歌閱讀練習(xí)題(含答案解析)
- 制造客戶需求培訓(xùn)
- 四有好老師教師培訓(xùn)講座
- 《統(tǒng)計學(xué)》 課件 廖穎文 1. 緒 論
- QCC品管圈活動表格匯編
- 幼兒園零星改造工程施工完整方案
- 城市軌道交通服務(wù)禮儀PPT完整全套教學(xué)課件
- 第四講 堅持以人民為中心PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 《世界遺產(chǎn)背景下的影響評估指南和工具包》
- DolphinScheduler體系架構(gòu)突破
- 探究食育課程對小班幼兒良好飲食習(xí)慣形成的作用 論文
- 電力安全規(guī)程(變電)
- 南通鋼筋加工裝備項目可行性研究報告
評論
0/150
提交評論