Dúvida em JSP

21 respostas
import.java

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

21 Respostas

F

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.

leandronsp

Outra solução tb, em cada página vc passa um input hidden no formulario.

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

blz… conseguir com o hidden

obrigado.

import.java

import.java:
blz… conseguir com o hidden

obrigado.

Pessoal, seguindo essa linha de raciocínio gostaria de uma dica para receber esses parametros em um servlet.

desde já agradeço

leandronsp

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

import.java

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

import.java

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).

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);
    }


}

desde já agradeço

thiago.correa

Ao invés de getParameter use getAttribute

leandronsp

Como assim não funcionou? Deu erro? não deu nada?

Se puder posta ae o erro e o codigo das suas paginas JSP.

import.java

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

&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;Primeira 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;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;
&lt;/html&gt;

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

import.java

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("Selecione uma opcao ou va para o PROXIMO");
                    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

F

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

import.java

Entendi a dica, vou tentar fazer e qualquer coisa volto a postar aqui.

abçs

import.java

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

F

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

import.java

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

import.java

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

F

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.

leandronsp

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

import.java

Pessoal, muito obrigado pelas dicas e os links…
acho que to quase terminando mesmo, ta valendo muito a pena estou aprendendo bastante, depois vou postar aqui o resultado.

abração

import.java

caros amigos, meu servlet ficou da seguinte forma… só que estou com dois problemas - 1º) se o parametro do radio for igual null ele teria que redirecionar para a pagina que ficou sem resposta eu tentei da seguinte forma response.sendRedirect("paginaa.jsp"); mas não acontece nada a pagina fica em branco - 2º) se for marcado uma resposta errada ele não mostra a resposta errada, por exemplo: a pergunta 1 eu sei que a respota certa é a opção 1, se eu marco outra opção ele não executa isso out.println("Primeira Pergunta = "); - desde já agradeço a ajuda.

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class SessionServlet extends HttpServlet {

    public int certo = 0;
    public int errado = 0;

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

        try {
            HttpSession session = request.getSession();

            if (request.getParameter("pagA") == null) {
               response.sendRedirect("paginaa.jsp");
            } else if (Integer.parseInt(request.getParameter("pagA")) == 1) {
                String a = request.getParameter("pagA");
                session.setAttribute("resposta1", a);
                a = (String) (session.getAttribute("resposta1"));
                out.println("Primeira Pergunta = ");
                response.getWriter().println(a);
                certo++;
            } else {
                errado++;
            }

            if (request.getParameter("pagB") == null) {
                response.sendRedirect("paginab.jsp");
            } else if (Integer.parseInt(request.getParameter("pagB")) == 2) {
                String b = request.getParameter("pagB");
                session.setAttribute("resposta2", b);
                b = (String) (session.getAttribute("resposta2"));
                out.println("Segunda Pergunta = ");
                response.getWriter().println(b);
                certo++;
            } else {
                errado++;
            }

            if (request.getParameter("pagC") == null) {
               response.sendRedirect("paginac.jsp");
            } else if (Integer.parseInt(request.getParameter("pagC")) == 3) {
                String c = request.getParameter("pagC");
                session.setAttribute("resposta3", c);
                c = (String) (session.getAttribute("resposta3"));
                out.println("Terceira Pergunta = ");
                response.getWriter().println(c);
                certo++;
            } else {
                errado++;
            }

            if (request.getParameter("pagD") == null) {
                response.sendRedirect("paginad.jsp");
            } else if (Integer.parseInt(request.getParameter("pagD")) == 4) {
                String d = request.getParameter("pagD");
                session.setAttribute("resposta4", d);
                d = (String) (session.getAttribute("resposta4"));
                out.println("Quarta Pergunta = ");
                response.getWriter().println(d);
                certo++;
            } else {
                errado++;
            }

            out.println("Quantidade de Certas  = " + certo);
            out.println("Quantidade de Erradas = " + errado);

        } finally {
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);

    }

    @Override
    public String getServletInfo() {
        return "Short description";

    }
}
Criado 26 de março de 2010
Ultima resposta 9 de abr. de 2010
Respostas 21
Participantes 4