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

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 !!!

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.

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

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

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

ou

${param.pergunta2}    isso é jstl

[/code]
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

@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

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…

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…

[quote=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…

[/quote]
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…