Ruby中的CGI编程

Ruby CGI程式设计

在了解CGI编程在Ruby中的含义之前,让我们了解它在真正的编程世界中的含义。CGICommon Gateway Interface的缩写。它是用于在万维网和CGI程序之间传送数据或信息的标识。CGI程序提供了一种与用户互动的动态方式,并且设计为可以接受和返回数据的方式。所有处理都在Web服务器上进行。因此,它被用作服务器端解决方案。

现在,让我们了解在Ruby中编写CGI程序的方式。

如果要从Ruby脚本生成HTML输出,可以编写以下代码:

print "HTTP/1.0 200 OK\r\n"
print "Content-type: text/html\r\n\r\n"
print "<html><body>Hello World!</body></html>\r\n"

输出结果

HTTP/1.0 200 OK
Content-type: text/html
<html><body>Hello fella! Greetings from NHOOO.com</body></html>

cgi.rb是一个预定义的类,称为cgi,可帮助您编写CGI程序。在cgi class的支持下,您可以创建表单,Cookie,维护状态会话等。您必须在程序顶部给出要求require cgi的语句,才能享受cgi类的功能。

让我们看看CGI类的一些功能。

报价单

如果要编写URL或HTML代码,则应谨慎对待字符。URL中的许多字符都有特殊含义。以下是一些字符的翻译:

  • / =>%2F

  • &=>%26

  • <空格> => +

为了处理上述字符,cgi为您提供了.escape.unescape。它们是cgi的例程。请参阅下面的示例以供参考:

require 'cgi'
puts CGI.escape( "He/She must be aware of his/her capabilities & should work accordingly" )

输出结果

He%2FShe+must+be+aware+of+his%2Fher+capabilities+%26+should+work+accordingly

以下代码将使您知道如何转义HTML特殊字符?

require 'cgi'
puts CGI.escapeHTML( '<a href="/san">Go to the site(Nhooo.com)</a>' )

输出结果

&lt;a href=&quot;/san&quot;&gt;Go to the site(Nhooo.com)&lt;/a&gt;

创建表单和HTML

cgi类是编写HTML所需的大量方法的保护伞。每个标签在cgi下都有一个方法。cgi是一个类,要访问一个类的方法,我们必须首先实例化它。可以通过调用CGI.new实例化cgi。

让我们借助下面提到的代码设计基本表单,

require "cgi"
cgi = CGI.new("html5")
cgi.out {
   cgi.html {
      cgi.head { "\n"+cgi.title{"It is an Example of form"} } +
      cgi.body { "\n"+
         cgi.form {"\n"+
            cgi.hr +
            cgi.h1 { "A Form: " } + "\n"+
            cgi.h2 { "A Basic Form:"} + "\n" +
            cgi.textarea("get_text") +"\n"+
            cgi.button("click_here") +"\n"+
            cgi.hr +
            cgi.br +
            cgi.submit
         }
      }
   }
}

输出:

Content-Type: text/html
Content-Length: 317

<!DOCTYPE HTML><HTML><HEAD>
<TITLE>It is an Example of form</TITLE></HEAD><BODY>
<FORM METHOD="post" ENCTYPE="application/x-www-form-urlencoded">
<HR><H1>A Form: </H1>
<H2>A Basic Form:</H2>
<TEXTAREA NAME="get_text" COLS="70" ROWS="10"></TEXTAREA>
<BUTTON></BUTTON>
<HR><BR><INPUT TYPE="submit"></FORM></BODY></HTML>

上面的代码正在生成一个标题为“ This is a example”的HTML表单。表单具有水平标尺,标题,两个输入控件,即TextArea和button。所有代码块都将返回一个字符串,该字符串将用作标签的内容。