基于CGIPerl的WebMIS的设计与实现.doc_第1页
基于CGIPerl的WebMIS的设计与实现.doc_第2页
基于CGIPerl的WebMIS的设计与实现.doc_第3页
基于CGIPerl的WebMIS的设计与实现.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于CGI/Perl的WebMIS的设计与实现朱立谷 刘玲 赵卫国 宋小波 梁哲炜 (湘潭大学信息工程学院,湖南省湘潭市411105)摘要:本文设计和实现了一个基于Web三层结构的房屋租赁信息系统。采用了Linux作为操作系统,Apache和MySQL作为Web服务器和数据库服务器,采用CGI/Perl编程技术实现了动态网页和数据访问。该方法适合于小型企业建立经济实用的WebMIS系统。关键词: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技术的不断发展, 使得以Web技术为核心的浏览器/Web服务器/数据库服务器三层体系结构的应用成为企业管理信息系统开发技术的主流1。Intranet终端系统已经统一为Web浏览程序的单一平台。Intranet系统里的文件即应用程序处理结果,都能通过Web浏览程序显示出来。用户通过运行Web浏览程序,各种处理任务都可以通过Web浏览程序调用系统资源来完成。 浏览器/服务器模型与传统的客户机/服务器模式相比有以下优势: 浏览器/服务器模式大大简化了客户端。客户端成为廋客户机,开发、维护等几乎所有工作也都集中在服务器端。对网络应用进行升级时,只需要更新服务端,不必要更新客户端,减轻了系统维护与升级的成本和工作量。 事物层可在跨平台的客户端共享,不同逻辑组件的分离意味着图形设计人员,事物逻辑开发人员和数据库分析人员可以相对独立的设计各自的部分。统一的,抽象的用户界面可使用户更有效的从同一数据源中存取数据。浏览器/服务器结构可更有效的在Internet/Intranet上运行。极大的发挥对异构系统及异种数据库的支持能力,及几乎是无限制的系统扩展能力。2.系统的体系结构与开发环境2.1 三层结构技术 本系统采用三层结构实现:将客户端与用户界面无关的功能移进了中间层(第二层)与表示功能层和数据层构成三层结构。Web服务器作为表示层,大量的业务处理程序放在应用服务器上作为功能层,而将数据库放在数据库服务器上作为数据层。 浏览器/服务器三层结构分布十分灵活,功能层和数据层中的服务器可以有一个到多个。大规模管理信息系统中的数据库和应用程序组件可以被分布在不同的服务器上运行。这些服务器可以是本地的,也可以是远程的,使系统更合理,更灵活,更具扩展性。系统具有彻底的开放性,不限制将要访问系统的用户数。我们开发的是一个小型信息系统,因此所有的服务器均集中在一台主机上。2.2 系统体系结构本系统的体系结构如图1所示。采用Red Hat Linux 7.2作为系统平台。Linux不但可以完全免费得到,具有比Windows更大的稳定性和更强的功能。运行在Linux系统下的Web服务器Apache稳定性高、速度快,而且功能强大,许多大型的门户网站和综合网站都用它作为Web服务器软件。Apache再加上一个完全基于网络的操作系统Linux,是建立一个Web站点的首选2。MySQL是一种速度快可靠性高并且易于使用的数据库产品,可以适应几百万条记录的数据表。MySQL容易与Apache集成。Apache带有专门的Perl支持模块,为建立基于数据库的动态网站提供了强大工具。Apache服务器MySQL服务器浏 览 器G程序图1 基于CGI/PERL的WEBMIS的体系结构执行顺序:请求访问表单页面;返回表单页面;用户提交表单内容;表单传送到CGI程序处理; 调用SQL语句;返回数据;返回处理结果;返回显示处理结果页面。12483756CGI/Perl采用CGI/Perl来创建动态的Web页面。CGI程序的主要任务是处理用户提交的表单数据内容,并产生表单网页的数据。Perl是最适合处理文本格式数据的语言,成为CGI程序的首选语言。CGI程序将用户访问数据库请求转换成查询数据库的语句,并将查询的结果以HTML的形式返回给客户。用户输入的数据是文本内容,查询数据库SQL语句是文本内容,数据库返回的结果也是文本内容,所以,Perl最适合编写CGI程序的语言。2.3 CGI的工作原理CGI规范主要定义CGI程序与Web服务器之间的通信方式,CGI程序可以通过以下4种方式与WEB服务器进行通信3。环境变量(Environmental Variable):WEB服务器使用环境变量与CGI程序通信。在CGI规范中定义了这些起通信作用的环境变量。当WEBServer调用CGI程序时,所有这些环境变量被设置。命令行参数:WEB服务器调用CGI程序时指定命令行参数。标准输入:WEB服务器将HTTP请求报文体中的信息送至CGI程序的标准输入,输入内容的长度由环境变量CONTENT_LENGTH决定。标准输出:CGI程序将自己的输出送至标准输出,这里的标准输出实际上是一个完整的客户端浏览器可以识别的HTML文档。我们采用的是将CGI程序包含在HTML页面之内执行的方式,这种执行方式被称为服务器端包含(Server-Side Include),即SSI。SSI HTML文档的后缀是“. shtml”。当用户访问这种文档时,Web服务器创建子进程来执行这些CGI程序,并将CGI程序执行的结果输出到文档中,返回给用户。2.4 CGI/Perl可以编写CGI程序的语言有很多,如:C,VB等。我们选用Perl语言,因为Perl语言具有适应性强,使用简单的特点,已成为CGI编程事实上的标准语言。用Perl编写的CGI程序执行方法如下:用户通过浏览器向Web服务器发出HTTP请求,如果请求是一个CGI程序(通常以CGI或pl为文件名后缀),则服务器启动本机上的Perl解释器,载入该CGI程序运行。如果HTTP请求方法是POST,CGI程序从标准输入读取浏览器发送的数据内容,如果HTTP请求方式是GET,CGI程序从环境变量QUERY_STRING中获取浏览器发送的数据内容。最后将数据发送到客户的浏览器。因为命令行参数和环境变量的大小都有限制因素,而通过标准输入传送的数据则不然,所以表格应尽可能的使用POST请求类型。2.5 数据库的连接和断开Perl提供了一个用于对数据库进行编程的接口,这个接口叫DBI4。在访问数据库之前Perl程序必须与数据库建立连接,一次数据库连接被称为一次数据库会话(session)。DBI使用一个数据库句柄来标识每个数据库会话。所有的DBI函数均使用这个句柄操作数据库。DBI函数connect与数据库建立连接,并返回标识这个连接的数据库句柄。函数disconnect用于断开与数据库的连接,并且释放数据库句柄。use DBI;#连接到MySQL中的mk数据库。$dbh=DBI-connect(DBI:MySQL:mk,root,197911) | die“cannot connect to database:”.DBI-errstr;$rc=$dbh-disconnect();2.6 SQL语句DBI使用SQL语句完成数据库的操作。DBI将一次操作分成两个阶段:准备SQL语句和执行SQL语句。方法prepare用来准备一条语句,这个方法返回一个语句句柄;方法execute执行已被准备的语句,完成实际的操作。一个语句句柄可以是以下三种状态之一:就绪状态(Prepared),调用了prepare方法成功之后;打开状态(Open),执行execute操作成功之后;非法状态(Invalid),调用disconnect方法成功之后,或prepare调用失败。以下是SQL程序片段:#准备向house表中插入一组记录$sth=$dbh-prepare(qinsert into house values (?,?,?,?,?,?,?,?,?) | die Cant prepare statement :$sth-errstrn;#执行插入语句$sth-execute($h_name,$h_id,$h_area,$h_struct,$h_use,$h_app,$h_money,$h_status,$h_memo) ;准备语句包含代替字符“?”,在执行语句时,必须用实际字符替代所有这些替代字符这些实际值在参数中传递。3. 房屋租赁信息系统的功能与实现图2 房屋租赁系统结构和功能图界 面房屋修改界 面租户登记界 面房屋登记界 面租户查询界 面房屋查询界 面空房查询界 面租户修改界 面成员注册界 面密码修改界 面成员查询界 面房屋退租界 面成员管理界面(member.shtml)租户管理界面(lessee.shtml)管理员管理界面(manager.shtml)图2 房屋租赁信息系统结构和功能图界 面登陆界面(Index.html,身份认证test.pl) 房屋租赁信息系统由三大模块组成: 管理员系统管理模块:包括房产资料登记和修改,租户资料登记以及租赁信息的统计。租户系统管理模块:包括租户资料的修改,退租管理以及房屋和交费信息的查询。 成员系统管理模块:成员资料的登记以及房屋信息资料的查询。如图2所示。在进入房屋租赁系统的时候,必须进行身份认证。有三种身份,各种身份对应数据库中的一个表。由CGI程序调取数据库中的用户信息,通过身份认证后分别进入系统不同的界面,否则返回登录界面。登录界面的程序Index.html的主要部分如下:用户名:密码:用户填写数据后按下按钮提交数据到WEB服务器,即名为WebMIS的主机。由action指定的动作是执行程序test.pl。关键是将用户填写的数据传递给该程序,Post方式决定用标准输入传递数据。将数据插入到MySQL数据库里具体的表中要用到DBI。DBI定义了三种与数据库进行交互的句柄:驱动器程序句柄 $drh, 数据库句柄 $dbh, 语句句柄 $sth。$drh没有实际的用处。Perl与数据库进行信息交互的程序如下:#! /usr/bin/Perl;use CGI qw/:standard/;use DBI$q=new CGI;#变量赋值$name=param(name);$pass=param(passwd);#连接MySQL中的某一个数据库$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是一个获取参数函数,它将由标准输入得到的数据按html表格中输入数据对应的名字拆分,分别赋值给自定义变量($name,$pass)。4结论 采用CGI/Perl编程技术实现动态网页,在Linux环境下实现了用于房屋租赁的三层结构WebMIS。CGI/Perl 编程简明扼要,易于实现。本系统所用的系统软件均可免费获得,这为小型企业建立基于Web的信息系统提供了一个非常经济和实用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论