온라인 퀴즈 신청 : 퀴즈 검토



이 게시물에서는 온라인 퀴즈 응용 프로그램에 퀴즈 검토 기능을 추가했습니다. 사용자는 모든 퀴즈 질문에 대한 정답을 볼 수 있습니다.

JSP Servlet을 사용하여 온라인 퀴즈 애플리케이션을 만드는 시리즈의 세 번째 게시물입니다.

이전 게시물을 읽지 않았다면이 게시물을 더 쉽게 따라하고 완전히 이해할 수 있도록 읽어보십시오.





1 부 -

2 부 - 퀴즈 응용 프로그램 – 카운트 다운 타이머 구현



이 게시물에서는 퀴즈 응용 프로그램에 다음 기능을 추가 할 것입니다.

html로 알림을 만드는 방법

1. 사용자에게 퀴즈 완료시 답변 검토 옵션 제공

2. 사용자의 응답을 정답 또는 오답으로 표시



3. 미 답변 질문을 미답으로 표시

아래는 생성 된 퀴즈 결과 페이지의 스냅 샷입니다.

퀴즈 결과 페이지

리뷰 기능이 작동하려면 또 무엇이 필요합니까?

사용자는 언제든지 퀴즈를 완료 할 수 있으며 퀴즈를 완료하면 답변을 검토 할 수 있습니다. 사용자가 질문에 대답하지 않고 다음 버튼을 클릭하여 건너 뛰면 해당 질문이 시험 검토 페이지에 답변되지 않은 것으로 표시됩니다.

사용자에게 퀴즈 요약을 제공하기 위해 우리가해야 할 일은 사용자 응답을 저장하고 퀴즈를 마쳤을 때 질문의 실제 답변과 비교하는 것입니다.

사용자의 응답이 질문의 정답과 일치하면 올바른 기호를 표시하고 그렇지 않으면 십자 (x) 기호를 표시합니다.

온라인 퀴즈 신청

ReviewController라는 새 컨트롤러를 추가하면 모든 데이터를 추출하여 표시 할 JSP 페이지로 보냅니다.

참고 : 사용자가 다음 또는 이전 버튼을 클릭하면 XML 파일에서 질문을 가져옵니다.

사용자가 퀴즈를 시작하고 하나의 질문 만 시도한 다음 마침 버튼을 클릭한다고 가정합니다.

이제 퀴즈 리뷰 페이지에서 옵션과 함께 모든 질문과 올바른지 여부에 대한 사용자의 응답을 표시해야합니다. 이 시나리오에서는 사용자가 전체 퀴즈를 완료하지 않았으므로 나머지 9 개 질문은 답변되지 않은 것으로 표시됩니다.

따라서 사용자가 Review Quiz를 클릭하여 해당 질문에 대한 정답과 함께 응답을 확인하면 XML 파일에서 모든 질문과 정답을 가져와야합니다.

Eclipse IDE의 프로젝트 구조

참고 : 새로운 컨트롤러 ReviewController가 하나 포함되었습니다.

ReviewController.java

@WebServlet ( '/ exam / review') public class ReviewController extends HttpServlet {private static final long serialVersionUID = 1L / ** * @see HttpServlet # HttpServlet () * / public ReviewController () {super () // TODO 자동 생성 생성자 스텁} / ** * @see HttpServlet # doGet (HttpServletRequest request, HttpServletResponse response) * / protected void doGet (HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stub Exam exam = (Exam) request.getSession (). getAttribute ( 'currentExam') request.setAttribute ( 'totalQuestion', exam.getTotalNumberOfQuestions ()) ArrayList reviewQuestionList = new ArrayList () 문서 dom = exam.getDom () for (int i = 0i

참고 : QuizQuestion의 ArrayList에 필요한 모든 정보를 설정하고 해당 ArrayList를 요청 범위의 속성으로 설정했습니다.

ArrayList reviewQuestionList = new ArrayList () request.setAttribute ( 'reviewQuestions', reviewQuestionList)

JSP 페이지에서 reviewQuestions 속성에 저장된 값만 검색하면됩니다.
퀴즈 요약을 보여줄 examReview.jsp라는 JSP 페이지를 만들었습니다.

옵션과 함께 퀴즈 질문 표시

JSP 페이지에서 JSTL c : forEach를 사용하여 ReviewController에서 설정 한 QuizQuestion 목록을 반복합니다.

  
$ {counter.count}. $ {question.question}

$ {counter.count}. $ {옵션}

정답 표시

XML 파일에는 인덱스 0부터 시작하는 옵션이 저장되어 있습니다.

그렇기 때문에 사용자에게 직관적 인 정답을 보여 주면서 하나를 추가했습니다.

정답 : $ {question.correctOptionIndex + 1} 

질문에 답변이없는 것으로 표시

사용자가 모든 질문을 반드시 시도해야하는 것은 아닙니다. 다음 버튼을 클릭하여 건너 뛸 수 있습니다. 그렇다면 질문에 대한 답변 여부를 어떻게 알 수 있습니까?

시험 생성자에서 하나를 변경하여 새 시험을 만들 때 각 질문에 대해 처음에 사용자의 응답을 -1로 설정했습니다. 따라서 사용자가 퀴즈를 시작할 때 사용자가 퀴즈 사이에있는 질문에서 완료 버튼을 클릭하더라도 각 질문에 대한 사용자 선택을 갖게됩니다.

그러나 사용자가 실제로 질문에 대답하면 -1이 해당 질문에 대한 사용자의 선택으로 대체됩니다.

public Exam (String test, int totalNumberOfQuestions) throws SAXException, ParserConfigurationException, IOException, URISyntaxException {dom = CreateDOM.getDOM (test) for (int i = 0i

따라서 사용자가 질문에 대답하지 않고 다음 질문으로 건너 뛰거나 완료 버튼을 클릭하면 초기 응답 -1이 표시됩니다. JSP 페이지에서 사용자 선택이 -1인지 여부를 비교할 수 있습니다. -1이면 사용자가 해당 질문에 대답하지 않았 음을 의미합니다. 그리고 우리는 그 질문에 답이없는 것으로 표시 할 것입니다.

보답 없는 

사용자 응답 표시

사용자가 실제로 질문에 답한 경우 -1의 초기 응답이 사용자의 응답으로 대체되고 각 질문에 4 개의 옵션이 있으므로 1,2,3 또는 4로 대체됩니다.

선택 : $ {question.userSelected} 

사용자가 실제로 질문에 답했는지 확인한 다음 사용자의 응답을 표시하기 위해 c : if 테스트를하고 있습니다.

응답을 올바른 것으로 표시

질문에 대한 사용자의 선택과 정답이 일치하면 올바른 마크를 보여주는 이미지가 표시됩니다.

   

응답을 잘못된 것으로 표시

사용자의 응답을 올바른 질문 옵션과 비교하기 위해 간단한 c : if 테스트가 수행됩니다. 둘 다 같지 않으면 사용자가 질문에 잘못 답변했음을 의미하며 십자 표시가 표시된 이미지를 표시합니다.

   

다운로드 버튼을 클릭하여 코드를 다운로드하십시오.

[buttonleads form_title =”코드 다운로드”redirect_url = https : //edureka.wistia.com/medias/q2kgiq4su3/download? media_file_id = 67378724 course_id = 44 button_text =”코드 다운로드”]

질문이 있으십니까? 의견란에 언급 해 주시면 연락 드리겠습니다.

관련 게시물: