我正在尝试使用php脚本运行一个java程序。
首先,php显示一个表单,用户在其中输入两个值:价格和销售税率。接下来,它提取值并将其传递给java程序(预编译为.class文件)。
如果java代码正在工作,我不确定输出将打印到哪里。我的最终目标是在html页面中向用户显示结果。
我将文件内容上传到我的网络服务器,并尝试从那里运行它。
更新:
如何使用shell_exec或exec来运行java代码?我需要将参数(price、salesTax)传递给shell_exec。返回的输出存储在哪里?
PHP代码:
> <?php
>
> $salesTaxForm = <<<SalesTaxForm
>
> <form action="SalesTaxInterface.php" method="post">
>
> Price (ex. 42.56):<br>
>
> <input type="text" name="price" size="15" maxlength="15"
> value=""><br>
>
> Sales Tax rate (ex. 0.06):<br>
>
> <input type="text" name="tax" size="15" maxlength="15"
> value=""><br>
>
> <input type="submit" name="submit" value="Calculate!">
>
> </form>
>
> SalesTaxForm;
>
> if (! isset($submit)) :
>
> echo $salesTaxForm;
>
> else : $salesTax = new Java("SalesTax");
>
> $price = (double) $price; $tax = (double) $tax;
>
> print $salesTax->SalesTax($price, $tax);
>
> endif;
>
> ?>
Java代码:
import java.util.*; import java.text.*; public class SalesTax { public String SalesTax(double price, double salesTax) { double tax = price * salesTax; NumberFormat numberFormatter; numberFormatter = NumberFormat.getCurrencyInstance(); String priceOut = numberFormatter.format(price); String taxOut = numberFormatter.format(tax); numberFormatter = NumberFormat.getPercentInstance(); String salesTaxOut = numberFormatter.format(salesTax); String str = "A sales Tax of " + salesTaxOut + " on " + priceOut + " equals " + taxOut + "."; return str; } }
shell exec执行您传递给它的命令。要使用它,您必须向类中添加一个Main方法,并在命令行中传递参数等属性,所以最后应该是这样的:
这是您必须在php上执行的代码
$output = shell_exec('java SalesTax 10.0 20.0');
其中SalesTax是您的java类,10.0为第一个参数,2.0则为第二个参数。
你的主要方法应该是这样的
public static void main(String args[]){
double price = Double.valueOf(args[0]);
double salesTax = Double.valueOf(args[1]);
String output = SalesTax(price,salesTax);
System.out.println(output);
}
这是一个非常简单的实现,您仍然应该添加验证和其他一些东西,但我认为这是主要思想。也许将它移植到php应该更容易。
我希望你觉得这很有帮助
我不是PHP专家,但有几种方法可以做到这一点:
-
使用类似shell_exec的东西或使系统调用
-
通过Web服务公开您的java逻辑
-
不要全做!如果您发布的代码就是全部内容,只需用php重写格式化内容或用java编写全部内容。
-
可能是其他一些奇怪的方式
因此,一旦您为服务器端的内容选择了路径,如果您想在不重新加载页面的情况下显示结果,您将需要使用一些javascript,很可能是一些jQuery.ajax
或jQuery('.target-area').load
。