分享
 
 
 

JAVA-CGI HowTo

王朝java/jsp·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

1. 简介

由於 Java 的设计方式程式设计师没有简易的方法可以取得系统的环境变数.由於 Java 发展工具 (JDK) 建立的方式,呼叫一个程式必须使用多重表徵(tokens),这和标准的 Html forms/CGI 运作方式不易配合.有一些办法可以克服这些限制,而我就实作了其中一种.详情请见下述.

1.1. 预备知识

我假定你有 HTML 与 CGI 概念的一般知识,而且了解关於你的 HTTP 伺服器的最基本知识.你也应该知道如何写 Java 程式,否则这些都没有意义.

1.2. 这份文件

本文的最新版本可以从此找到: http://www.orbits.com/software/Java_CGI.html.

1.3. 软体套件

本文所提到的软体套件的最新版本可由匿名 FTP 取得ftp://ftp.orbits.com/pub/software/java_cgi-0.4.tgz. 这套件包含本文的 SGML 原始档.

这些套件的散布必须依据 GNU Library General Public License. 本文可依 Linux HOWTO 的版权声明散布.

假如你使用本软体,请将某些参考指向 http://www.orbits.com/software/Java_CGI.html,以便让其它人能找到 Java CGI 的类别.

2. 设定伺服器以执行 Java CGI 程式 (解释篇)

这一节教你安装我的 Java CGI 套件,以及大量的解释,让你能够了解你的行为会导致什麽结果.假如你只想安装程式而不想了解为什麽,直接跳到 设定伺服器以执行 Java CGI 程式 (简略篇).

2.1. 系统需求

本软体应该能在已安装 Java 程式发展工具的任何类 UNIX 的 web 伺服器上安装.我将它装在执行 apache 伺服器的 Debian Linux 系统上.假如你发觉它无法在愕乃欧魃显俗鳎胗胛伊? dhs@orbits.com.

不幸的是,Java 执行时期解译器似乎是吃记忆体的怪物 -- 假如你将使用许多 Java CGI 程式的话你可能要再丢数 MB 的 RAM 到你的伺服器里.

2.2. Java CGI 辅助软体

我写的辅助软体就叫做 Java CGI.你可从 ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz 取得(版本号码可能会改变).

2.3. 解开原始档

找一个合适的目录将套件解开. (假如你还没有标准放置软体的地方,我建议你放在 /usr/local/src.) 用这个指令解开套件:

gzip -dc java_cgi-0.4.tgz tar -xvf -

这会产生一个叫 java_cgi-0.4 的目录.在那里你可以找到本文其它地方提到的档案. (假如版本号码改变了,就改用那套件里的.)

2.4. 决定你的本地目录策略

你必须决定让你的 Java CGI 程式住在那里.一般来说,你会希望放在和你的 cgi-bin 平行的目录.我的 apache 伺服器设定使用 /var/web/cgi-bin 为 cgi-bin 目录,因此我用 /var/web/javacgi 作为放置 Java CGI 程式的地方.你可能不会想让将你的 Java CGI 程式放进某一已存在的 CLASSPATH 目录.编辑 Makefile 来反应你的系统配置.确定你用 root 签入然後执行 make install.这将编译 Java 程式,修改 java.cgi 指令稿以符合你的系统,并且将程式安装进适当的位置.假如你希望拥有本文的 HTML 版本以及一份 HTML 测试文件,改用 make all.

2.5. 测试你的安装

由本套件安装的 HTML 文件叫做 javacgitest.html, javaemailtest.html 以及 javahtmltest.html.假如你在前节使用 make all,它们会放在你於 Makefile 中指定的 WEBDIR 目录中.假如不是,你可以执行 make test 从 javacgitest.html-dist, javaemailtest.html-dist 以及 javahtmltest.html-dist 来建立它们.

当你确定你的安装可以正确运作後,你可能希望从你的 JAVACGI 目录移除 CGI_Test, Email_Test 以及 HTML_Test 类别,还有从 WEBDIR 目录移除 javacgitest.html, javaemailtest.html 以及javahtmltest.html,因为它们会显示应该只有伺服器治理者才看得到的使用者资讯.

3. 设定伺服器以执行 Java CGI 程式 (简略篇)

从ftp://www.orbits.com/pub/software/java_cgi-0.4.tgz. 取回 Java CGI 套件.(版本号码可能会改变.)

用这个指令解开套件:

gzip -dc java_cgi-0.4.tgz tar -xvf -

(假如版本号码改变了,就改用那套件里的.)

修改在新产生的 java_cgi-0.4 目录里的 Makefile 以符合你的系统.

以 root 身份,执行 make install.这将编译 Java 程式,加上你系统特定的资讯并安装许多档案.假如你希望拥有本文的 HTML 版本以及一份 HTML 测试文件,改用 make all.

然後应该就可以用了.

4. 执行一个 Java CGI 程式

4.1. 以 CGI 模式执行 Java 程式的障碍

从 web 伺服器执行 Java 程式有两个主要的问题:

4.1.1. 你不能像一般执行档一样执行 Java 程式

你必需执行 Java 的执行时刻(run-time)解译器并且以命令列的方式提供初始类别(程式执行所需).在一个 HTML form 里面没有办法提供命令列给 web 伺服器.

4.1.2. Java 程式没有一般的方法可以取得环境变数

Java 程式所需的每个环境变数都必需被传入. (在 Java 程式中)没有类似 C 语言的 getenv() 函数.

4.2. 执行 Java CGI 解决问题

为了处理这些困难,我写了一个 CGI 指令稿程式,提供 Java 解译器所需的资讯.

4.2.1. java.cgi 指令稿

这个指令稿治理 HTTP 伺服器与你希望使用的 Java CGI 程式之间的互动.它从 server 端提供的资料中取出你想要执行程式的名称.它将所有的环境变数资料将髹到一个暂存档里.然後,它将这个档案以及程式名称加命令列中,执行 Java 的执行时刻解译器.

java.cgi 指令稿的设定与安装在 决定你的本地目录策略 一节说明.

4.2.2. 从 HTML form 中引发 java.cgi

使用 Java CGI 程式的 HTML form 以下面的方式指定其行为:

<form action="/cgi-bin/java.cgi/CGI_Test" method="POST">

其中 /cgi-bin/ 是你本地端的 CGI 二进位执行档目录, java.cgi 是答应我们从 web 上执行 Java 程式的前端,而 CGI_Test 是一个欲执行的 Java 程式名称的例子.

5. 使用 Java CGI 类别

目前为止支援三个主要类别 -- CGI, Email 以及 HTML.我正在考虑分别加上处理 MIME 格式输入与输出的类别 -- MIMEin & MIMEout.

也有一些用来支援和测试的类别. CGI_Test, Email_Test 以及 HTML_Test 是拿来测试你的安装用的.你也可拿来当做你自己程式中使用这些类别库的起点. Text 类别是 Email 与 HTML 的基底类别.

5.1. CGI

5.1.1. 类别语法

public class CGI

5.1.2. 类别描述

CGI 类别持有的「CGI 资讯」 -- web 伺服器所设定的环境变数以及按下 submit 时由 form 所传送来的名称/数值.所有的资讯都被存放在类别物件 Properties 中.

这个类别位於 ``Orbits.net'' 包装(package)中.

5.1.3. 成员摘要

--------------------------------------------------------------------------------

CGI() // 建构子

getNames() // 取得名称的串列

getValue() // 取得指定名称的值

--------------------------------------------------------------------------------

5.1.4. 请参阅

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有