Ajuda com servlets

11 respostas
j_gff
estou com uma dúvida em Java na parte de lógica usando servlets. A seguinte questão: estou fazendo um questionário em Java usando servlet, porém estou tendo que usar um servlet para cada questão, pq não consegui colocar todas as questões dentro do mesmo servlet. Acontece que a variável que estou usando para contador(pontuacao) no primeiro servlet não está sendo atualizada nos demais. Como faço:
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Questionário!!!</h1>
        <form action="media" method="POST">
            <h3>Questao 1:</h3>
            <input type="radio" name="nota1" value="op1" id="nota1"/>oksjdf<br>
            <input type="radio" name="nota1" value="op2" id="nota1" />pgjeg<br>
            <input type="radio" name="nota1" value="op3" id="nota1"/>oiwueuri<br>
            <input type="radio" name="nota1" value="op4" id="nota1"/>utywoeiur<br>
            <input type="radio" name="nota1" value="op5" id="nota1"/>ttosiduuw<br>
            <input type="submit" value="Responder" />
        </form>
    </body>
</html>


public class media extends HttpServlet {
    int pontuacao;
    
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

            String nota1 = request.getParameter("nota1");
            System.out.println(nota1);
            String nota2 = request.getParameter("nota2");
            System.out.println(nota2);
            String nota3 = request.getParameter("nota3");
            System.out.println(nota3);
             String nota4 = request.getParameter("nota4");
            System.out.println(nota4);
             String nota5 = request.getParameter("nota5");
            System.out.println(nota5);
        try {
            if(nota1.equals("op1")) {
                System.out.println("");
                 pontuacao=pontuacao + 1;
            }
            else if(nota1.equals("op2")) {
                
            }
            else if(nota1.equals("op3")) {
                System.out.println("");
             
            }
              else if(nota1.equals("op4")) {
                System.out.println("");

            }
              else if(nota1.equals("op5")) {
                System.out.println("");

            }
        } finally {
            RequestDispatcher rd = null;
            rd = request.getRequestDispatcher("resultado.jsp?pontuacao=" + pontuacao);
            rd.forward(request, response);
            out.close();
        }
    } 

}


<%
   int pontuacao = Integer.parseInt(request.getParameter("pontuacao"));
%>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Resultado da média</title>
    </head>
    <body>
        <h1>Resultado:</h1>
        <h2>O resultado do aluno e:<%=pontuacao%></h2>
    </body>
</html>

11 Respostas

jweibe

depois de você fazer o calculo da pontuação, você pega o resultado e coloca na sessão
request.getSession().setAttribute(“contador”, pontuaçao);

Quando precisar recuperar em outro Servlet você usa:
int count = (Integer) request.getSession().getAttribute(“contador”);

j_gff
j_gff
jweibe

bom! você poderia colocar ele dentro do seu bloco finally

finally { 
             request.getSession().setAttribute("contador", pontuaçao);
             RequestDispatcher rd = null;  
             rd = request.getRequestDispatcher("resultado.jsp?pontuacao=" + pontuacao);  
             rd.forward(request, response);  
             out.close();  
         }
j_gff
Alterei o código e mesmo assim não está atualizando o valor da variável. Lembrando que cada form está em uma página. O que pode estar faltando???
public class validarResposta extends HttpServlet {

    int pontuacao = 0;

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String questao1 = request.getParameter("questao1");
        System.out.println(questao1);

        try {

            if (questao1.equals("op1")) {
                System.out.println("");
            } else if (questao1.equals("op2")) {
                System.out.println("");
            } else if (questao1.equals("op3")) {
                pontuacao = pontuacao + 1;
            }

        } finally {
            if (request.getSession().getAttribute("pontuacao") == null) {
                request.getSession().setAttribute("pontuacao", pontuacao); //pontuacao é a variavel que voce quer salvar
            } else {
                pontuacao = (Integer) request.getSession().getAttribute("pontuacao");
                request.getSession().setAttribute("pontuacao", pontuacao);
            }
            RequestDispatcher rd = null;
            rd = request.getRequestDispatcher("questao2.jsp?pontuacao=" + pontuacao);
            rd.forward(request, response);
            out.close();
        }
    }
}

