Passagem de parâmetros de formulário entre páginas JSP

6 respostas
F

Pessoal, trabalho da faculdade…

Quase tudo pronto, é um quiz, pagina de login em JSP + 5 páginas (uma com cada questionário) em JSP + página de resultado em Servlet.

Preciso fazer com que seja permitido o usuário navegar entre as páginas com as perguntas por um link normal HTML, mas o principal, não sei como fazer a passagem das respostas entre as páginas (se é que é possível…).

Por exemplo, este é o código de uma das páginas do quiz :

Código da página 2:

...  
<p>Pergunta número 2</p>  
          
<form>  
  
Qual time foi responsável pelo "eterno" 7 x 1 contra o time do Santos ?  
  
<input type="radio" name="pergunta2" value="a">Flamengo  
     
<input type="radio" name="pergunta2" value="b">Bangu  
      
<input type="radio" name="pergunta2" value="c">Ponte Preta  
      
<input type="radio" name="pergunta2" value="d">Corinthians  
  
      
</form>  
                      
<a href="pagina1.jsp">Pergunta número 1</a>  
  
                      
<a href="pagina3.jsp">Pergunta número 3</a>  
...

O usuário escolhe uma opção (ou não) e pode navegar entre as outras perguntas… e sempre que acessar uma página em que a resposta foi respondida, ela continuar respondida e não ficar em branco.

O usuário vai navegar entre as 5 páginas do quiz em JSP, e na somente última página tem um botão de enviar as respostas (botão submit), aí sim farei a contabilização dos pontos.

Já pensei em colocar todas as perguntas em todas as páginas e deixar como “hidden” as que não fazem parte da página em questão, e ir passando os parâmetros inserindo as repostas no link HTML.

Pensei em cada vez que clicar no link mandar a informação da resposta para um Servlet.

Pensei milhares de coisas…mas não consegui fazer nada !

Primeira vez que faço isso, a apostila da faculdade não ensinou, pesquisei no Google mas não achei nada parecido.

Alguém poderia me dar uma luz de como estes parâmetros são passados entre as páginas ?

Valeu pessoal !!!

6 Respostas

S

eu armazenaria as respostas na sessão,e na pagina final mostraria resposta,salvaria em banco de dados,ou seja lá o que você quer fazer…
Depois que você submitar o primeiro formulario,envie as perguntas para um servlet,no servlet,você salva as perguntas na sessão.

HttpSession session = request.getSession(); session.setAttribute("resp1" , request.getParameter("resposta"));

Pronto. a primeira resposta será armazenada na sessão até o cara quitar a aplicação(fechar a pagina).
para pegar a resposta no caso é assim

session.getAttribute("resp1"); 0

Escrevi os codigos de cabeça,então se tiver algum erro,já sabe.

E

Amigo vc tem q aprender a diferença entre sessão, request e contexto de aplicação

se vc quer só passar de uma tela pra outra, use 

    <% 
      
        System.out.println(request.getParameter("pergunta2"));  
    %>  

ou
      
    ${param.pergunta2}    isso é jstl
ou (correto) usar um servlet e tratar os valores por lá

se vc quer quer q esse valor fique disponível em todo lugar de sua aplicação pra esse indivíduo coloque na sessao dele como o amigo de cima falou

ja o contexto de aplicação fica visível em todo lugar e pra qualquer indivíduo

F

@Slow17

Obrigado pela dica, vou fazer com os atributos de sessão mesmo… mas tive um problema.

Coloquei isso na página com as questões (para testar):

<%
                    
HttpSession sessao = request.getSession();
                        
sessao.setAttribute("resposta1" , request.getParameter("pergunta1"));
sessao.setAttribute("resposta2" , request.getParameter("pergunta2"));
sessao.setAttribute("resposta3" , request.getParameter("pergunta3"));
sessao.setAttribute("resposta4" , request.getParameter("pergunta4"));
sessao.setAttribute("resposta5" , request.getParameter("pergunta5"));
                               
%>

E para testar fiz um link nesta primeira página, que lê os resultados e envia para uma página de resultado com o seguinte código:

<p>Resposta 1 <%= session.getAttribute("resposta1") %></p>
<p>Resposta 2 <%= session.getAttribute("resposta2") %></p>
<p>Resposta 3 <%= session.getAttribute("resposta3") %></p>
<p>Resposta 4 <%= session.getAttribute("resposta4") %></p>
<p>Resposta 5 <%= session.getAttribute("resposta5") %></p>

O problema é que todas as respostas estão com “null” …

Tentei também a passagem dos parãmetros pela URL mas também eram anviados como “null”.

Onde estou errando ?

Me parece que ao abrir o arquivo JSP é criada a sessão e os valores já são atribuídos, desta forma todo mundo estará “null” :wink:

Como faço para que os valores sejam atribuídos somente ao clicar no link para a página de resultados ? Se é que este é o problema…

@eduJava

Infelizmente o material da faculdade é pobre e como estou começando ainda tenho bastante dificuldade.

Mas estou avançando, devagar mas estou…rsrs

S

Conhece servlets??? se não conhece procure pela net sobre,pois bem,depois de descobrir com funciona um servlet você vai fazer o seguinte :
Você vai submitar o formulario das parguntas para o servlet ,o servlet vai pegar esses valores com request.getParameter e salvar na sessão…
no servlet você pode usar os metodos doPost e doGet,dai você consegue recuperar valores via get e post de formularios…
você pode fazer um metodo misto que funciona como o doPost e doGet “misturados”,mas primeiro procure como funciona o servlet,porque é super importante…

F

Só que não posso colocar um botão “Submit” em cada página de pergunta (estou testando só uma página mas no final serão 5 páginas com perguntas).

O professor disse que tem que ser um link normal HTTP no final de cada página que permite navegar por todas, tanto avançando quando voltando, e desta forma guardar as respostas.

Começamos a estudar Servlet, mas sei pouco ainda…

S

Fernando Ribeira:
Só que não posso colocar um botão “Submit” em cada página de pergunta (estou testando só uma página mas no final serão 5 páginas com perguntas).

O professor disse que tem que ser um link normal HTTP no final de cada página que permite navegar por todas, tanto avançando quando voltando, e desta forma guardar as respostas.

Começamos a estudar Servlet, mas sei pouco ainda…


ue cara,você faz um formulário certo?? salva esse formulario mas não muda de pagina],continua na mesma pagina,porém com o formulário já submitado,restando o cara voltar para a pagina anterior ou para a proxima pasta,caso tenha restrições ,tem que conversar com o professor o que pode ser usado ou não…

Criado 6 de abril de 2014
Ultima resposta 8 de abr. de 2014
Respostas 6
Participantes 3