To trzeci post z serii tworzenia aplikacji do quizów online przy użyciu serwletu JSP.
Jeśli nie czytałeś poprzednich postów, przeczytaj je, ponieważ ułatwi ci to śledzenie tego posta i całkowite zrozumienie.
Część 1 -
Część 2 - Quiz Application - Implementing Countdown Timer
W tym poście zamierzamy dodać następujące funkcje do naszej aplikacji quizowej
1. Dając użytkownikowi możliwość przejrzenia swoich odpowiedzi po zakończeniu quizu
2. Oznaczanie odpowiedzi użytkownika jako poprawne lub niepoprawne
3. Oznaczanie pytań bez odpowiedzi jako bez odpowiedzi
Poniżej znajduje się migawka utworzonej strony wyników quizu.
Strona wyników testu
Czego jeszcze potrzebujemy, aby funkcja recenzji działała?
pytania do wywiadu z programem ładującym klasę java
Użytkownik może ukończyć quiz w dowolnym momencie, po zakończeniu quizu będzie miał możliwość przejrzenia swoich odpowiedzi. Jeśli użytkownik nie odpowie na pytanie i pominie je, klikając następny przycisk, to pytanie zostanie wyświetlone jako bez odpowiedzi na stronie przeglądu egzaminu.
Aby zapewnić użytkownikowi podsumowanie quizu, wystarczy, że zapiszemy odpowiedzi użytkownika, a gdy skończy quiz, porównajmy je z rzeczywistą odpowiedzią na pytanie.
Jeśli odpowiedź użytkownika jest zgodna z poprawną odpowiedzią na pytanie, wyświetlamy prawidłowy symbol else cross (x) symbol.
Dodamy nowy kontroler o nazwie ReviewController, który wyodrębni wszystkie dane i wyśle je na stronę JSP w celu wyświetlenia.
Uwaga: pytania pobieramy z pliku XML, gdy użytkownik kliknie następny lub poprzedni przycisk.
Załóżmy, że użytkownik rozpoczyna quiz i próbuje tylko jednego pytania, a następnie klika przycisk Zakończ.
Teraz na stronie recenzji quizu musimy pokazać wszystkie pytania z opcjami i odpowiedzią użytkownika, czy była poprawna, czy nie. Ponieważ w tym scenariuszu użytkownik nie ukończy całego quizu, pozostałe 9 pytań zostanie wyświetlonych jako bez odpowiedzi.
Więc kiedy użytkownik kliknie Review Quiz, aby zobaczyć swoje odpowiedzi wraz z poprawną odpowiedzią na to pytanie, musimy pobrać wszystkie pytania z pliku XML i ich poprawną odpowiedź.
co robi math.abs w java
Struktura projektu w Eclipse IDE
Uwaga: właśnie dołączyliśmy jeden nowy kontroler ReviewController.
ReviewController.java
@WebServlet ('/ exam / review') klasa publiczna ReviewController extends HttpServlet {private static final long serialVersionUID = 1L / ** * @see HttpServlet # HttpServlet () * / public ReviewController () {super () // TODO wygenerowane automatycznie konstruktor stub} / ** * @see HttpServlet # doGet (żądanie HttpServletRequest, odpowiedź HttpServletResponse) * / protected void doGet (żądanie HttpServletRequest, odpowiedź HttpServletResponse) rzuca ServletException, IOException {// TODO auto-generowana metoda egzaminacyjna Exam request.getSession (). getAttribute ('currentExam') request.setAttribute ('totalQuestion', exam.getTotalNumberOfQuestions ()) ArrayList reviewQuestionList = new ArrayList () Document dom = exam.getDom () for (int i = 0iUwaga: Ustawiłem wszystkie wymagane informacje w ArrayList of QuizQuestion i ustawiłem tę ArrayList jako atrybut w zakresie żądania.
ArrayList reviewQuestionList = new ArrayList () request.setAttribute ('reviewQuestions', reviewQuestionList)Na stronie JSP musimy po prostu pobrać wartości zapisane w atrybucie reviewQuestions.
Utworzyłem stronę JSP o nazwie examReview.jsp, na której będzie wyświetlane podsumowanie quizu.Pokazuje QuizQuestion wraz z opcjami
Na stronie JSP używamy JSTL c: forEach do iteracji po liście QuizQuestion ustawionej przez ReviewController
$ {counter.count}. $ {question.question}
$ {counter.count}. $ {opcja}
Pokazuję poprawną odpowiedź
Zauważ, że w pliku XML zapisałem opcje zaczynające się od indeksu 0.
Dlatego dodaliśmy jeden, pokazując użytkownikowi poprawną odpowiedź, ponieważ jest on intuicyjny dla użytkownika.
Prawidłowa odpowiedź: $ {question.correctOptionIndex + 1}Oznaczanie pytania bez odpowiedzi
Nie jest obowiązkowe, aby użytkownik odpowiadał na wszystkie pytania. Może go po prostu pominąć, klikając następny przycisk. Jak więc dowiedzieć się, czy udzielono odpowiedzi na pytanie, czy nie?
Dokonałem jednej zmiany w konstruktorze egzaminu, tak że kiedy tworzymy nowy egzamin, dla każdego pytania ustawiamy początkowo odpowiedź użytkownika na -1. Tak więc, gdy użytkownik rozpocznie quiz, będziemy mieć wybór użytkownika dla każdego pytania, nawet jeśli użytkownik kliknie przycisk zakończenia na dowolnym pytaniu między quizem.
Ale jeśli użytkownik faktycznie odpowie na pytanie, -1 zostanie zastąpione przez wybór użytkownika dla tego pytania.
Public Exam (String test, int totalNumberOfQuestions) rzuca SAXException, ParserConfigurationException, IOException, URISyntaxException {dom = CreateDOM.getDOM (test) for (int i = 0iWięc jeśli użytkownik nie odpowie na pytanie i przejdzie do następnego pytania lub po prostu kliknie przycisk Zakończ, pojawi się początkowa odpowiedź -1. Na stronie JSP możemy porównać, czy wybór użytkownika to -1 czy nie. Jeśli jest -1, oznacza to, że użytkownik nie odpowiedział na to pytanie. Oznaczymy to pytanie jako bez odpowiedzi.
Bez odpowiedzi
Wyświetlanie odpowiedzi użytkownika
Jeśli użytkownik faktycznie odpowiedział na pytanie, początkowa odpowiedź -1 zostanie zastąpiona odpowiedzią użytkownika i zostanie zastąpiona przez 1, 2, 3 lub 4, ponieważ mamy 4 opcje dla każdego pytania.
Wybrałeś: $ {question.userSelected}
Wykonujemy test c: if, aby upewnić się, że użytkownik faktycznie odpowiedział na pytanie, a następnie wyświetlić odpowiedź użytkownika.
Oznaczanie odpowiedzi jako poprawnej
Jeśli wybór użytkownika i poprawna odpowiedź na pytanie są zgodne, wyświetlamy obraz z prawidłowym oznaczeniem.
![]()
Oznaczanie odpowiedzi jako niepoprawnej
Prosty c: jeśli przeprowadzany jest test porównujący odpowiedź użytkownika z właściwą opcją pytania. Jeśli oba nie są równe, oznacza to, że użytkownik odpowiedział na pytanie nieprawidłowo i wyświetlamy obraz przedstawiający krzyżyk.
![]()
Kliknij przycisk pobierania, aby pobrać kod.
[buttonleads form_title = ”Pobierz kod” redirect_url = https: //edureka.wistia.com/medias/q2kgiq4su3/download? media_file_id = 67378724 course_id = 44 button_text = ”Pobierz kod”]
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy, a my skontaktujemy się z Tobą.
Powiązane posty:
jak przekonwertować binarne na dziesiętne w java