在这个版本中,我们将收集名字和电子函件地址,并用下述形式将其保存到文件中:

First Last ;

这对任何E-mail程序来说都是一种非常方便的格式。由于只需收集两个字段,而且CGI为字段中的编码采用了一种特殊的格式,所以这里没有简便的方法。如果自己动手编制一个原始的HTML页,并加入下述代码行,即可正确地理解这一点.

上述代码创建了两个数据输入字段(区),名为name和email。另外还有一个submit(提交)按钮,用于收集数据,并将其发给CGI程序。Listmgr2.exe是驻留在特殊程序目录中的一个可执行文件。在我们的web服务器上,该目录一般都叫作“cgi-bin”。如果在那个目录里找不到该程序,结果就无法出现。填好这个表单,然后按下提交按钮,即可在浏览器的URL地址窗口里看到象下面这样的内容:

在Windows32平台下,可利用与Microsoft Office 97或其他产品配套提供的Microsoft Personal Web Server(微软个人Web服务器)进行测试。这是进行试验的最好方法,因为不必正式连入网络,可在本地环境中完成测试(速度也非常快)。如果使用的是不同的平台,或者没有Office 97或者FrontPage 98那样的产品,可到网上找一个免费的Web服务器供自己测试。

当然,上述URL实际显示时是不会拆行的。从中可稍微看出如何对数据编码并传给CGI。至少有一件事情能够肯定——空格是不允许的(因为它通常用于分隔命令行参数)。所有必需的空格都用“+”号替代,每个字段都包含了字段名(具体由HTML页决定),后面跟随一个“=”号以及正式的字段数据,最后用一个“&”结束。

到这时,大家也许会对“+”,“=”以及“&”的使用产生疑惑。假如必须在字段里使用这些字符,那么该如何声明呢?例如,我们可能使用“John & MarshaSmith”这个名字,其中的“&”代表“And”。事实上,它会编码成下面这个样子:

John+%26+Marsha+Smith

也就是说,特殊字符会转换成一个“%”,并在后面跟上它的十六进制ASCII编码。

幸运的是,java有一个工具来帮助我们进行这种编码。这是URLEncoder类的一个静态方法,名为encode()。可用下述程序来试验这个方法:

//: Encodedemo.java

// Demonstration of URLEncoder.encode()

import java.net.*;

public class EncodeDemo {

public static void main(String[] args) {

String s = "";

for(int i = 0; i < args.length; i++)

s += args[i] + " ";

s = URLEncoder.encode(s.trim());

System.out.println(s);

}

} ///:~

该程序将获取一些命令行参数,把它们合并成一个由多个词构成的字串,各词之间用空格分隔(最后一个空格用String.trim()剔除了)。随后对它们进行编码,并打印出来。

为调用一个CGI程序,程序片要做的全部事情就是从自己的字段或其他地方收集数据,将所有数据都编码成正确的URL样式,然后汇编到单独一个字串里。每个字段名后面都加上一个“=”符号,紧跟正式数据,再紧跟一个“&”。为构建完整的CGI命令,我们将这个字串置于CGI程序的URL以及一个“?”后。这是调用所有CGI程序的标准方法。大家马上就会看到,用一个程序片能够很轻松地完成所有这些编码与合并。

