当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP和Java 集成开发详解分析 强强联合

PHP
利用discuz实现PHP大文件上传应用实例代码
php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码
php在字符串中查找另一个字符串
php下HTTP Response中的Chunked编码实现方法
PHP实现定时生成HTML网站首页实例代码
PHP下一个非常全面获取图象信息的函数
PHP strtr() 函数使用说明
php 删除无限级目录与文件代码共享
php AJAX实例根据邮编自动完成地址信息
php miniBB中文乱码问题解决方法
cmd下运行php脚本
PHP 遍历XP文件夹下所有文件
php 移除数组重复元素的一点说明
discuz论坛 用户登录 后台程序代码
Optimizer与Debugger兼容性问题的解决方法
Zend Studio 无法启动的问题解决方法
php 页面执行时间计算代码
php smarty的预保留变量总结
php获取网页内容方法总结
php读取msn上的用户信息类

PHP和Java 集成开发详解分析 强强联合


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-12   浏览: 278 ::
收藏到网摘: n/a

很久以前,有人从www上看到看到天空上一个很亮的亮点,它就是Java语言,与此同时,在另一个地方一位梦想家也看到了一个亮点,它就是PHP. 时间一天天过去,这两个亮点也变得越来越亮,很快,它们受到了编程者的喜欢,于是有人有疑问了:要是它们两者相遇,会发生什么事情?有没有可能将它们的强项结合在一起呢?
尝试在PHP和Java之间搭建一座桥梁,利用这座桥梁在这两个实体之间建立起一个沟通渠道,在这座桥梁的帮助下,你可以在Java中开发类,然后在PHP中调用它们的方法,同样,在你的Java桌面或Web应用程序中也可以使用PHP脚本。
在这篇文章中,你将会学到如何:
◆安装和配置PHP/Java桥
◆在PHP脚本中使用Java类
◆在Java类中使用PHP脚本
◆在JSP页面中使用PHP脚本
那我们开始吧!
安装和配置PHP/Java桥
最新的PHP/Java桥zip包可在http://sourceforge.net/projects/php-java-bridge/下载到,安装过程依赖于选择哪个Java平台通过这座桥与PHP脚本交互。
◆对于J2SE,安装非常简单:
◆安装J2SE 1.6或更高版本
◆安装PHP 5.1.4或更高版本
◆解压php-java-bridge_5.2.2_j2ee.zip包
从命令提示符进入刚刚解压后的目录,输入:
?>java ?classpath JavaBridge.war TestInstallation
在这个文件夹下,你应该看到一个ext目录,它下面包括四个.jar文件,拷贝其中的JavaBridge.jar 和php-script.jar到你的J2SE安装目录下的ext文件夹(通常是{JAVA_HOME}/jre/lib/ext)。
对于J2EE,要执行下列安装步骤:
将JavaBridge.war文件拷贝到你的J2EE服务器或servlet引擎(Tomcat,Resin等)下的auto_deploy文件夹。
根据你的应用程序重命名该文件,然后重启J2EE服务器,等待自动部署进程创建与该.war文件相关的目录,在这个例子中,这个应用程序叫做appName.war。
从浏览器测试新的应用程序,输入:http://localhost:8080/appName,然后点击test.php。
如果你的J2EE服务器运行在不同的主机和端口好,参数要做相应的修改。
注意:如果你想在Apache或IIS上运行J2EE/PHP应用程序,将包括appName的目录拷贝到Apache/IIS的文档根目录下。
很久以前,有人从www上看到看到天空上一个很亮的亮点,它就是Java语言,与此同时,在另一个地方一位梦想家也看到了一个亮点,它就是PHP.
首先,你必须要知道PHP/Java桥为在PHP脚本中集成Java类创建了哪些特殊的函数(PHP类),这些函数包括:
◆java:它允许你访问给定名称的Java类型,如:
◆java("java.lang.System")->getProperties();
◆java_autoload:它允许你在当前的PHP脚本中载入一套Java库,如:
◆java_autoload("my_1.jar;my_2.jar");
◆java_cast:它允许你将一个Java对象转换成一个PHP值,如:
$mystr=new java("java.lang.String","9");$phpnr=java_cast($mystr,"integer");echo $ phpnr;
◆java_is_null:你可以使用它检查值是否为空,如:
◆java_is_null(java("java.lang.System")->;getProperty("my_prop"))
◆java_session:你可以使用它返回一个会话句柄,如:
$session = java_session();
◆java_values:你可以使用它评估对象和提取其内容(仅当这个操作是可能的时候),如:
$result = java_values($calcinstance->addAB($term_1,$term_2));
为了使用这些函数,你的PHP应用程序必须包含对应的PHP类,最重要的类是Java.inc,在目录appName/java下有完整的类列表,通过Java.inc,你可以获得Java类的实例,如:
$calcinstance=new Java("calculator.CalculatorBean");
作者提醒:在PHP/Java桥的安装目录/documentation/API下有更多的函数和它们的详细信息。在PHP脚本中使用Java类
在Java类中使用PHP脚本
为了在Java应用程序中调用PHP方法,你必须对Java API非常熟悉,这个API最重要的类是:
javax.script.ScriptEngineManager:这个类扩展了java.lang.Object类,并且为ScriptEngine类提供了实例化机制。
javax.script.ScriptEngine:这是一个Java接口,包括了每个Java ScriptEngine中期望的完整功能的函数,它是通过如AbstractScriptEngine, InteractivePhpScriptEngine, InvocablePhpScriptEngine, InvocablePhpServletScriptEngine, PhpScriptEngine,和 PhpServletScriptEngine这些类实现的。
?
javax.script.Invocable:这个接口提供了一个函数允许java应用程序在脚本编译器下调用中间层代码。
作者提醒:在/documentation/server/documentation/API目录下有更多的类及其详细信息。
很久以前,有人从www上看到看到天空上一个很亮的亮点,它就是Java语言,与此同时,在另一个地方一位梦想家也看到了一个亮点,它就是PHP.

