Unit 6:使用Cold Fusion 建表
表单是用来搜集用户提交的信息的,HTML 中有表单的具体规定,ColdFusion 中也规定了相应的标志。表单提交的信息要通过 CGI(公共网关接口)传递给脚本程序,CGI 规定了WEB 服务器如何向脚本程序发送信息;在收到脚本程序返回的信息又应该如何处理等内容。然而,ColdFusion 取代了用 C/C++或 Perl 编写 CGI 的必要;但 ColdFusion 也能利用 CGI 与 WEB 服务器或 WEB 服务器的 API 连接,此外要强调的是 ColdFusion 不是 CGI 执行程序, 而是一个多线程的系统服务,更加稳定。
HTML 表单
HTML 表单的主要功能是搜集用户端要提交到服务器的信息。
HTML 使用一对<Form></Form> 作为表单的开始和结束,表单中可以有<input> 、
<select>和<textarea>三种标签,分别用来定义表中不同类型的内容。
Form 具有三个属性:Action、Method 和 Enctype。Action 通知服务器,提交的内容由哪个文件来处理;Method 指定在服务器和 CGI 之间通信的方法,有 POST 和 GET 两种; Enctype 指定所发文件的类型。例如:<Form Action=”xx.c” Method=”POST”>。
在一份<Form>中,你所希望用户输入的绝大部分信息都放在<input>标签中。在<input> 标签中有多个不同的类型:text ,password , hidden ,checkbox, radio, submit, reset。text 创建文本框,让访问者输入文本信息;password 用来输入密码,用户的输入在浏览器上用*代替;hidden 用来存放用户不可见的信息;checkbox 类似 ON/OFF 开关;radio 实现多选一;submit 用来提交表单;reset 可以重新生成完整的表单。
<select>使访问者可以从一个下拉菜单或滚动菜单中选取某一项。<select></select> 括住菜单体,中间的内容由<Option>标签设定。例如:
<Form>
<select name=”month”>
<option value=”1”>Jan
<option value=”2”>Feb
………… .
<option value=”12”>Dec
</select>
</Form>
若你想让访问者输入较大量的内容,可以通过使用<textarea>创建文本框,可以自行定义文本框的大小和宽度。例如:
< textarea name=”comments” cols=10 rows=40> this is test!!
< /textarea >
掌握了以上所讲的内容,你就可以建立 HTML 表单了。
ColdFusion 表单
ColdFusion 也提供一套与之对应的表单标志:
HTML 标记 |
ColdFusion 标记 |
---|---|
<Form> |
CFForm |
<input> |
CFInput |
<select> |
CFSelect |
<textarea> |
CFForm 可以用来建立表格,但它的功能比 HTML 的Form 要强。它所包括的标签有:
-
CFINPUT – 建立表单输入项 (类型有:radio button, text box, or
checkbox) 并可以判断输入是否合乎限制条件。
-
CFSELECT – 建立下拉式菜单
-
CFSLIDER – 建立滑动条
-
CFTEXTINPUT – 建立文本输入框
-
CFTREE – 建立树型结构控制
-
CFGRID – 建立栅格控制来显示表格数据
-
CFAPPLET – 在表格中插入已经注册的 Java applet。Applets 的注册在
ColdFusion 的 Administrator 中。
CFFORM 的语法是:
<CFFORM NAME="name" //FORM 的名称
ACTION="form_action" //调用的“处理页”路径和名称
ENABLECAB="Yes/No" //是否下载微软的 CAB 文件ONSUBMIT="javascript" //在表格提交前调用的 JavaScript TARGET="window_name"//表格输出时所在窗口或窗口中某一帧的名称ENCTYPE="type"//MIME 类型>
...
</CFFORM>
下面着重介绍使用 CFINPUT 建立输入项。通过一个例子来说明 CFINPUT 建立的各种类型的输入项:
<CFFORM NAME="Form1" ACTION="submit.cfm" METHOD="Post">
//建立表单,提交的数据由 submit.cfm 来处理
<TABLE CELLPADDING=5 border=0>
<TR><TD>Please enter your user login:<BR>
<CFINPUT TYPE="text" NAME="loginID" VALUE="name"></TD></TR>
//建立文本框
<TR><TD>Please also enter your password:<BR>
<CFINPUT TYPE="password" NAME="pwd" VALUE="password"></TD></TR>
//建立密码输入框
<TR><TD>Please select one:<BR>
<CFINPUT TYPE="radio" NAME="radio1" VALUE="select1">Embodied<BR>
<CFINPUT TYPE="radio" NAME="radio1" CHECKED="yes" VALUE="select2"> Disembodied<BR>
<CFINPUT TYPE="radio" NAME="radio1" VALUE="select3">Don't Know</TD></TR>
//建立多选一的选择项
<TR><TD>Make your selections here:<BR>
<CFINPUT TYPE="checkbox" NAME="checkbox1" VALUE="one">Derrida<BR>
<CFINPUT TYPE="checkbox" NAME="checkbox1" CHECKED="yes" VALUE="two">Foucault<BR>
<CFINPUT TYPE="checkbox" NAME="checkbox1" VALUE="three"> Kristeva</TD></TR>
//建立 ON/OFF 选项
<TR><TD><INPUT TYPE="Submit" VALUE="Submit"></TD></TR>
//建立提交按钮
</TABLE>
</CFFORM>
建立的表单如下:
传递表单变量
使用表格传递变量可以有多种方法,下面介绍如何通过 input 的 Hidden 类型传递变量和在 Action 页中如何引用变量。
通过例子讲解如何通过 input 的 Hidden 类型传递变量:
<FORM ACTION="example.cfm" METHOD="Post">
<INPUT TYPE="Hidden" NAME="Customer_ID" VALUE="24">
// VALUE 值也可以是变量 VALUE="#Customer_ID#",在处理页中,可以通过 引用 Form.Customer_ID 变量来得到 Customer_ID 的值。
<INPUT TYPE="Submit" VALUE="Enter">
</FORM>
这样在表单提交后,变量 Customer_ID 的值 24 也传递到了服务器端,在 example.cfm 处理页中可以直接引用 Form.Customer_ID 这个变量名称得到传来的值。
Form 表单中的各种类型的提交值都是这样传递的,在 Action 页中直接引用Form.NAME 这个变量名称得到传来的值。
以往用 CGI 处理提交内容,提交内容存储在 CGI 环境变量中,程序人员要自行从 CGI 环境变量中提取出提交的内容,这样处理十分麻烦。在 ColdFusion 中,你不必自行处理提交的变量,只要直接引用他们就可以了,在 ColdFusion 的 Form 中,所有的 Tag 都有 NAME 属性,这就可以在处理页中通过直接引用 Form. NAME 来得到提交的相应的数据。
练习题:
用 HTMLTag 建立表单,再用 ColdFusion 建立同样内容的表单,观看这两个表单有没有不同。