티스토리 뷰
혼자 뻘짓하다가 해보게 됐다.
자바로 외부파일 실행하는 코드. ㅡ.ㅡ..
1 2 3 4 5 6 7 8 9 10 11 | Runtime rt = Runtime.getRuntime(); String exeFile = "실행할 파일의 경로" ; System.out.println( "exeFile: " + exeFile); Process p; try { p = rt.exec(exeFile); p.waitFor(); } catch (Exception e) { e.printStackTrace(); } |
이 방법의 단점은.. 파일을 로컬영역 안에서만 실행 테스트를 할 수 있다는 거다. 이걸 웹에 연결시키려고 했더니 다른 PC에서 실행 명령을 내리면 그 PC에서 파일이 실행되는 게 아니라, 서버쪽에서 실행 된다는 거.. ;;; 배포를 하고 그 주소로 경로를 써주면 실행이 되겠지..
웹이랑 상관없이 사용한다면 괜찮다.
-------------------------------------------------------
어떤 분의 요청으로 내용을 조금 추가한다.
그 어떤 분의 요청이란, "웹에서 버튼을 클릭하면 서버 컴퓨터에 있는 프로그램이 실행되도록 해달라"라는 것.
아주아주 초간단하게 만들어봤다.
JSP페이지에 input text와 submit button을 만들어서 submit button을 클릭할 경우 execution.go를 타고 서블릿으로 향한다.
1 2 3 4 | < form action = "execution.go" > < input type = "text" name = "fileName" > < input type = "submit" value = "실행!" > </ form > |
서블릿에서는 다음과 같이 처리해준다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class LocalFileExecutionServlet extends HttpServlet { @Override protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { String fileName = req.getParameter( "fileName" ); System.out.println( "fileName : " + fileName); if (fileName != null && !fileName.isEmpty()){ // 파라미터로 받은 이름을 조건으로 실행할 프로그램을 선택, 아무것도 입력하지 않을 경우 계산기가 실행 됨. if (fileName.equals( "계산기" )){ } else if (fileName.equals( "메모장" )){ } else if (fileName.equals( "그림판" )){ } // 실제로 파일을 실행하는 구간------------------------------------ Runtime rt = Runtime.getRuntime(); System.out.println( "directory: " + directory); Process p; try { p = rt.exec(directory); p.waitFor(); } catch (Exception e) { e.printStackTrace(); } // 실제로 파일을 실행하는 구간------------------------------------ } } } |
파라미터가 없는 경우에 대한 검증 처리 안함. <- jsp에서 자바스크립트로 할 수도 있고, 서블릿 단에서 처리할 수도 있음. 각자 알아서..
이걸 실행할 경우, 실행한 클라이언트 측에서는 서버에서 프로그램이 실제로 실행했는지 알 수가 없다. 왜냐면, 원격조정이 아닌 이상 서버의 화면을 직접 볼 수가 없으니까.
프로그램 실행 여부 확인을 위해서는 서블릿 단에서 성공/실패 시 리턴 페이지를 따로 만들어주는 것도 방법이다.
근데 사실... 이렇게 웹서버 돌려가면서 하느니.. 원격조정이 제일 편하다. 뭐.. 요청하신 분의 사정이 있겠지만..;;
'공장 (factory) > - Programming..' 카테고리의 다른 글
[JSP] 파일 다운로드. (8) | 2013.09.23 |
---|---|
[JSP] MultipartRequest를 이용한 파일 업로드 (11) | 2013.09.17 |
[JSP] 전체 방문자 수/오늘 방문자 수 count (2) | 2013.08.26 |
구글맵(Google Maps JavaScript API v3) 주소로 검색하기 - Geocoding (10) | 2013.08.22 |
구글맵(Google Maps JavaScript API v3) 적용, 위치 표시와 말풍선 띄우기. (10) | 2013.08.15 |