cgi java编程_Java的CGI数据编码改如何编写相关推荐

  1. java编程_Java编程和C语言的比较

    很多人都拿Java编程和c语言相比较,那么今天小编就来先说说个人理解吧,新手学习Java很简单,上手也很容易,只需要会拼音就可以,简单而且没有门槛,而c语言学习成本高,更需要投入较大的精力,才能有一个 ...

  2. 圆周率 java编程_Java编程中实现计算圆周率的方法

    想在JAVA编程中实现计算圆周率其实挺简单的,下面我们就来介绍2种Java编程中实现计算圆周率的方法,一起来了解下其中的详情吧. 方法一:割圆法 计算公式为: π≈3*2^n*y_n 其中,n代表割圆 ...

  3. udp java 编程_JAVA 网络编程之UDP编程

    多线程,网络编程,反射,集合是java语言的重头戏,其中反射是java一切框架的基石. 客户端: SocketAddress sa =new  InetSocketAddress("10.1 ...

  4. 猜数字游戏java编程_Java编写猜数字小游戏

    本文实例讲述了java实现的简单猜数字游戏代码.分享给大家供大家参考. 以下是Java语言写的一个猜数字小游戏引用片段: import java.text.SimpleDateFormat; impo ...

  5. http java编程_Java编程:发送HTTP请求到服务器

    当Java程序需要向服务器发送请求或读取服务器数据时,使用URLConnection类是比较好的选择.URLConnection类封装了与服务器互动操作的方法,通过它可以建立与服务器的远程连接,检查服 ...

  6. 消灭泡泡糖游戏java编程_JAVA面向对象编程课程设计——泡泡堂

    ###一.成员介绍 姓名|任务分配|个人博客链接 --|:--:|--: 张一弛(组长)|GUI设计.游戏界面相关类实现.阿里巴巴扫描纠错.团队博客编写|在做了,在做了,下次一定 王江鸿|Box类.B ...

  7. 自由落体java编程_java模拟自由落体运动源代码

    简单做了一个 import java.awt.borderlayout; import java.awt.button; import java.awt.color; import java.awt. ...

  8. 质量不同的球java编程_Java 实现小球碰撞GUI

    最后一次更新于2019/07/08 修复问题: 错误输入未提醒问题 碰撞小球的图形重叠问题 高速小球越界问题 感谢 大一暑假拜读学姐的一篇文章:我说这是一篇很严肃的技术文章你信吗,本篇在她的基础上加以 ...

  9. 模拟斗地主游戏java编程_java实现模仿斗地主发牌

    本文实例为大家分享了java斗地主发牌的具体代码,供大家参考,具体内容如下 分析 这是一个模仿斗地主发牌的例子: 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 用0~53分别对应相应的花色和牌面 ...

最新文章

  1. Hibernate 事务总结
  2. Linq之select子句
  3. 【网页设计】框架的高度随框架里面的内容的多少而改变——转
  4. Cambridge center for digital innovation at judge business school
  5. OpenGL编程指南1:OpenGL简介
  6. Maven精选系列--继承与聚合
  7. Available Packages更换国内源后,仍显示为nothing to show
  8. 优化理论03----优化导论和无约束问题的最优条件、优化问题的类型、局部、全局和严格优化、梯度和Hessian 黑塞矩阵和方向导数、无约束问题的最优条件
  9. 指数/对数/WIN10计算器
  10. Presto SQL 时间日期函数
  11. 西南科技大学OJ题 11 And 11! 0259
  12. 安装Flash Builder4.6遇到的问题
  13. 读书笔记202208 TRC2010 Multi-agent model predictive control of signaling split in urban traffic networks
  14. 由两个曲面确定的交线的切向量求解
  15. 【金融市场基础知识】——金融市场体系
  16. 20210406森林里的兔子
  17. (转)一个初学者RHCE学习考试之路
  18. iqooneo系统升级好不好_vivo iQOO手机系统更新好吗?
  19. 直播播放器API(播放器调用方法、参数、接口和事件)
  20. 算法4:数列极差问题(贪心算法)

热门文章

  1. 再等等!华为折叠屏手机Mate X预计在7月底至8月初开售
  2. 2000元档855旗舰来了 网友:都过时了,哪有人买
  3. 泡面比泡MM好的16个理由
  4. Linux的shell编程(一)
  5. 2014年去哪儿网笔试题--给定一个整型数组,对这个整型素组排序,使得按序拼接数组各元素得到的值最小
  6. nodejs实践录:按行处理文件数据的示例
  7. mysql用的sql标准_标准SQL语言的用法_MySQL
  8. simulink和psim仿真结果不同_(格麟倍)航空航天零件硬铬电镀工艺专业仿真评估工具...
  9. pandas 读取csv_「技巧」Pandas常见的性能优化方法
  10. 【Spark】Spark 报错 error writing stream metadata exitcode=1073741515