2012-08-31 2 views
2

저는 현재 약 275 명의 학생들이 JSP를 배우는 소프트웨어 공학 수업을 가르치고 있습니다. 학생들에게 기본적인 JSP 기술을 익힐 수있는 온라인 서비스를 제공 할 수 있기를 바랍니다. 아이디어는 학생들이 사전에 결정된 테스트를 통과 할 수있는 JSP 코드를 제공한다는 것입니다.Java App Engine의 Java 버전에서 JSP 파일의 내용을 어떻게 동적으로 업데이트 할 수 있습니까?

예 : 학생들은 NAME이 페이지로 전달 된 GET 매개 변수 인 경우 "Hello NAME"을 반환하는 JSP 페이지의 코드를 제공해야합니다.

이 질문에 대한 올바른 대답은 다음과 같습니다.

Hello <%= request.getParameter("name") %> 

나는 현재이 나는 기존의 JSP 파일에서 제출 된 학생 코드를 작성하는 리눅스 기반 솔루션을 사용하는 것과 같이 학생의 제출을 ​​테스트 할 수 있습니다, GET 매개 변수를 전달하는 동안 JSP 페이지를 가져 Tomcat이 다시로드 될 때까지 기다립니다 JSP 페이지를 컴파일하고 HTML 결과를 파싱 한 다음 테스트 결과를 학생들에게 반환합니다. 이 프로세스는 다소 느리며 (디스크의 JSP 파일을 겹쳐 쓰는 것) 확장이 잘되지 않습니다.

Google App Engine의 자바 버전에서이 JSP "검증 자"를 실행할 수 있습니다.이 버전은 많은 학생들이 동시에 연습 할 때 자동으로 확장되도록 구성 할 수 있습니다.

제 질문은 기존 JSP 파일의 내용을 덮어 쓰지 않고도 Google App Engine에서 제출 된 JSP 코드를 어떻게 평가할 수 있습니까? 실행할 코드를 JSP 페이지에 전달하고 해당 페이지가 결과를 반환하도록 할 수 있습니까?

전달 된 코드를 사용하여 페이지에서 전달 된 GET 매개 변수를 사용하여 작업하도록 할 수 없습니다. 즉, eval() 메소드가 없습니다.

아이디어가 있으십니까?

+0

샌드 박스 외부에있는 학생이 업로드 한 임의 코드가 매우 위험합니다. 어떤 학생이'<%! System.exit (0); %>'(서비스 거부) 또는 서버에서 다른 장소로 파일을 전송합니다. 다른 학생들이 JSP를 올렸습니까? 신뢰할 수없는 JSP 코드의 자동화 된 테스트를위한 좋은 솔루션이 없습니다. –

+0

무료 Google App Engine 계정에서 코드가 실행되며 5 초 후에 프로세스가 시간 초과 될 수 있습니다. 나는 많은 피해를 기대하지 않는다. 나는 이미 파이썬과 자바 문제와 비슷한 것을하고있다. 지금까지 많이 남용하지 않았습니다. 구글 샌드 박스는 꽤 좋다. – Chris

+0

GAE 샌드 박스는 앱을 사용하는 바보 같은 일이 아니라 Google을 보호하기 위해 설계되었습니다. 앱에 재미있는 데이터 (예 : 앱 소스 코드 또는 데이터 저장소에 저장되어있는 테스트 결과)가 있고 학생이 제출 한 코드를 다루지 않아도된다면 학생들에게 데이터를 읽고 쓸 것을 간청하고있는 것입니다 . – allyourcode

답변

0

나는 이것을 시도한 적이 없지만 Jasper Compiler (Tomcat의 JSP 구현)을 살펴볼 것이다. .jsp에서 클래스 파일을 생성 할 수 있습니다.이 파일은 GAE에서로드 할 수 있습니다. 나는 또한 그것을 작동시키기 위해 필요한 노력이 너무 많을 수도 있다고 생각할 수도 있지만.

관련 문제