如何从Java servlet运行外部命令?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何从Java servlet运行外部命令?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2338字,纯文字阅读大概需要4分钟。
内容图文
![如何从Java servlet运行外部命令?](/upload/InfoBanner/zyjiaocheng/655/bfbb227fb2ca430cbb4cc6143dc4192e.jpg)
我正在开发一个小型Web应用程序,该应用程序请求用户输入并将该输入作为服务器端计算机上外部程序的命令行参数传递.
public class WorkflowServlet extends HttpServlet
public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException {
String username = request.getParameter( "username" );
String workflow = request.getParameter( "workflow" );
String preInflation = request.getParamater( "preInflation" );
String email = request.getParamater( "email" );
try {
executeShellCommand( "java ClusterProcess " + username + " "
+ workflow + " " + preInflation + " " + email );
} catch ( Exception e ) {
response.sendRedirect( "WorkflowAction.jsp" ); return;
}
response.sendRedirect( "WorkflowInProgress.jsp" );
}
}
public static void executeShellCommand( String command ) {
Runtime.getRuntime().exec( command.split( " " ) ).waitFor();
}
}
没有异常被抛出-它似乎什么也没做.即使我将诸如“ touch test.txt”之类的非常简单的内容传递给executeShellCommmand,它也不会执行任何操作.我可以通过命令行手动成功运行命令.
我必须做什么?
解决方法:
通过不捕获输入流或错误流,您将缺少流程中的潜在反馈.我改写了以下代码(超出了我的IDE的舒适性),这是我以前编写的内容,因此如果出现明显的错误,我深表歉意.
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
...
String[] commands = {"/usr/bin/touch", "/home/blah/test.txt"};
//this could be set to a specific directory, if desired
File dir = null;
BufferedReader is = null;
BufferedReader es = null;
try
{
Process process;
if (dir != null)
process = Runtime.getRuntime().exec(commands, null, directory);
else
process = Runtime.getRuntime().exec(commands);
String line;
is = new BufferedReader(new InputStreamReader(process.getInputStream()));
while((line = is.readLine()) != null)
System.out.println(line);
es = new BufferedReader(new InputStreamReader(process.getErrorStream()));
while((line = es.readLine()) != null)
System.err.println(line);
int exitCode = process.waitFor();
if (exitCode == 0)
System.out.println("It worked");
else
System.out.println("Something bad happend. Exit code: " + exitCode);
} //try
catch(Exception e)
{
System.out.println("Something when wrong: " + e.getMessage());
e.printStackTrace();
} //catch
finally
{
if (is != null)
try { is.close(); } catch (IOException e) {}
if (os != null)
try { es.close(); } catch (IOException e) {}
} //finally
内容总结
以上是互联网集市为您收集整理的如何从Java servlet运行外部命令?全部内容,希望文章能够帮你解决如何从Java servlet运行外部命令?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。