Я пытаюсь запустить java-программу, используя php-скрипт.
Во-первых, 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 в свой класс и передать свойства, подобные аргументам в строке comand, поэтому в конце это должно выглядеть так:
Это код, который вы должны выполнить на php
$output = shell_exec('java SalesTax 10.0 20.0');
Где SalesTax – ваш класс java, 10.0 – первый аргумент, а 20.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 или сделайте системный вызов
выставить свою Java-логику через веб-сервис
Не делай этого! Если ваш опубликованный код – это все, что происходит, просто перепишите форматирование в php или напишите все в java.
вероятно, какой-то другой странный способ
Поэтому, как только вы выберете путь для своего материала на стороне сервера, если вы хотите отображать результаты без перезагрузки страницы, вы захотите использовать некоторые javascript и, скорее всего, некоторые jQuery.ajax
или, возможно, некоторые jQuery('.target-area').load
.