package test; import java.io.*; import java.util.Map; import java.util.Hashtable; import javax.servlet.*; import javax.servlet.http.*; public class Quiz extends HttpServlet { public void doPost( HttpServletRequest requete, HttpServletResponse reponse ) throws ServletException, IOException { // initialisation RequestDispatcher dispatcher = getServletContext().getNamedDispatcher( "Error" ); HttpSession session = requete.getSession(); Integer nquestions = (Integer) session.getAttribute( "nquestions" ); // obtient le nombre de questions pour ce test à l'aide du paramètre if ( nquestions == null ) { String param = requete.getParameter( "nquestions" ); if ( param != null ) { try { nquestions = Integer.parseInt( param ); session.setAttribute( "nquestions", nquestions ); } catch ( NumberFormatException e ) { ; } } } // une erreur s'est produite if ( nquestions == null || nquestions < 0 ) { dispatcher.forward( requete, reponse ); } else { // corriger la dernière question String question = (String) session.getAttribute( "question" ); if ( question != null ) { String value = requete.getParameter( "value" ); if ( value != null ) { try { int answer = Integer.parseInt( value ); Integer result = (Integer) session.getAttribute( "result" ); if ( result == null ) { result = 0; } if ( RPN.eval( question ) == answer ) { result++; } session.setAttribute( "result", result ); } catch ( NumberFormatException e ) { ; } } } // afficher le résultat du test? if ( nquestions == 0 ) { dispatcher = getServletContext().getNamedDispatcher( "Result" ); dispatcher.forward( requete, reponse ); } else { // générer un nouveau test String expr = RPN.getRandomExpression(); session.setAttribute( "nquestions", new Integer( nquestions - 1 ) ); session.setAttribute( "question", expr ); // génération du document reponse.setContentType( "text/html; charset=\"UTF-8\"" ); PrintWriter doc = reponse.getWriter(); doc.println( "" ); doc.println( "" ); doc.println( "
" ); doc.println( "" ); doc.println( " Évaluez l'expression postfixe suivante : " + expr ); doc.println( "
" ); doc.println( "" ); doc.println( "
" ); doc.println( " " ); doc.println( "