Dette er det tredje indlæg i rækken af oprettelse af en online quiz-applikation ved hjælp af JSP Servlet.
Hvis du ikke har læst de tidligere indlæg, skal du gå igennem det, da det vil gøre det lettere for dig at følge dette indlæg og forstå det fuldstændigt.
Del 1 -
Del 2 - Quiz-applikation - Implementering af nedtællingstimer
I dette indlæg vil vi tilføje følgende funktioner til vores quiz-applikation
dyb kloning og lav kloning i java
1. Giver brugeren mulighed for at gennemgå sine svar ved afslutningen af quizzen
2. Markering af brugerens svar som korrekte eller forkerte
3. Markering af uforsøgte spørgsmål som ubesvarede
Nedenfor er snapshotet af quizresultatsiden oprettet.
Quiz-resultatside
Hvad har vi mere brug for for at få gennemgangsfunktionaliteten til at fungere?
Brugeren kan afslutte quizzen når som helst, når quizzen er afsluttet, har han mulighed for at gennemgå sine svar. Hvis brugeren ikke besvarer et spørgsmål og springer det over ved at klikke på den næste knap, vises spørgsmålet som ubesvaret på eksamensoversigtssiden.
For at give brugeren en oversigt over quizzen er alt, hvad vi skal gøre, at gemme brugernes svar, og når han er færdig med quizzen, skal du sammenligne den med det faktiske svar på spørgsmålet.
Hvis brugerens svar stemmer overens med det rigtige svar på spørgsmålet, viser vi det korrekte symbol ellers kryds (x) symbol.
Vi tilføjer en ny controller kaldet ReviewController, som udtrækker alle data og sender dem til en JSP-side for at vise.
Bemærk: Vi henter spørgsmål fra XML-filen, når brugeren klikker på den næste eller den forrige knap.
Antag at en bruger starter en quiz og kun forsøger et spørgsmål og derefter klikker på knappen Finish.
Nu skal vi på quiz-gennemgangssiden vise alle spørgsmålene med dens muligheder og brugerens svar, om det var korrekt eller ej. Da brugeren i dette scenarie ikke gennemfører hele quizzen, vil resten af de 9 spørgsmål blive vist som ubesvarede.
Så når brugeren klikker på Review Quiz for at se hans svar sammen med det rigtige svar på det spørgsmål, er vi nødt til at hente alle spørgsmålene fra XML-filen og dens korrekte svar.
Projektstruktur i formørkelse IDE
Bemærk: Vi har netop inkluderet en ny controller ReviewController.
ReviewController.java
@WebServlet ('/ exam / review') public class ReviewController udvider HttpServlet {privat statisk endelig lang serialVersionUID = 1L / ** * @ se HttpServlet # HttpServlet () * / public ReviewController () {super () // TODO Auto-genereret konstruktørstub} / ** * @see HttpServlet # doGet (HttpServletRequest-anmodning, HttpServletResponse-svar) * / beskyttet ugyldig doGet (HttpServletRequest-anmodning, HttpServletResponse-svar) kaster ServletException, IOException {// TODO-eksamen automatisk = metode) request.getSession (). getAttribute ('currentExam') request.setAttribute ('totalQuestion', exam.getTotalNumberOfQuestions ()) ArrayList reviewQuestionList = new ArrayList () Document dom = exam.getDom () for (int i = 0iBemærk: Jeg har angivet alle de krævede oplysninger i en ArrayList af QuizQuestion og indstillet ArrayList som en attribut i anmodningsomfanget.
ArrayList reviewQuestionList = ny ArrayList () request.setAttribute ('reviewQuestions', reviewQuestionList)På JSP-siden skal vi bare hente de værdier, der er gemt i attributten reviewQuestions.
Jeg har oprettet en JSP-side kaldet examReview.jsp, som viser quizoversigten.Viser quizspørgsmål sammen med valgmuligheder
På JSP-siden bruger vi JSTL c: forEach til at gentage listen over QuizQuestion, der blev indstillet af ReviewController
$ {counter.count}. $ {spørgsmål.spørgsmål}
$ {counter.count}. $ {option}
Viser korrekt svar
Bemærk, at jeg i XML-fil har gemte indstillinger, der starter fra indeks 0.
Derfor tilføjede vi et, mens vi viste det korrekte svar til brugeren, da det er intuitivt for brugeren.
Korrekt svar: $ {question.correctOptionIndex + 1}Markering af et spørgsmål ubesvaret
Det er ikke obligatorisk for brugeren at prøve alle spørgsmålene. Han kan bare springe det over ved at klikke på den næste knap. Så hvordan finder vi ud af, om et spørgsmål blev besvaret eller ej?
Jeg har foretaget en ændring i eksamenskonstruktøren, så når vi opretter en ny eksamen, indstiller vi for hvert spørgsmål også brugerens svar som oprindeligt -1. Så når brugeren starter quizzen, vil vi have brugervalget til hvert spørgsmål, selvom brugeren bare klikker på finish-knappen på ethvert spørgsmål imellem quizzen.
Men hvis brugeren faktisk besvarer et spørgsmål, erstattes -1 med brugerens valg for det spørgsmål.
offentlig eksamen (streng test, int totalNumberOfQuestions) kaster SAXException, ParserConfigurationException, IOException, URISyntaxException {dom = CreateDOM.getDOM (test) for (int i = 0iSå hvis brugeren ikke besvarer et spørgsmål og springer til det næste spørgsmål eller bare klikker på finish-knappen, vil det oprindelige svar på -1 være der. På JSP-siden kan vi sammenligne, om brugervalget er -1 eller ej. Hvis det er -1, betyder det, at brugeren ikke besvarede det spørgsmål. Og vi vil markere dette spørgsmål som ubesvaret.
Ubesvaret
Viser brugerrespons
Hvis brugeren faktisk besvarede et spørgsmål, erstattes det oprindelige svar på -1 med brugerens svar, og det erstattes med 1,2,3 eller 4, da vi har 4 muligheder for hvert spørgsmål.
Du valgte: $ {question.userSelected}
Vi laver et c: hvis test for at sikre, at brugeren faktisk besvarede et spørgsmål og derefter viser brugerens svar.
Markering af et svar som korrekt
Hvis brugerens valg og korrekte svar på spørgsmålet stemmer overens, viser vi et billede, der viser det korrekte mærke.
Markering af et svar som forkert
Et simpelt c: hvis test foretages for at sammenligne brugerens svar med den korrekte mulighed for spørgsmålet. Hvis begge ikke er ens, betyder det, at brugeren besvarede spørgsmålet forkert, og vi viser et billede, der viser et kryds.
Klik på download-knappen for at downloade koden.
[buttonleads form_title = ”Download Code” redirect_url = https: //edureka.wistia.com/medias/q2kgiq4su3/download? media_file_id = 67378724 course_id = 44 button_text = ”Download kode”]
Har du et spørgsmål til os? Nævn det i kommentarfeltet, så vender vi tilbage til dig.
Relaterede indlæg: