PHP头条
热点:

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

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

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

package calculator;
public class CalculatorBean implements 
java.io.Serializable {
 private float result;
 public CalculatorBean(){ this.result = 0.0f; }
public float addAB(float a, float b)
   { this.result = a+b; return result; }
 public float subAB(float a, float b)
   {this.result = a-b; return result; }
 public float mplAB(float a, float b)
   { this.result = a*b; return result;}
 public float divAB(float  a, float b)
   { this.result = a/b; 
return result;public float getResult(){
   return this.result;
   }
}

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

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

<?php 
require_once("java/Java.inc");
$session = java_session();

if(is_null(java_values($calcinstance=$session->get("calculatorInstance")))) {
  $session->put("calculatorInstance", $calcinstance=new Java("calculator.CalculatorBean"));
}

$result = 0;
$opr = "none";
$term_1 = 0;
$term_2 = 0;

if(isset($_POST['operationName'])) { $opr = $_POST['operationName']; }
if(isset($_POST['term1Name'])) { $term_1 = $_POST['term1Name']; }
if(isset($_POST['term2Name'])) { $term_2 = $_POST['term2Name']; }
 
if(strcmp($opr,"none") != 0)
   {   
   if(strcmp($opr,"+") == 0)
     { $result = java_values($calcinstance->addAB($term_1,$term_2)); }
   
   if(strcmp($opr,"-") == 0)
     { $result = java_values($calcinstance->subAB($term_1,$term_2)); }
     
   if(strcmp($opr,"*") == 0)
     { $result = java_values($calcinstance->mplAB($term_1,$term_2)); }    
     
   if(strcmp($opr,"/") == 0)
     { $result = java_values($calcinstance->divAB($term_1,$term_2)); }  
   } else {
          $result = 0;
          $opr = "none";
          $term_1 = 0;
          $term_2 = 0;
          }   ?>
<html>
 <head>
  <title>Simple Calculator</title>
 </head>

 <script type="text/javascript">
  function numbers(objjs){
  
  if(objjs == "=")
     {
     if(document.getElementById("term2ID").value == 0)
       {document.getElementById("term2ID").value = document.getElementById("valuefieldID").value;}
     document.getElementById("valuefieldID").value = "";      
     document.calcForm.submit(); 
     } else if((objjs == "+")||(objjs == "-")||(objjs == "*")||(objjs == "/"))
                {       
                document.getElementById("operationID").value = objjs;
                if(document.getElementById("valuefieldID").value == "")
                   { document.getElementById("valuefieldID").value = 
                               document.getElementById("term1ID").value; }
                     else { document.getElementById("term1ID").value = 
                               document.getElementById("valuefieldID").value; }
                document.getElementById("term2ID").value = 0;
                document.getElementById("valuefieldID").value = "";     
                } else {
                       if(document.getElementById("valuefieldID").value == 0) { 
                               document.getElementById("valuefieldID").value = ""; }
                       var calcValue = document.getElementById("valuefieldID").value;
                       calcValue = calcValue + objjs;
                       document.getElementById("valuefieldID").value = calcValue;
                       }    
   }
  
  function resetCalc(){
   document.getElementById("valuefieldID").value = "";
   document.getElementById("operationID").value = "none";
   document.getElementById("term1ID").value = 0;
   document.getElementById("term2ID").value = 0;
   document.calcForm.submit(); 
  }
 </script>
 
<body>
  <form name="calcForm" action="<?php echo $PHP_SELF ?>" method="post">
   <table>
    <tr>
     <td align="right" colspan="4">
      <input align="right" id="valuefieldID" type="text" value="<?php echo $result; ?>" disabled>
     </td>
    </tr>    
    <tr>
     <td>
      <input type="button" value="1" onclick="numbers(1);">
     </td>
     <td>
      <input type="button" value="2" onclick="numbers(2);">
     </td>
     <td>
      <input type="button" value="3" onclick="numbers(3);">
     </td>
     <td>
      <input type="button" style="background-color:#cc0000;color:#ffffff" 
       value="+" onclick="numbers('+');">
     </td>
    </tr>
    <tr>
     <td>
      <input type="button" value="4" onclick="numbers(4);">
     </td>
     <td>
      <input type="button" value="5" onclick="numbers(5);">
     </td>
     <td>
      <input type="button" value="6" onclick="numbers(6);">
     </td>
     <td>
      <input type="button" style="background-color:#cc0000;color:#ffffff" 
       value="-" onclick="numbers('-');">
     </td>
    </tr> 
    <tr>
     <td>
      <input type="button" value="7" onclick="numbers(7);">
     </td>
     <td>
      <input type="button" value="8" onclick="numbers(8);">
     </td>
     <td>
      <input type="button" value="9" onclick="numbers(9);">
     </td>
     <td>
      <input type="button" style="background-color:#cc0000;color:#ffffff" 
       value="*" onclick="numbers('*');">
     </td>
    </tr> 
    <tr>
     <td>
      <input type="button" value="0" onclick="numbers(0);">
     </td>    
     <td>
      <input type="button" value="=" onclick="numbers('=');">
     </td>
     <td>
      <input type="button" style="background-color:#000000;color:#ffffff" 
       value="C" onclick="resetCalc();">
     </td>
     <td>
      <input type="button" style="background-color:#cc0000;color:#ffffff" 
       value="/" onclick="numbers('/');">
     </td>
    </tr>  
   </table>
   
   <input id="operationID" name="operationName" type="hidden" value="<?php echo $opr; ?>">
   <input id="term1ID" name="term1Name" type="hidden" value="<?php echo $result; ?>">
   <input id="term2ID" name="term2Name" type="hidden" value="<?php echo $term_2; ?>">
  </form> 

</body>
</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,回车,你可能会看到如图所示的那样一个结果:

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这两门高级编程语言之间搭起了一座互通的桥梁,如果你认为这个技术对你的项目有帮助,那就不要犹豫了,动手开干吧!


  1. Java、.Net、PHP、Ruby优劣势概览
  2. 专题: PHP开发基础入门
  3. Java学习中应该深入理解的一些重点


www.phpzy.comtrue/php/18485.htmlTechArticle一个在PHP脚本中的Java类示例 现在你已经知道了PHP/Java桥的基础知识了,可以着手开发自己的第一个PHP/Java应用程序了,这里举的例子比较简单,它是一个...

相关文章

PHP之友评论

今天推荐