首页 > 编程技术 > php

PHP4调用JavaBean的摸索

发布时间:2016-11-25 16:33

首先声明,写此文时,我对这个也不懂,只是自己从php.net上下了例子,试着做了一下,而且是在 win2000 apache php4p12配置下. 具体步骤如下: 一、安装好JVM(java virtual machine)(我用的是jdk122)

当然,您不一定要用jdk122,甚至不用jdk,用其它的,比如:
JVM=Kaffe 1.0.4 (as delivered with OS), OS=Redhat Linux 6.1
JVM=Kaffe 1.0.5 (built from source), OS=Redhat Linux 6.1
JVM=IBM 1.1.8, OS=Redhat Linux 6.1
JVM=Blackdown 1.2.2 RC4, OS=Redhat Linux 6.1
JVM=Sun JDK 1.1.8, OS=Windows NT 4/win2000
但是,在这里我只讲我的做法,其它的我没有试过,不要问我,这里要特别注意的是, 根据php官方站点的说明,竟然不支持jdk122 linux
二、设置环境变量
在win2000中"我的电脑"->"属性"->"高级"->"环境变量"
设置JAVA_HOME
为:jdk路径,比如我的jdk122装在e:jspjdk122下,那么就设置为e:jspjdk122
三、下载相关文件(如果您没有的话)
下载地址:http://www.php.net/downloads.php
我下载了:php-4.0.1-Win32-java-jdk122.zip文件,解压后有几个例子,并且有:php_java.dll和php_java.jar文件.
四、配置php.ini文件
[java]
java.class.path=E:PHP4php_java.jar
java.home=E:jspjdk122in
extension=php_java.dll
java.library.path=E:PHP4ext
java.library=E:Program FilesJavaSoftJRE1.2inclassicjvm.dll
以上是我的配置,说明一下,我的php4在e:php4目录下,我的所有扩充的dll文件 放在e:php4ext目录下,当然php_java.dll也就应该copy到这个目录了.最后确认你的 win2000下有jvm.dll文件,如果没有,安装一下visual studio就可以了(我用装了个VC 6,所以不用考虑了)
五、测试
运行phpinfo()就可以看到有"java"了,如果没有,说明你没有成功.它的显示如下:
java
Directive Local Value Master Value
java.class.path
E:PHP4php_java.jar E:PHP4php_java.jar
java.home
E:jspjdk122in E:jspjdk122in
java.library
E:Program FilesJavaSoftJRE1.2inclassicjvm.dll jvm.dll
java.library.path
E:PHP4ext no value
六、测试例子
我用的是下载的文件中包含的例子:jver.php,如果成功,将有如下结果:
Java version=1.2.2
Java vendor=Sun Microsystems Inc.
OS=Windows NT 5.0 on x86
星期三, 七月 19, 2000 at 10:32:53 下午 GMT 08:00


<?php

// created by joe lumbroso
// see some other good php3 scripts
// goto http://www.dtheatre.com/scripts
echo "<font color="red"><blink><b>Pinging</b></blink></font><br>";
$to_ping = "dtheatre.com";
$count = 3;
$psize = 65;
echo " Please be patient, this can take a few moments... <br><br>";
flush();
while (1) {
?>
<pre>
<?
exec("ping -c $count -s $psize $to_ping", $list);
for ($i=0;$i < count($list);$i ) {
print $list[$i]." ";
}
?>
</pre>
<?
flush();
sleep(3);
}
?>


这个问题是当我自已实现了统计计数之后,我想将它的输出用在我的不支持PHP功能的页面中,那么应该如何做呢?主要的解决办法是输出一段javascript脚本即可。这个是很有用的,比如实现动态新闻, 广告轮询,当然这里是讲如何把某个程序的下载计数输出到非PHP页面中去。

  先让我们设想一下:我已经有了一个程序下载计数文件在我的网站上,如../count/download.db。
 
文件格式为:
  索引|文件名提示|链接|计数
注意,这里用"|"线分隔。我采用的是文本文件进行处理。里面可能某一行数据为:
  file1|测试文件1|../download/file1.zip|10
可以看到,下载次数可能已经是10次了。现在我就想把这个10次输出到其它的页面中。
 
  第一步:写Javascript脚本
  很简单:
<script language=javascript" width=100% src="../bin/output.php?id=file1"></script>
  是不是!src后面是指输出的脚本程序,"?"后面是传入脚本的参数。那么output.php应该输出什么数据
