java web中java和python混合使用

利用java web技术展示python算法处理后的数据

工具/原料

  • myeclipse10
  • pycharm+Anaconda2

方法/步骤

  • 首先安装配置好pycharm+Anaconda2 特别的,需要配置好python的环境变量,因为在用java调用python 的时候,需要通过线程调用
  • 测试环境变量是否配置成功 在命令窗口输入python,显示如下则说明配置成功
  • 将写好的python工程代码放置在Anaconda2的Lib目录下面 这里是Anaconda2安装的目录 例如我安装在D:\adt-bundle-windows-x86-20131030\Anaconda2 我的工程文件是content_recommender_core 那么就放在D:\adt-bundle-windows-x86-20131030\Anaconda2\Lib
  • 现在将写好的python文件放置到java web工程上去,这个文件的存放与java web文件的建立类似,所以可以放置在任何路径下,例如我是放在src目录下
  • 放置好所有文件之后,就是到了最关键的时候,那就是需该对应的文件路径 其中最重要的是需该python 代码中的config.py文件的路径 因为工程部署到了tomcat之后,相对的路径就会有些变化,所以需要修改
  • 例如python需要读取的文件是在我的tomcat的/webapps/PythonAndJSP/WEB-INF/classes/com/wtu/xmlpage/course.xml,那么config.py文件中的路径设置应该是../webapps/PythonAndJSP/WEB-INF/classes/com/wtu/xmlpage/course.xml
  • 为了达到路径的统一化修改,建议使用相对路径,那么在run.py文件中,可以这样设置路径,之后的路径变化,就只要修改config.py文件了 也就是需要引用的文件直接通过变量名引用
  • 所有的工作做好之后,就是测试 测试的主要代码 String path="G:/编译练习/JSP/PythonAndJSP/src/ETS/runS.py"; Process p; String cmdStr="python "+path; try { //执行命令 p = Runtime.getRuntime().exec(cmdStr); //取得命令结果的输出流 InputStream fis=p.getInputStream(); p.waitFor(); //用一个读输出流类去读 InputStreamReader isr=new InputStreamReader(fis); //用缓冲器读行 BufferedReader br=new BufferedReader(isr); String line=null; listCourse=new ArrayList<Course>(); //直到读完为止 while((line=br.readLine())!=null) { String lines[]=line.split("\t"); 其中读取python执行文件的代码路径只能是本地上存放的文件位置,也就是说不能是tomcat上面的文件
  • 9 到这里,所有的工程做完,可以正确运行得到最后的结果了