1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Servlet não retorna minha .JSP

Boa tarde pessoal,

Estou tendo problemas com minha servlet. A minha intenção é a de retornar na tela informações vindas do banco sobre o grupo e seus respectivos posts mas a .jsp referenciada não é chamada e o erro aponta exatamente para a linha da solicitação.

Segue abaixo código:

Trecho da JSP onde são exibidos os grupos cadastrados no banco:

<div class="row">
          <div class="col-lg-12">
            <h1>Bem vindo <small> <%= user %> </small></h1>
            <ol class="breadcrumb">
              <li><a href="index.jsp"><i class="icon-dashboard"></i> Grupo</a></li>
              <li><a href="index.jsp"><i class="icon-dashboard"></i> Usuarios</a></li>
            </ol>
        <div class="panel panel-default"> 

                    <a href="criaGrupo.jsp" type="button" class="btn btn-default btn-lg btn-block">
                        <i class="fa fa-plus-circle"></i> Criar um Grupo</a>

    <!-- Form que retorna os grupos cadastrados no banco através do retorno da servlet consultaGrupos do tipo get --!>
                    <form method="get" action="consultaGrupos">
                        <div class="col-lg-12">
                            <h2 class="page-header">Grupos</h2>
                            <div class="list-group">
                                <%
                                    for (int i = 0; i < listGrupos_gen.size(); i++) {
                                %>
              <!-- aqui esta o href que chama a servlet "mostraGrupo" passando os parametros cod_grupo e cod_genero do grupo armazenado no BD, estes parametros estão OK --!>                  
                                <a href="mostraGrupo?cod_grupo=<%=                                             listGrupos_gen.get(i).getId()%>&cod_genero=<%= listGrupos_gen.get(i).getGenero()%>" class="list-group-item">
                                    <%= listGrupos_gen.get(i).getTema()%>                                            
                                    <i class="fa fa-arrow-circle-right pull-right"></i>
                                </a>                    
                                <% }%>       
                            </div>  
                        </div>
                    </form>                  

                </div>

        </div> 

        </div>

Servlet mostraGrupo chamada na JSP

public class mostraGrupo extends HttpServlet {


   @Override
   protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException{
        response.setContentType("text/html;charset=UTF-8");

            //variáveis String que recebem os parametros enviados pela JSP
            String codGrp = request.getParameter("cod_grupo");
            String codGen = request.getParameter("cod_genero");

            //Instância de classes que ser]ao utilizadas
            GeneroDao gDao = new GeneroDao();
            GrupoDao grpDao = new GrupoDao();
            PostagemDao postDao = new PostagemDao();
            Grupo grp = new Grupo();
            Genero gen = new Genero();

            //acumulando nos atributos ID e Genero os valores da String (já com os parametros atribuídos como vemos acima)
            grp.setId(Integer.valueOf(codGrp));
            grp.setGenero(Integer.valueOf(codGen));

            //retorno do método "buscarEspecifico" é armazenado no objeto gne (Genero) 
            gen = gDao.buscarEspecifico(grp);

            //instância da lista de grupos, retorno do método buscaExibicao 
            List<Grupo> glista = grpDao.buscaExibicao(grp);
            //instancia da lista de posts, retorno do método buscaEspecifico
            List<Postagem> gposts = postDao.buscarEspecifico(grp);

            //envia atributos para a .jsp responsável por exibir o retorno desta servlet
            request.setAttribute("grupoCod", grp.getId());
            request.setAttribute("genero", gen.getNome());
            request.setAttribute("lista_grupos", glista);
            request.setAttribute("lista_posts", gposts);

            //chamada da "exibeGrupo.jsp" --> ESTA É A LINHA APONTADA NO ERRO!
            request.getRequestDispatcher("exibeGrupo.jsp").forward(request, response);
    }      
}

Métodos utilizados acima:

buscaEspecifico (classe GeneroDao)

public Genero buscarEspecifico(Grupo g) {
        try {

            Connection conexao = ConectaBanco.getConexao();

            Genero gen = new Genero();

            PreparedStatement pst = conexao.prepareStatement("select * from genero where id_gen = ?");
            pst.setInt(1, g.getGenero());

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {    
                gen.setId_gen(rs.getInt("id_gen"));
                gen.setNome(rs.getString("nome"));
            }

            conexao.close();
            return gen;
        } catch (ClassNotFoundException ex) {
            return null;
        } catch (SQLException sql) {
            return null;
        }
    }

buscaExibicao (classe GrupoDao)

public List<Grupo> buscaExibicao(Grupo g){
        List<Grupo> groups = new ArrayList<Grupo>();
        try{
           Connection conexao = ConectaBanco.getConexao();

           PreparedStatement pst = conexao.prepareStatement("select * from grupos where status = 1 and id = ? order by id");
           pst.setInt(1, g.getId());

           ResultSet rs = pst.executeQuery();

            while (rs.next()) {
                Grupo group = new Grupo();
                group.setTema(rs.getString("nome"));
                group.setDescricao(rs.getString("descricao"));
                group.setGenero(rs.getInt("genero"));
                group.setImagem(rs.getString("imagem"));
                groups.add(group);
            }
            conexao.close();
            return groups;
        } catch (ClassNotFoundException ex) {
            return null;
        } catch (SQLException sql) {
            return null;
        }
    }

