编写 PHP 为程序逻辑代码的 SWING客户端

首先,需要确保目的程序 ,php能独立执行。能输出。

纯粹只是因为用java写复杂逻辑代码比较蛋疼,或者说,因为有现成的代码是php的,重写需要花大量的时间。所以以java 的命令形式进行调用。

步骤 :

1.php代码一份

2.php运行环境一份

2.1 如果非指定形式调用。默认配置文件需要为 : php.ini ,不能有别名

2.2 配置内部内容需要清理不必要的配置,引用路径调整

2.3 单独执行一个文件,调整到不出问题,能正常执行为止

c:ooxxphp.exe “c:aabbindex.php”

3.用java Swing 绘制一个壳,用myeclipse ,前提需要有java 基础,或类似的winform基础比较容易上手,不然适当进行学习即可.

4.用exe4j 打包

参考:http://blog.martoo.cn/?p=613

 

补充相关代码:

一、命令调用

try {
			String php_exe = System.getProperty("user.dir")
					+ "/php/php/php.exe";
			String php_file = System.getProperty("user.dir")
					+ "/php/exec.php";
			if (!filexists(php_exe)) {
				JOptionPane.showMessageDialog(null,
						"The php.exe file is not exist");
				System.exit(0);
			}
			if (!filexists(php_file)) {
				JOptionPane
						.showMessageDialog(null, "The php file is not exist");
				System.exit(0);
			}

			String shell = php_exe + " "" + php_file + """;
			Process ps = Runtime.getRuntime().exec(shell);
			ps.waitFor();
			BufferedReader br = new BufferedReader(new InputStreamReader(
					ps.getInputStream()));
			StringBuffer sb = new StringBuffer();
			String line;
			String contentempty = "";
			while ((line = br.readLine()) != null) {
				contentempty += line;
				sb.append(line).append("n");
			}
			String result = sb.toString();
			if (!contentempty.isEmpty()) {
				recordinfo(result);
				JOptionPane.showMessageDialog(null, result);
			}
		} catch (Exception e) {
			recordinfo(e.getMessage());
		}

 

 

	public static void recordinfo(String log) {
		String path = System.getProperty("user.dir") + "/php_log.txt";
		try {
			FileWriter fw = new FileWriter(path, true);
			PrintWriter pw = new PrintWriter(fw);
			pw.println(log);
			pw.close();
			// bw.close();
			fw.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

 

public static boolean filexists(String filename) {
		return new File(filename).exists();
}

 

输出信息可直接用于弹出框提示。

也可以记录为日志。

二、通讯操作

使用java  properties

properties  保存和读取代码

Properties prop = new Properties();
			FileInputStream fis;
			FileOutputStream fos;
			try {
				fis = new FileInputStream(System.getProperty("user.dir")
						+ "/php/prop.properties");

				fos = new FileOutputStream(System.getProperty("user.dir")
						+ "/php/prop.properties");

				prop.load(fis);
				prop.setProperty("csvpath", jfc.getSelectedFile()
						.getAbsolutePath());
				prop.save(fos, " config file");
				// System.out.println(prop.getProperty("a"));
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

 

php 获取代码:

参考:http://blog.martoo.cn/?p=825

三:常用功能代码

文件选择框

JFileChooser jfc = new JFileChooser();
if (jfc.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
        //获取路径
	System.out.println(jfc.getSelectedFile().getAbsolutePath());
}

弹出提示框

				JOptionPane
						.showMessageDialog(null, "The php file is not exist");

补充 : 意大利操作系统(win7 64x)关闭不了问题

	Process ps;
		try {
			ps = Runtime.getRuntime().exec("taskkill /f /im xxx.exe");
			ps.waitFor();
			BufferedReader br = new BufferedReader(new InputStreamReader(
					ps.getInputStream()));
			StringBuffer sb = new StringBuffer();
			String line;
			String contentempty = "";
			while ((line = br.readLine()) != null) {
				contentempty += line;
				sb.append(line).append("n");
			}
			String result = sb.toString();
			if (!contentempty.isEmpty()) {
				recordinfo(result);
				JOptionPane.showMessageDialog(null, result);
			}
		} catch (IOException e2) {
			e2.printStackTrace();
		} catch (InterruptedException xe) {
			xe.printStackTrace();
		}

 

转发请注明出处http://blog.martoo.cn
如有漏缺,请联系我 QQ 243008827