才能被执行呢?应该输出javascript语句,如document.write()之类的语句。这样,浏览器就会把output.php
的输出结果看成一段javascript程序再进行处理,就好象直接写的脚本一样,只不过这段脚本是从别的地方
得到的。
 
  好了,知道应该输出什么样的内容了,就可以写php程序了。
 
  第二步:输出结果

<?
$fp=fopen("../count/download.db", "r");
$flag=FALSE;
while(!feof($fp))
{
$line=fgets($fp, 256);
list($index, $title, $url, $count)=split("|", $line);
if (strtolower($index)==strtolower($id))
{
$flag=TRUE;
break;
}
}
fclose($fp);
if ($flag)
{
echo "document.write($count);";
}
else
echo "document.write("not found");";
?>
  这段代码也很简单,但是有几点要说明。先打开一个文件。$flag表示是否找到指定索引的文件记录,
首先置为FALSE。再是一个循环,条件是文件没有结束。
 
  然后是循环体:取出一行文本,长度最好长点。进行字段分割,以"|"为分割符。注意,使用的split函
数是正则表达式,"|"是一个特殊符号用以用""号。然后分别放入相应的变量中。在这里我们真正关心的是
$index和$count。比较输入的参数$id与取出的索引($index)是否相等,如果相等,则将找到标志设为TRUE,
退出循环。否则查找下一行数据。
 
  结束时,关闭文件,根据是否找到标志输出相应的javascript脚本即可。
 
  对于$id的使用,是PHP自动将调用的URL处?id=xxx进行了处理,可以直接使用。也可以使用
$HTTP_GET_VARS[id]。


●简繁转换有四种情况
  汉字转换,分为内码转换和简繁转换。
  内码转换属于简繁转换,但是他主要是在GB码和BIG5码之间转换。
  另外一种简繁转换是在GB码内部的转换。GB码扩展集包含两万多个汉字,自然也存在简繁转化问题。例如,大陆网友从BIG5码繁体字网页用“复制--粘贴”的方法虽然得到的是繁体字文件,但他已经不是BIG5码的字体了。尽管页面的内码是BIG5码,但是经过复制--粘贴,已经变成了GB内码的繁体字,粘贴到“笔记本”时不是乱码,要知道,大陆简体windows系统的笔记本,是不能识别BIG5码的。若要把这繁体字变为简体字,用一般的方法可就不行了。
  所以,不要以为繁体字就都是BIG5码。因此,汉字转换分为四种情况:
  1。GB转BIG5
  2。BIG5转GB
  3。简体字转繁体字(在GBK大陆内码中转换)
  4。繁体字转简体字(同上)
●网页“另存为”的转换特点。利用网页“另存为”转换汉字内码。
  当我们把某个BIG5的网页用“另存为”的方式保存时,你注意看,“保存WEB页”窗口最下方有个“编码”栏,里面至少有三种选择:Unicode(UTF-8),繁体中文(BIG5),简体中文(GB2312)。
本网页的内码是Unicode(UTF-8),所以能够同时显示GB码和 BIG5码汉字。你选择不同的内码保存,就已经进行了内码转换。利用这个特点,我们可以用网页“另存为”转换汉字内码。
●网上在线汉字转换,大多是内码转换。若想把复制下来的GB码繁体字转换为同内码的简体字,或者相反,网上的转换功能显然不足。
●《金山快译》包含两个文件:KConvert.exe和Cjktab32.dll,总共大小才484K,压缩成RAR文件後仅仅235K。可以直接提取出来单独使用。他可以进行上述四种汉字的任意转换。
  我已将金山快译的这两个文件上传,要用的网友可以下载。
金山快译的内码转换(解压可用,无须安装)
■http://202.202.4.200/upload/upfile/gb-big5.rar■
●手工修改个别字
  不过,绝大多数汉字转换软件有个小问题,简体到繁体自动转换时,个别字转换有毛病(一对多的毛病),姓范的范,会转换成模 因为某程序要用输出UTF-8编码..但是原数据是GBK编码的
百度 找了很多有关内码转换的类..但是缺点很多.又不支持GBK TO UTF-8
不过一个一个找还是在PHP官方的FAQ找到了mb_convert_encoding() 该函数要在PHP4.0.6以上才有..听说有的
想关链接: http://cn.php.net/manual/zh/function.mb-convert-encoding.php
做一个GBK To UTF-8
< ?php
header("content-Type: text/html; charset=Utf-8");
echo mb_convert_encoding("
标签:[!--infotagslink--]

您可能感兴趣的文章: