2015-04-07 31 views
0

我想要做的是創建一個可以調用我的Python代碼的jsp頁面。我試圖在jsp中將我的Python代碼作爲系統函數調用。我正在創建此頁面,以便從另一個jsp頁面對該頁面進行跨域調用。創建系統調用以在jsp文件中運行我的python代碼

誰能告訴我如何爲我的Python代碼進行系統調用? 我爲我的Python代碼在終端上執行運行下面的命令:

[email protected]:/folder # python p111.py 

我嘗試下面的代碼

<HTML> 
<BODY> 
Hello! The time is now 
<script> 
Process qq=Runtime.exec(new String[] { "./dsapce/webapps/jspui/p111.py", "p111.py", }, null, new File("./dsapce/webapps/jspui/p111.py")); 
qq.waitFor(); 
</script> 
</BODY> 
</HTML> 

一些不正確的..

回答

0

看看Java的Runtime.exec()ProcessBuilder如果你需要更好的東西。

但也看看Jython。它允許您在 Java中運行Python代碼

避免將業務邏輯放入JSP中;它通常在—上皺起了眉頭,它們對模板更好。在Servlet中輸入類似的轉發代碼。

下面是一個示例,但您必須確保可以找到python。你可能要忍受的絕對路徑,而不是僅僅"python"

Runtime.exec(new String[] { "python", "p111.py", }, null, new File("./path/where/p111/lives")); 

如果Java不是root運行(這不應該是),但是Python有(這可能是不應該) ,這樣的效果會更好,但它是依賴於操作系統的:

Runtime.exec(new String[] { "sudo", "python", "p111.py", }, null, new File("./path/where/p111/lives")); 

這些返回Process對象。如果您想等待Python完成並查看操作是否成功,請執行process.waitFor()並檢查值。如果你想抓住輸出或提供輸入,你需要做process.getInput/Output/ErrorStream()

如果此腳本頻繁運行,並且快速完成並且您關心性能,那麼這是一個糟糕的模型,因爲流程創建非常昂貴。

+0

ProcessBuilder b = new ProcessBuilder(「root @ user:/ folder#python p111.py」);將工作?或Runtime.getRuntime()。exec(「root @ user:/ folder#python p111.py」);將工作? – Aliya

+0

增加了更多信息。 –

+0

' 您好!現在的時間是 '這是我的jsp代碼,但是python文件沒有執行。 – Aliya

相關問題