Java 如何将JSP变量传递给运行时执行器?

Java 如何将JSP变量传递给运行时执行器?,java,jsp,exec,Java,Jsp,Exec,目标:我试图在exec命令中使用2字符串变量作为shell脚本的参数 字符串可以从HTML前端很好地传递,但是exec不允许它们出现在exec字符串中 我错过了什么 <%@page import="java.io.*"%> <%@page import="java.util.*"%> <html> <head> <title> Test</title> <head/> <body> <

目标:我试图在
exec
命令中使用2字符串变量作为shell脚本的参数

字符串可以从HTML前端很好地传递,但是exec不允许它们出现在exec字符串中

我错过了什么

<%@page import="java.io.*"%>
<%@page import="java.util.*"%>

<html>
<head>
    <title> Test</title>
<head/>

<body>
<%
String username, password;

if(request.getParameter("txtUserName") == null)
    username = "";
else
    username = request.getParameter("txtUserName");

if(request.getParameter("txtPassword") == null)
    password = "";
else
    password = request.getParameter("txtPassword");


Runtime r = Runtime.getRuntime();
Process p = null;
String s = null;
String cmd = "/tools/scripts/jspTest.sh";

p = r.exec(cmd + username + password);
InputStreamReader isr = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(isr);
String line = null;
while((line = br.readLine()) != null){
    out.println(line);
}

p.waitFor();
%>

试验

我不知道你说的“不允许”是什么意思,但很明显,你调用脚本的方式行不通

cmd + username + password
这将产生一个字符串,如
/tools/scripts/jspTest.shmyusernameypassword


如果Java试图执行此命令,系统将找不到该命令(除非脚本名中嵌入了用户名/密码)。我认为您可能需要调整传递这些值的方式(作为正确的参数)。

我不知道您所说的“不允许”是什么意思,但很明显,您调用脚本的方式是行不通的

cmd + username + password
这将产生一个字符串,如
/tools/scripts/jspTest.shmyusernameypassword


如果Java试图执行此命令,系统将找不到该命令(除非脚本名中嵌入了用户名/密码)。我认为您可能需要调整传递这些值的方式(作为正确的参数)。

我没有想到这一点。我已更改为
p=r.exec(cmd+“”+用户名+“”+密码)这就成功了。我没有想到这一点。我已更改为
p=r.exec(cmd+“”+用户名+“”+密码)这就成功了。