文档详情

perl编程_19 复杂窗体.PDF

发布:2017-08-27约字共9页下载文档
文本预览下载声明
下载 第1 9学时 复 杂 窗 体 We b上的窗体不只是简单的单页面窗体。有时窗体要跨越若干页。这些复杂的窗体以调 查、查询和购物车等应用程序的形式出现。 这些比较复杂的窗体需要使用某些不同的编程技巧,本学时你将要学习这些技巧。 在本学时中,你将要学习: • 如何创建多页窗体。 19.1 复杂的多页窗体 使用C G I程序来编写复杂的多页窗体时,你会遇到一个特殊的编程难题。We b浏览器与We b 服务器之间的连接根本不是一个持久的连接。 We b浏览器与服务器建立连接,检查 We b页,然 后便断开与We b服务器之间的连接。在服务器与你的We b浏览器之间并不保持不间断的连接。 更为复杂的是:浏览器每次与 We b服务器连接时,We b服务器并不认为该浏览器预先访问 过该站点。服务器并不每次都能很容易地识别该浏览器。 类似的一种情况是:图书馆的读者与没有记忆力的图书馆管理员之间进行谈话,读者每 次只能向管理员提出一个问题。 读者向图书管理员借阅一本书,比如关于亚利桑那州的一本书,图书管理员可以检索这 本书。图书管理员之所以能够检索这本书,是因为这个请求很容易满足。但是读者不能要求 借阅同一个专题的另一本书。图书管理员不能记住上一个借书请求,因此他无法借给你同一 个专题的另一本书。如果借书的请求改为“给我另一本关于亚利桑那州的书”,图书管理员仍 然无法满足读者的要求,因为他检索的书可能与第一次检索的这本书一样。 若要检索同一专题的第二本书,惟一的办法是说:“我需要另一本关于亚利桑那州的书, 我已经有了一本名叫《在亚利桑那州定居》的书”。这个借阅请求带有足够的能够说明问题的 信息,使图书管理员能够知道什么应答是不适当的。 为We b页编写多页窗体,也可以使用同样的解决办法。每个问题 / 答复会话必须包含足够 的信息,使We b服务器能够知道它需要做什么。你可以用几种不同的方法来创建这样的会话, 其中的一种方法,即使用隐藏的 H T M L域,将在本学时中介绍。 19.2 隐藏域 要使We b窗体能够“记住”信息,最容易的方法是使用隐藏域,将以前的信息嵌入 We b窗 体。隐藏域是H T M L 窗体的组成部分,它使域和值成为H T M L 的组成部分,但是在显示窗体时, 窗体中并不出现这些域和值。在H T M L 中,这些域和值编写为下面的形式: 如果将上面的 H T M L代码放入一个窗体,新的名字(“f u l l n a m e ”)和值(“Pink Floyd ”) 将成为窗体的组成部分。如果该窗体被提交给一个 Perl CGI 程序,p a r a m 函数将返回一个关键 字和隐藏域的值。 218使用第三部分 将Perl 用于C G I 下载 在线商店 如果要举一个如何使用隐藏域的例子,可以看一看在线商店,它使用一系列的 We b 页, 使人们能够根据在线目录来选购商品。目前,我们只是向你介绍复杂窗体的运行情况,在本 学时后面部分的内容中,要介绍另一个复杂的窗体,它包含用于创建一个在线调查的代码。 如果不能实现某种形式的安全 We b事务处理,那么请不要使用这个在线 商店的例子,请注意,这个例子并不包含任何真实的个人信息,如电话号码 或信用卡号码等,因为隐藏域就像正规的 H T M L 窗体,它根本不具备任何安 全性。 图1 9 - 1所示的在线商店第一页显示了该商店的商品清单。 图19-1 在线商店的第一页 当用户单击Go to Store (去商店)按钮时,C G I程序接收来自窗体的值,然后显示完整的 目录,如图1 9 - 2所示。 图19-2 显示在线商店的商 品目录 第二页显示完整的目录。当第一页(带有商店拥有商品的目录)提交时, C G I程序接收各 个值,然后当它为完整的目录输出 H T M L 时,它将商品的指定数量作为隐藏域放入新窗体。 每当C G I程序接收来自H T M L 窗体的值时,新页将包含隐藏域中的旧值,以及普通窗体元 素中的新值。 采用这个方法,
显示全部
相似文档