Dúvida em JSP

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.

&lt;input type="hidden" name="nomeDoParam" value="valueDoParam" /&gt;

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>

    &lt;script type="text/javascript"&gt;
        function validaForm(){
            var controle = 0;
            for (i=0;i&lt;document.radioForm.elements.length;i++){
                if (document.radioForm.elements[i].type == "radio"){
                    if (document.radioForm.elements[i].checked == true){
                        controle++;
                    }
                }
            }
            if (controle &gt;&lt;= 0){
                alert(&quot;Selecione uma opcao ou va para o PROXIMO&quot;);
                return false;
            }
        }
    &lt;/script&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;h1&gt;Primeira Pergunta&lt;/h1&gt;

    &lt;form action='pagB.jsp' name='radioForm' onSubmit="return validaForm()"&gt;
        &lt;table&gt;
            &lt;tr&gt;
                &lt;c:choose&gt;
                    &lt;c:when test='${param.pagA==1}'&gt;
                        &lt;input type='radio' name='pagA' value='1' checked /&gt;* Resposta 1<br />
                    &lt;/c:when&gt;
                    &lt;c:otherwise&gt;
                        &lt;input type='radio' name='pagA' value='1' /&gt;* Resposta 1<br />
                    &lt;/c:otherwise&gt;
                &lt;/c:choose&gt;
                &lt;c:choose&gt;
                    &lt;c:when test='${param.pagA==2}'&gt;
                        &lt;input type='radio' name='pagA' value='2' checked /&gt;Resposta 2<br />
                    &lt;/c:when&gt;
                    &lt;c:otherwise&gt;
                        &lt;input type='radio' name='pagA' value='2' /&gt;Resposta 2<br />
                    &lt;/c:otherwise&gt;
                &lt;/c:choose&gt;
                &lt;c:choose&gt;
                    &lt;c:when test='${param.pagA==3}'&gt;
                        &lt;input type='radio' name='pagA' value='3' checked /&gt;Resposta 3<br />
                    &lt;/c:when&gt;
                    &lt;c:otherwise&gt;
                        &lt;input type='radio' name='pagA' value='3' /&gt;Resposta 3<br />
                    &lt;/c:otherwise&gt;
                &lt;/c:choose&gt;
                &lt;c:choose&gt;
                    &lt;c:when test='${param.pagA==4}'&gt;
                        &lt;input type='radio' name='pagA' value='4' checked /&gt;Resposta 4<br />
                    &lt;/c:when&gt;
                    &lt;c:otherwise&gt;
                        &lt;input type='radio' name='pagA' value='4' /&gt;Resposta 4<br />
                    &lt;/c:otherwise&gt;
                &lt;/c:choose&gt;
                &lt;c:choose&gt;
                    &lt;c:when test='${param.pagA==5}'&gt;
                        &lt;input type='radio' name='pagA' value='5' checked /&gt;Resposta 5<br />
                    &lt;/c:when&gt;
                    &lt;c:otherwise&gt;
                        &lt;input type='radio' name='pagA' value='5' /&gt;Resposta 5<br />
                    &lt;/c:otherwise&gt;
                &lt;/c:choose&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
                &lt;td&gt;&lt;input type='submit' value='OK' name='ok' /&gt;&lt;/td&gt;
            &lt;/tr&gt;
            &lt;c:import url="Servidor"&gt;   &lt;/c:import&gt;
        &lt;/table&gt;
    &lt;/form&gt;
    <br>
    &lt;form action='pagB.jsp'&gt;
        &lt;input type='submit' value='Próximo' name='proximo' /&gt;
        &lt;input type='hidden' name='pagA' value='${param.pagA}' /&gt;
        &lt;input type='hidden' name='pagB' value='${param.pagB}' /&gt;
        &lt;input type='hidden' name='pagC' value='${param.pagC}' /&gt;
        &lt;input type='hidden' name='pagD' value='${param.pagD}' /&gt;
        &lt;input type='hidden' name='pagE' value='${param.pagE}' /&gt;
    &lt;/form&gt;
&lt;/body&gt;

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


&lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt;
&lt;%@taglib prefix='c' uri="http://java.sun.com/jsp/jstl/core"%&gt;
&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd"&gt;

