在了解CGI编程在Ruby中的含义之前,让我们了解它在真正的编程世界中的含义。CGI是Common 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>' )
输出结果
<a href="/san">Go to the site(Nhooo.com)</a>
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。所有代码块都将返回一个字符串,该字符串将用作标签的内容。