Java 如何从servlet执行python脚本?
我为servlet编写了以下代码:Java 如何从servlet执行python脚本?,java,python,servlets,Java,Python,Servlets,我为servlet编写了以下代码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpSe
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Summarize extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
String str = req.getParameter("txt");
try {
//instead of writing just test.py, write the whole path to the python script it will work perfectly
Process p = Runtime.getRuntime().exec("python test.py");
p.waitFor();
BufferedReader in = new BufferedReader(new InputStreamReader(
p.getInputStream()));
StringBuffer buf = new StringBuffer("");
String line = null;
System.out.println(p.toString());
while ((line = in.readLine()) != null) {
System.out.println(line);
buf.append(line);
}
System.out.println(buf.length());
out.println("this is summarize class");
} catch (Exception e) {
e.printStackTrace();
}
}
}
这段代码不会返回任何东西,但是如果我在一个简单的java类中编写相同的代码,那么代码工作得非常好
我还检查了python脚本,它运行得非常好。有办法解决这个问题吗 更新:
下面的代码现在可以工作了,只需在try语句之后阅读注释即可我建议使用 Jython是Python编程语言在Java中的一个实现,运行在Java虚拟机(JVM)上,而Python的标准实现是用C(CPython)实现的。Python开发人员可以使用它来利用Java社区可用的大量库,这意味着在应用程序中添加一些Java集成 一个例子 来源我推荐使用 Jython是Python编程语言在Java中的一个实现,运行在Java虚拟机(JVM)上,而Python的标准实现是用C(CPython)实现的。Python开发人员可以使用它来利用Java社区可用的大量库,这意味着在应用程序中添加一些Java集成 一个例子
source我必须在servlet doPost()方法中执行,而不是在一个包含main方法的简单类中。你可以在你的servlet中使用jython解释器或命令执行器。我只想从我的servlet运行一个python脚本并初始化输出,你能提供一个代码吗?我必须在servlet doPost()方法中执行,不是在一个有main方法的简单类中,你可以在你的servlet中使用jython解释器或命令执行器。我只想从我的servlet运行一个python脚本并初始化输出,你能提供一个代码吗?
import org.python.util.PythonInterpreter;
import org.python.core.*;
public class SimpleExample {
public static void main(String[] args) throws PyException
{
PythonInterpreter pi = new PythonInterpreter();
pi.set("integer", new PyInteger(42));
pi.exec("square = integer*integer");
PyInteger square = (PyInteger)pi.get("square");
System.out.println(“square: ” + square.asInt());
}
}