&lt;html&gt;
    &lt;head&gt;
        &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
        &lt;title&gt;Segunda Pergunta&lt;/title&gt;

        &lt;script type="text/javascript"&gt;
            function validaForm(){
                var controle = 0;
                for (i=0;i&lt;document.radioForm.elements.length;i++){
                    if (document.radioForm.elements[i].type == "radio"){
                        if (document.radioForm.elements[i].checked == true){
                            controle++;
                        }
                    }
                }
                if (controle &gt;&lt;= 0){
                    alert(&quot;Selecione uma opcao ou va para o PROXIMO&quot;);
                    return false;
                }
            }
        &lt;/script&gt;

    &lt;/head&gt;
    &lt;body&gt;
        &lt;h1&gt;Segunda Pergunta&lt;/h1&gt;

        &lt;form action='pagC.jsp' name='radioForm' onSubmit="return validaForm()"&gt;
            &lt;table&gt;
                &lt;tr&gt;
                    &lt;c:choose&gt;
                        &lt;c:when test='${param.pagB==1}'&gt;
                        &lt;input type='radio' name='pagB' value='1' checked /&gt;Resposta 1<br />
                    &lt;/c:when&gt;
                    &lt;c:otherwise&gt;
                        &lt;input type='radio' name='pagB' value='1' /&gt;Resposta 1<br />
                    &lt;/c:otherwise&gt;
                &lt;/c:choose&gt;
                &lt;c:choose&gt;
                    &lt;c:when test='${param.pagB==2}'&gt;
                        &lt;input type='radio' name='pagB' value='2' checked /&gt;* Resposta 2<br />
                    &lt;/c:when&gt;
                    &lt;c:otherwise&gt;
                        &lt;input type='radio' name='pagB' value='2' /&gt;* Resposta 2<br />
                    &lt;/c:otherwise&gt;
                &lt;/c:choose&gt;
                &lt;c:choose&gt;
                    &lt;c:when test='${param.pagB==3}'&gt;
                        &lt;input type='radio' name='pagB' value='3' checked /&gt;Resposta 3<br />
                    &lt;/c:when&gt;
                    &lt;c:otherwise&gt;
                        &lt;input type='radio' name='pagB' value='3' /&gt;Resposta 3<br />
                    &lt;/c:otherwise&gt;
                &lt;/c:choose&gt;
                &lt;c:choose&gt;
                    &lt;c:when test='${param.pagB==4}'&gt;
                        &lt;input type='radio' name='pagB' value='4' checked /&gt;Resposta 4<br />
                    &lt;/c:when&gt;
                    &lt;c:otherwise&gt;
                        &lt;input type='radio' name='pagB' value='4' /&gt;Resposta 4<br />
                    &lt;/c:otherwise&gt;
                &lt;/c:choose&gt;
                &lt;c:choose&gt;
                    &lt;c:when test='${param.pagB==5}'&gt;
                        &lt;input type='radio' name='pagB' value='5' checked /&gt;Resposta 5<br />
                    &lt;/c:when&gt;
                    &lt;c:otherwise&gt;
                        &lt;input type='radio' name='pagB' value='5' /&gt;Resposta 5<br />
                    &lt;/c:otherwise&gt;
                &lt;/c:choose&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;&lt;input type='submit' value='OK' name='ok' /&gt;&lt;/td&gt;
                &lt;/tr&gt;
                &lt;input type='hidden' name='pagA' value='${param.pagA}' /&gt;
                &lt;input type='hidden' name='pagB' value='${param.pagB}' /&gt;
                &lt;input type='hidden' name='pagC' value='${param.pagC}' /&gt;
                &lt;input type='hidden' name='pagD' value='${param.pagD}' /&gt;
                &lt;input type='hidden' name='pagE' value='${param.pagE}' /&gt;
            &lt;/table&gt;
        &lt;/form&gt;
        <br />
        &lt;table&gt;
            &lt;tr&gt;
            &lt;form action='pagA.jsp'&gt;
                &lt;input type='hidden' name='pagA' value='${param.pagA}' /&gt;
                &lt;input type='hidden' name='pagB' value='${param.pagB}' /&gt;
                &lt;input type='hidden' name='pagC' value='${param.pagC}' /&gt;
                &lt;input type='hidden' name='pagD' value='${param.pagD}' /&gt;
                &lt;input type='hidden' name='pagE' value='${param.pagE}' /&gt;
                &lt;td&gt;&lt;input type='submit' value='Anterior' name='anterior' /&gt;&lt;/td&gt;
            &lt;/form&gt;
        &lt;/tr&gt;
        &lt;tr&gt;
        &lt;form action='pagC.jsp'&gt;
            &lt;input type='hidden' name='pagA' value='${param.pagA}' /&gt;
            &lt;input type='hidden' name='pagB' value='${param.pagB}' /&gt;
            &lt;input type='hidden' name='pagC' value='${param.pagC}' /&gt;
            &lt;input type='hidden' name='pagD' value='${param.pagD}' /&gt;
            &lt;input type='hidden' name='pagE' value='${param.pagE}' /&gt;
            &lt;td&gt;&lt;input type='submit' value='Próximo' name='proximo' /&gt;&lt;/td&gt;
        &lt;/form&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;

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 :slight_smile:

 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. :slight_smile:
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 :slight_smile: 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