Olá pessoal, sou iniciante em jsp e estou fazendo um exemplo que pede o seguinte: tenho 5 paginas .jsp e em cada pagina tenho um pergunta com 4 opções de respostas que são radios e uma última pagina recebe.jsp onde recebo os parametros marcados, o problema é que só recebo o valor da última pagina. Estou pegando os paramtros da seguinte forma.
Primeira Pergunta: ${ param.pagA }<br />
Segunda Pergunta: ${ param.pagB }<br />
Terceira Pergunta: ${ param.pagC }<br />
Quarta Pergunta: ${ param.pagD }<br />
Quinta Pergunta: ${ param.pagE }<br />
preciso fazer em jsp, desde já agradeço
Pô, vou dar meu chute, parece um problema de escopo.
Os valores que você quer devem estar todos no escopo de request e você consegue receber o da última.
Mude o escopo para session.
Se nçao quiser mudar para session, vai passando os resultados de uma página para a página seguinte.
Outra solução tb, em cada página vc passa um input hidden no formulario.
<input type="hidden" name="nomeDoParam" value="valueDoParam" />
blz… conseguir com o hidden
obrigado.
[quote=import.java]blz… conseguir com o hidden
obrigado.[/quote]
Pessoal, seguindo essa linha de raciocínio gostaria de uma dica para receber esses parametros em um servlet.
desde já agradeço
Não sei se vc já leu, mas recomendo muito o livro Jsp & Servlets , da série Head First, que ao meu ver é essencial para todo desenvolvedor Java Web.
Mas clareando um pouco pra vc, na JSP vc chama no form uma action que é a URL mapeada pela SuaServlet. E na SuaServlet vc pega os parametros com algum dos metodos do objeto HttpServletRequest:
String parametroqueVeioDoJsp = request.getParameter("nomeDoParametro");
Tenta criar uma estrutura com a Servlet, mapeando ela no web.xml, criando a JSP e passando alguns parametros. Qualquer dúvida no seu desenvolvimento posta ae.
abraço
leandro,
obrigado pela dica do livro vou providenciar um o quanto antes.
em relação ao projeto estarei testando, qualquer dúvida volto a postar aqui.
abçs
leonardo o que acontece é o seguinte, tenho 5 paginas JSP e em cada uma tenho uma pergunta e 4 opções de respostas que são radios e estou tentando receber os paramteros das respostas em um servlet, segue o código do servlet(não funcionou).
[code]public class Servidor extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
String paaginaUm = request.getParameter("pagA");
String paaginaDois = request.getParameter("pagB");
String paaginaTres = request.getParameter("pagC");
String paaginaQuatro = request.getParameter("pagD");
String paaginaCinco = request.getParameter("pagE");
try {
}
} finally {
out.close();
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}[/code]
desde já agradeço
Ao invés de getParameter use getAttribute
Como assim não funcionou? Deu erro? não deu nada?
Se puder posta ae o erro e o codigo das suas paginas JSP.
aqui no serviço não da para testar, fico fazendo tudo em bloco de notas e corrijo a sintax em casa, o erro que dava era - ERRO 404 - obs: estou usando o netbeans 3.8 servidor Glasfish v3. Segue o codigo
[code]
<%@page contentType=“text/html” pageEncoding=“UTF-8”%>
<%@taglib prefix=‘c’ uri=“http://java.sun.com/jsp/jstl/core”%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=“Content-Type” content=“text/html; charset=UTF-8”>
<title>Primeira Pergunta</title>
<script type="text/javascript">
function validaForm(){
var controle = 0;
for (i=0;i<document.radioForm.elements.length;i++){
if (document.radioForm.elements[i].type == "radio"){
if (document.radioForm.elements[i].checked == true){
controle++;
}
}
}
if (controle ><= 0){
alert("Selecione uma opcao ou va para o PROXIMO");
return false;
}
}
</script>
</head>
<body>
<h1>Primeira Pergunta</h1>
<form action='pagB.jsp' name='radioForm' onSubmit="return validaForm()">
<table>
<tr>
<c:choose>
<c:when test='${param.pagA==1}'>
<input type='radio' name='pagA' value='1' checked />* Resposta 1<br />
</c:when>
<c:otherwise>
<input type='radio' name='pagA' value='1' />* Resposta 1<br />
</c:otherwise>
</c:choose>
<c:choose>
<c:when test='${param.pagA==2}'>
<input type='radio' name='pagA' value='2' checked />Resposta 2<br />
</c:when>
<c:otherwise>
<input type='radio' name='pagA' value='2' />Resposta 2<br />
</c:otherwise>
</c:choose>
<c:choose>
<c:when test='${param.pagA==3}'>
<input type='radio' name='pagA' value='3' checked />Resposta 3<br />
</c:when>
<c:otherwise>
<input type='radio' name='pagA' value='3' />Resposta 3<br />
</c:otherwise>
</c:choose>
<c:choose>
<c:when test='${param.pagA==4}'>
<input type='radio' name='pagA' value='4' checked />Resposta 4<br />
</c:when>
<c:otherwise>
<input type='radio' name='pagA' value='4' />Resposta 4<br />
</c:otherwise>
</c:choose>
<c:choose>
<c:when test='${param.pagA==5}'>
<input type='radio' name='pagA' value='5' checked />Resposta 5<br />
</c:when>
<c:otherwise>
<input type='radio' name='pagA' value='5' />Resposta 5<br />
</c:otherwise>
</c:choose>
</tr>
<tr>
<td><input type='submit' value='OK' name='ok' /></td>
</tr>
<c:import url="Servidor"> </c:import>
</table>
</form>
<br>
<form action='pagB.jsp'>
<input type='submit' value='Próximo' name='proximo' />
<input type='hidden' name='pagA' value='${param.pagA}' />
<input type='hidden' name='pagB' value='${param.pagB}' />
<input type='hidden' name='pagC' value='${param.pagC}' />
<input type='hidden' name='pagD' value='${param.pagD}' />
<input type='hidden' name='pagE' value='${param.pagE}' />
</form>
</body>
</html>[/code]
bom esse é ó código de uma das 5 paginas as outras sõa todas iguais, o que acontece no jogo é o seguinte: se a pessoa não souber a resposta ela pode pular é ir para próxima, mas só termina quando todas as perguntas são respondidas, então se deixar uma sem responder vc é redirecionado para pagina que faltar resposta. o servlet que recebe é o que eu postei antes.
ainda sou iniciante por estou tendo muitas dificuldades.
obrigado
boa tarde pessoal, estou voltando aqui com a mesma dúvida… vou postar o código de uma das minhas paginas JSP
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib prefix='c' uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Segunda Pergunta</title>
<script type="text/javascript">
function validaForm(){
var controle = 0;
for (i=0;i<document.radioForm.elements.length;i++){
if (document.radioForm.elements[i].type == "radio"){
if (document.radioForm.elements[i].checked == true){
controle++;
}
}
}
if (controle ><= 0){
alert("Selecione uma opcao ou va para o PROXIMO");
return false;
}
}
</script>
</head>
<body>
<h1>Segunda Pergunta</h1>
<form action='pagC.jsp' name='radioForm' onSubmit="return validaForm()">
<table>
<tr>
<c:choose>
<c:when test='${param.pagB==1}'>
<input type='radio' name='pagB' value='1' checked />Resposta 1<br />
</c:when>
<c:otherwise>
<input type='radio' name='pagB' value='1' />Resposta 1<br />
</c:otherwise>
</c:choose>
<c:choose>
<c:when test='${param.pagB==2}'>
<input type='radio' name='pagB' value='2' checked />* Resposta 2<br />
</c:when>
<c:otherwise>
<input type='radio' name='pagB' value='2' />* Resposta 2<br />
</c:otherwise>
</c:choose>
<c:choose>
<c:when test='${param.pagB==3}'>
<input type='radio' name='pagB' value='3' checked />Resposta 3<br />
</c:when>
<c:otherwise>
<input type='radio' name='pagB' value='3' />Resposta 3<br />
</c:otherwise>
</c:choose>
<c:choose>
<c:when test='${param.pagB==4}'>
<input type='radio' name='pagB' value='4' checked />Resposta 4<br />
</c:when>
<c:otherwise>
<input type='radio' name='pagB' value='4' />Resposta 4<br />
</c:otherwise>
</c:choose>
<c:choose>
<c:when test='${param.pagB==5}'>
<input type='radio' name='pagB' value='5' checked />Resposta 5<br />
</c:when>
<c:otherwise>
<input type='radio' name='pagB' value='5' />Resposta 5<br />
</c:otherwise>
</c:choose>
</tr>
<tr>
<td><input type='submit' value='OK' name='ok' /></td>
</tr>
<input type='hidden' name='pagA' value='${param.pagA}' />
<input type='hidden' name='pagB' value='${param.pagB}' />
<input type='hidden' name='pagC' value='${param.pagC}' />
<input type='hidden' name='pagD' value='${param.pagD}' />
<input type='hidden' name='pagE' value='${param.pagE}' />
</table>
</form>
<br />
<table>
<tr>
<form action='pagA.jsp'>
<input type='hidden' name='pagA' value='${param.pagA}' />
<input type='hidden' name='pagB' value='${param.pagB}' />
<input type='hidden' name='pagC' value='${param.pagC}' />
<input type='hidden' name='pagD' value='${param.pagD}' />
<input type='hidden' name='pagE' value='${param.pagE}' />
<td><input type='submit' value='Anterior' name='anterior' /></td>
</form>
</tr>
<tr>
<form action='pagC.jsp'>
<input type='hidden' name='pagA' value='${param.pagA}' />
<input type='hidden' name='pagB' value='${param.pagB}' />
<input type='hidden' name='pagC' value='${param.pagC}' />
<input type='hidden' name='pagD' value='${param.pagD}' />
<input type='hidden' name='pagE' value='${param.pagE}' />
<td><input type='submit' value='Próximo' name='proximo' /></td>
</form>
</tr>
</table>
</body>
</html>
bom, tenho mais quatro paginas parecidas com essa… antes recebia o resultado em uma outra JSP, mas o que quero fazer é receber esse resultado em um Servlet de forma que ele gerenciasse esse resultado caso uma das paginas não fossem marcadas. O que eu gostaria era de um a dica que clareasse essa ideia, desde já agradeço
Duas formas:
-usando session
receba o valor da primeira página no servlet
trate
adicione o valor na session
repita o processo para as próximas páginas
-sem usar session
receba o valor da primeira página no servlet
trate
envie o valor para a próxima página
receba agora no servlet o valor preenchido pela primeira página e pela segunda
envie ambos para a terceira página…e assim até o final
Entendi a dica, vou tentar fazer e qualquer coisa volto a postar aqui.
abçs
estou aqui tentando enteder Session e de acordo com exemplos que vi na net cheguei no sguinte codigo
public class SessionSevlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
if("pagB" != null){
request.getParameter("pagB");
//obter a sessão atual ou criar uma nova sessão caso esta não exista ainda
HttpSession session = request.getSession();
//guarda o valor na sessão
String resposta1 = "pagB";
session.setAttribute("resposta1", "pagB");
//obter o valor na sessão e exibi-lo
resposta1 = (String)(session.getAttribute("resposta1"));
response.getWriter().println("pagB");
}
try {
} finally {
out.close();
}
}
o que acontece é que ele ta imprimindo pagB e não o value do radio, alguém poderia olhar esse código e me dizer o erro.
lembrando que “pagB” é o name do meu radio
desde já agradeço
Putz, infelizmente o seu código tá cheio de erros 
if("pagB" != null){
Isso sempre vai ser true. “pagB” não tem nada a ver com sua radio. Qnd vc faz “pagB” != null, vc está comparando o texto letra p + letra a + letra g e b com null
Ou seja, está comparando o texto, a String “pagB” com null.
Aqui sim vc está pegando um valor, mas não o está gravando em lugar algum.
Teria de fazer algo assim:
Aqui você está gravando na session o texto “pagB” que pode ser recuperado quando se procura na session a chave “resposta1”.
Você deveria ter feito assim:
O correto seria
mas de que adianta este código? Já que já sabíamos o valor de resposta1, não precisávamos gravá-lo na session e recuperá-lo. Este código faria mais sentido se estivesse em um outro lugar (um jsp, ou outro servlet,…), e não no servlet que grava o valor na memória.
Este trecho está sem função. Todo ele pode ser substituido por:
Não sei se ajudei ou se confundi mais. 
Algumas das alterações que eu citei acima estão explicadas aqui http://java.sun.com/docs/books/tutorial/.
com certeza não estão confundindo só estão ajudando…
mas então como faria para validar se o radio foi marcado ou não?
como tinha dito no inicio do tópico, estou iniciando no mundo do java, por isso tantas dúvidas
fiz as correções que vc flw e a validação dos radios fiz da seguinte forma
if (request.getParameter("pagA") != null){
[...]
}
no final ele deu o resultado que queria, mostrou o value do radio… acho que dei a metade de um passo
Beleza, já tá andando.
Aê, se for o caso de vc nunca ter visto java antes, o bom é começar por aqui
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/index.html
A fonte é confiável
e o texto é bem simples sem detalhes complicados.
O JSE é a porta de entrada. Começar por JEE pode trazer confusão.
Mas acho que se vc está mesmo iniciando em java, vc está mandando bem.
EDIT: Eu tinha dado as mesmas dicas que o fvslistas deu. Removi para não ficarem coisas repetidas.
Aproveitando, acho tbm que vc deve dar uma boa estudada no JSE (alias, todos nós sempre precisamos dar uma reciclada), e percebi que vc é bem esforçado. Vai longe.
Abraço