2011-12-08 6 views
1

저는 JSP와 런타임을 처음 사용합니다. 웹 응용 프로그램 페이지의 단추로 스크립트를 실행할 수 있어야합니다. 스크립트의 위치는런타임 오류

cd ejbca_4/bin 
./ejbca.sh batch 

누군가가/홈/사용자/빈에서의 .sh 파일에이 명령을 넣어 추천/홈/사용자/ejbca_4/bin에 그것을 실행하는 것입니다. 나는 다음과 같은 내용으로 /home/user/bin/test.sh 생성 :

#!/bin/bash 
cd ejbca_4/bin 
./ejbca.sh batch 

나는 JSP 페이지

<input type="submit" name="Generate test" value='<c:out value="Generate Test"/>' tabindex="<%=tabindex++%>" 
      onClick='generate()'> 

function generate() { 
    Process proc = Runtime.getRuntime().exec("test.sh",null,null); 
} 

이 추가하지만, 어떻게 든이 경우는 NumberFormatException했다. 프로세스 프로 시저를 제거했습니다.

function generate() { 
    Runtime.getRuntime().exec("test.sh",null,null); 
} 

아니요 NumberFormatException도 없습니다. 그러나 스크립트는 실행되지 않았습니다. 아무도 어떻게해야하는지 설명 할 수 있습니까?

답변

2

코드가 서버에서 실행중인 부분과 클라이언트 (브라우저)에서 실행중인 부분을 이해해야합니다. 그리고 서버에서 실행해야하는 코드를 절대로 클라이언트 측에 배치하면 안됩니다. 분명히 작동하지 않기 때문입니다. 서버에서 실행해야합니다 귀하의 경우, 코드에서

은 다음과 같습니다

Runtime.getRuntime().exec("test.sh", null, null); 
그것은 <% %>

그리고 클라이언트 측 코드에 둘러싸여해야

:

<input ... onclick='generate()'> 
<script> 
    function generate() { 
     // tells the server to do 'Runtime.getRuntime().exec(...)' 
    } 
</script> 
+0

생성]() 함수는 스크립트에 있습니다. 그래서 .jsp에는 두 가지가 있어야합니다. Runtime.getRuntime(). exec ("test.sh", null, null); 스크립트? – Scar

+0

이 답변은 기술적으로 정확합니다. "scriptlet"이라고하는 서버 측 자바 코드를 실행해야한다면 infgeoax가 말한 것처럼 <% %> 안에 들어갑니다. 그러나 쉘 스크립트를 실행하기 위해 Java를 실행하는 것은 무서운 일입니다. Java 웹 개발의 10 년 동안 나는 이것을 한 사람을 보지 못했습니다. –

0

귀하의 function generate()은 무엇입니까? 어떤 종류의 태그에 있는지는 알 수 없지만 자바 코드를 호출하려고 할 때 자바 스크립트처럼 보입니다.

지금은 onClick이 클라이언트 측에서 처리되며 서버 측에서 런타임 호출을 호출하는 방법이 필요합니다. 지금 당장은 클라이언트가 이런 일을 할 경로가 없습니다. 서버가 런타임 호출을 실행하게하는 일종의 콜백 (AJAX 사용 가능)을 수행해야합니다. JSP에 남아 있으면 <% ... %>으로 둘러싸여 있어야 Java 코드로 평가할 수 있습니다.

JSP가 처음이라면 오라클의 웹 티어 튜토리얼 http://docs.oracle.com/javaee/5/tutorial/doc/bnadp.html으로 이동하는 것이 좋습니다.