buscaEspecifico (classe PostagemDao)

public List<Postagem> buscarEspecifico(Grupo g) {

        try {

            List<Postagem> posts = new ArrayList<Postagem>();

            Connection conexao = ConectaBanco.getConexao();

            Postagem post = new Postagem();

            PreparedStatement pst = conexao.prepareStatement("select * from postagem where id_grupo = ?");
            pst.setInt(1, g.getId());

            ResultSet rs = pst.executeQuery();

            while (rs.next()) {    
                post.setTitulo(rs.getString("descricao"));
                posts.add(post);
            }

            conexao.close();
            return posts;
        } catch (ClassNotFoundException ex) {
            return null;
        } catch (SQLException sql) {
            return null;
        }
    }

JSP chamada pela Servlet

Instancia de listas e variáveis conforme retorno de parâmetros da Servlet

<%  
  String grupo = new String(request.getParameter("grupoCod"));
  String genero = new String(request.getParameter("genero"));
  List<Grupo> listGrupos = (ArrayList<Grupo>) request.getAttribute("lista_grupos");
  List<Postagem> listPosts = (ArrayList<Postagem>) request.getAttribute("lista_posts");
%>

Corpo da .JSP

<div class="row">   
          <div class="col-lg-12">
            <h2>Bem vindo <small> <%= user %> </small></h2>
            <br>
            <br>
           <!-- Form de chamada o método get "mostraGrupo" --!>   
               <form method="get" action="mostraGrupo">

           <!-- inputs a serem preenchidos conforme retorno da lista --!>                  
                <div class="thumbnail">
                    <img src="imagens/<%= listGrupos.get(1).getImagem()%>" alt="">
                </div>

                <div class="form-group input-group">
                    <span class="input-group-addon">Grupo</span>
                    <input class="form-control" id="focusedInput" type="text" value="<%= listGrupos.get(1).getTema()%>" name="nome">
                </div>

                <div class="form-group">
                    <label>Descrição</label>
                    <textarea class="form-control" rows="4" value="<%= listGrupos.get(1).getDescricao()%>" name="desc"></textarea>
                </div>     


                <div class="form-group input-group">
                    <span class="input-group-addon">Gênero</span>
                    <input class="form-control" id="focusedInput" type="text" value="<%= listGrupos.get(1).getGenero()%>" name="gen">
                </div>   


                <!-- Retorno de todas as postagens do grupo --!>
                <br>
                <h2 class="page-header">Postagens</h2>
                <div class="list-group">
                    <%
                        for (int i = 0; i < listPosts.size(); i++) {
                    %>
                    <a href="exibePost.jsp?cod_post=<%= listPosts.get(i).getId_post() %>" class="list-group-item">
                        <%= listPosts.get(i).getTitulo() %>                                            
                        <i class="fa fa-comments-o pull-right"></i>
                    </a>                    
                    <% }%>       
                </div>

                <!-- Verifica se o usuário é moderador, caso não, habilita botão "Tornar-se membro --!>
                <br>    
                <% if( user != listGrupos.get(1).getModerador() ){ %>    
                <button type="" class="btn btn-success">
                    <i class="fa fa-comment"></i> Tornar-se membro
                </button>
                <% } %>

              <!-- Fim do FORM --!>
              </form>  

          </div>
        </div>

Aparentemente tudo está OK, mas ao tentar exibir os grupos, sou presenteado por um NullPointerException (500). Abaixo, segue erro:

Advertência:   Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
    at java.lang.String.<init>(String.java:165)
    at org.apache.jsp.exibeGrupo_jsp._jspService(exibeGrupo_jsp.java:67)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:875)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:739)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:575)
    at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:546)
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:428)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:378)
    at controller1.mostraGrupo.doGet(mostraGrupo.java:55)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
    at java.lang.Thread.run(Thread.java:722)

Advertência:   StandardWrapperValve[mostraGrupo]: Servlet.service() for servlet mostraGrupo threw exception
java.lang.NullPointerException
    at java.lang.String.<init>(String.java:165)
    at org.apache.jsp.exibeGrupo_jsp._jspService(exibeGrupo_jsp.java:67)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:111)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:411)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:473)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:377)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:875)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:739)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:575)
    at org.apache.catalina.core.ApplicationDispatcher.doDispatch(ApplicationDispatcher.java:546)
    at org.apache.catalina.core.ApplicationDispatcher.dispatch(ApplicationDispatcher.java:428)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:378)
    at controller1.mostraGrupo.doGet(mostraGrupo.java:55)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191)
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168)
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189)
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136)
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114)
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838)
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55)
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564)
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544)
    at java.lang.Thread.run(Thread.java:722)

A linha apontada é a seguinte:

at controller1.mostraGrupo.doGet(mostraGrupo.java:55)
request.getRequestDispatcher("exibeGrupo.jsp").forward(request, response);

Não entendo o que pode estar ocorrendo. Alguém poderia por favor me ajudar? Desculpe pelo post longo mas acho que quanto mais informação tiverem, melhor poderão me ajudar!

Obrigado antecipadamente.

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

2 respostas

Não é a resposta que estava procurando? Procure outras perguntas com as tags java java-ee servlets jsp get web netbeans glassfish ou faça a sua própria pergunta.