public class validarResposta2 extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        String questao2 = request.getParameter("questao2");
        System.out.println(questao2);
        int pontuacao = (Integer) request.getSession().getAttribute("pontuacao");
        try {

            if (questao2.equals("r2")) {
                System.out.println("");
            } else if (questao2.equals("r3")) {
                System.out.println("");
            } else if (questao2.equals("r4")) {
                pontuacao = pontuacao + 1;
            }

        } finally {
            if (request.getSession().getAttribute("pontuacao") == null) {
                request.getSession().setAttribute("pontuacao", pontuacao); //pontuacao é a variavel que voce quer salvar
            } else {
                pontuacao = (Integer) request.getSession().getAttribute("pontuacao");
                request.getSession().setAttribute("pontuacao", pontuacao);
            }
            RequestDispatcher rd = null;
            rd = request.getRequestDispatcher("questao3.jsp?pontuacao=" + pontuacao);
            rd.forward(request, response);
            out.close();
        }
    }
}

public class validarResposta3 extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        String questao3 = request.getParameter("questao3");
        System.out.println(questao3);
        int pontuacao = (Integer) request.getSession().getAttribute("pontuacao");
        try {

            if (questao3.equals("r5")) {
                System.out.println("");

            } else if (questao3.equals("r6")) {
                System.out.println("");

            } else if (questao3.equals("r7")) {
                pontuacao = pontuacao + 1;
            }

        } finally {
            if (request.getSession().getAttribute("pontuacao") == null) {
                request.getSession().setAttribute("pontuacao", pontuacao); //pontuacao é a variavel que voce quer salvar
            } else {
                pontuacao = (Integer) request.getSession().getAttribute("pontuacao");
                request.getSession().setAttribute("pontuacao", pontuacao);
            }
            RequestDispatcher rd = null;
            rd = request.getRequestDispatcher("paginaRetorno.jsp?pontuacao=" + pontuacao);
            rd.forward(request, response);
            out.close();
        }
    }
}

   <form action="validarResposta" method="POST" name="form1" onsubmit="return validaForm()" >
            <h2>Bem vindo ao simulado on-line!</h2>
            Questão 1: Qual declaração é utilizada pelo HTML5?<br>
            <br><hr>
            <input type="radio" name="questao1" value="op1" id="questao1" /><strong><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"></strong><br><br>
            <input type="radio" name="questao1" value="op2" id="questao1"/><strong><!DOCTYPE HTML</strong>><br><br>
            <input type="radio" name="questao1" value="op3" id="questao1"/><strong><html> </strong><br><br>
            <hr>
            <input type="submit" value="Responder" />
          
        </form></td>


 <form action="validarResposta2" method="POST" name="form2" onsubmit="return validaForm()">
            <h2>Bem vindo ao simulado on-line!</h2>
            Questão 2: Qual das tags está presente na nova versão?<br>
            <br><hr>
            <input type="radio" name="questao2" value="r2" />title<br><br>
            <input type="radio" name="questao2" value="r3" />marquee<br><br>
            <input type="radio" name="questao2" value="r4" />canvas<br><br>
            <hr>
            <input type="submit" value="Responder" />
           
        </form>
jweibe

Me responde uma coisa, qual a finalidade de você fazer um Servlet para processar cada página do questionário?
Eu fiz um exemplo simples da uma olhada nele espero ter ajudado.
:arrow: http://www.megaupload.com/?d=C8HVYO1S

j_gff
jweibe

cara tu não tem o Eclipse ai não…
Se não faz o download dele ai… e já era!

j_gff
j_gff
j_gff
Criado 14 de março de 2011
Ultima resposta 20 de mar. de 2011
Respostas 11
Participantes 2