一个在PHP脚本中的Java类示例

现在你已经知道了PHP/Java桥的基础知识了,可以着手开发自己的第一个PHP/Java应用程序了,这里举的例子比较简单,它是一个PHP脚本,实现了+,-,*,/四个基本操作的计算器,Java将会是这个应用程序的核心引擎,因为计算结果是由一个叫做CalculatorBean的Java类提供的,换句话说就是PHP将会把运算对象传递给Java函数,然后接收计算结果,并将结果显示给用户。

CalculatorBean类为运算符定义了四个函数,为返回结果定义了一个函数,完整的代码参考

http://javaboutique.internet.com/tutorials/thebridge/listing1.html。

当你编译这个Java源代码时,结果会产生一个叫做calculator.jar的.jar文件,将这个文件拷贝到appName/WEB-INF/lib目录。

接下来就可以编写PHP脚本来调用前面的Java类了,使用前面描述的函数,你可以编写一个calculator.php文件,参考

http://javaboutique.internet.com/tutorials/thebridge/listing2.html。

将calculator.php放如appName目录,如果你在Tomcat服务器下测试

(localhost:8080),在浏览器的地址栏输入:

http://localhost:8080/appName/calculator.php,回车,你应该会看到如图1所示的页面:

JSP页面中的PHP脚本示例

假如你想使用PHP的随机函数在0和最大值之间获得一个随机数,你可以象下面这样使用ScriptEngine.

以下为引用的内容:

<%
javax.script.ScriptEngine e =
php.java.script.EngineFactory.getInvocablePhpScriptEngine
(this, application, request, response);
e.getContext().setWriter(out);

e.eval ("<?php function randomNumber($maxim) { return rand(0,java_values($maxim)); }; ?>");

javax.script.Invocable i = (javax.script.Invocable) e;

Object result = null;
result = i.invokeFunction("randomNumber", new Object[]{new Integer(100)});

e.eval ((java.io.Reader)null); // flush the output generated by invokeXXX

out.println("Random number printed from the servlet: " + result);
%>


在浏览器地址栏中输入:http://localhost:8080/appName/random.jsp,回车,你可能会看到如图所示的那样一个结果:


很久以前,有人从www上看到看到天空上一个很亮的亮点,它就是Java语言,与此同时,在另一个地方一位梦想家也看到了一个亮点,它就是PHP.

Java桌面应用程序中的PHP脚本

这个任务使用javax.script.ScriptEngineManager 和 javax.script.ScriptEngine类很容易就实现了,http://javaboutique.internet.com/tutorials/thebridge/listing3.html显示了一个和前面功能一样的J2SE/PHP应用程序,你可以在命令提示符下测试这个应用程序:

以下为引用的内容:

?gt;java –classpath {place here the application classpath} Javaphp


使用jrunscript工具运行PHP脚本

Java自带了一个叫做jrunscript的工具,使用它可以从Java中向PHP脚本赋值,如:

jrunscript -l php {phpFile}.php

如下面的Hello.php脚本:

<?php
echo 'Hello';
?>


可以像下面这样运行jrunscript:

以下为引用的内容:

..> jrunscript -l php Hello.php


更好地工作

本文仅对PHP/Java桥做了一个简单的介绍,希望对你有所帮助,PHP/Java桥在PHP和Java这两门高级编程语言之间搭起了一座互通的桥梁,如果你认为这个技术对你的项目有帮助,那就不要犹豫了,动手开干吧!