[RESOLVIDO] Dúvida ao fazer mapeamento Servlet

17 respostas Resolvido
jspmysqljava
N

Boa tarde! Sou nova em programação e não estou conseguindo fazer o mapeamento para quem minha página acesse ao Servlet, de todas formas possiveis que coloco, dá o erro 404 não encontrando o bendito, segue os códigos:

Do Servlet

import dao.PessoaDAO;
import entidade.Pessoa;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


public class SERVPessoa extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
         
            PessoaDAO dao = new PessoaDAO ();
            Pessoa p = new Pessoa ();
            List<Pessoa> listaPessoa = new ArrayList<> ();
            
            String resposta ="";
            RequestDispatcher rd = null;
 
            try{
                if (request.getParameter("btnInserir") != null) {
                    p.setIdPessoa(Integer.parseInt(request.getParameter("txtId")));
                    p.setNome(request.getParameter("txtNome"));
                    p.setEmail(request.getParameter("txtEmail"));
                    p.setTelefone(request.getParameter("txtTelefone"));
                    p.setDatanascimento(request.getParameter("txtData"));
                    resposta = dao.cadastrar(p);
                    request.setAttribute("resposta", resposta);
                }else if(request.getParameter("btnModificar") !=null) {
                    p.setIdPessoa(Integer.parseInt(request.getParameter("txtId")));
                    p.setNome(request.getParameter("txtNome"));
                    p.setEmail(request.getParameter("txtEmail"));
                    p.setTelefone(request.getParameter("txtTelefone"));
                    p.setDatanascimento(request.getParameter("txtData"));
                    resposta = dao.alterar(p);
                    request.setAttribute("resposta", resposta);
                }else if (request.getParameter("btnDeletaar") !=null) {
                    p.setIdPessoa(Integer.parseInt(request.getParameter("txtId")));
                    resposta = dao.excluir(p);
                }
                
                rd = request.getRequestDispatcher("listaPessoa.jsp");

            }catch (Exception e) {
                System.out.println ("Erro" + e);
            }

            rd.forward(request, response);
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}

Da classe, DAO:

import apoio.ConexaoBD;
import entidade.Pessoa;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.*;

public class PessoaDAO implements Operacoes {
     private Connection conn;
     private ConexaoBD conexao;
 
    public PessoaDAO () {
        this.conexao = new ConexaoBD ();
        this.conn = this.conexao.getConexao ();
    }
    
    @Override
    public String cadastrar(Object obj) {
     
        Pessoa pessoa = (Pessoa) obj;
        String sql = "INSERT INTO pessoa (nome, email, telefone, data_nascimento) VALUES "
                + "(?,?,?,?)"; 
        try {
            PreparedStatement stmt = this.conn.prepareStatement(sql);
            stmt.setString  (1, pessoa.getNome());
            stmt.setString  (2, pessoa.getEmail());
            stmt.setString  (3, pessoa.getTelefone());
            stmt.setString  (4, pessoa.getDatanascimento());
            
            stmt.execute();
            stmt.close();
            
           System.out.println ("Salvo com Sucesso");
             
        } catch (Exception ex) {
            System.out.println("Erro ao inserir" + ex);
        }
         return null;
    }

    @Override
    public String excluir(Object obj) {
       
        Pessoa pessoa = (Pessoa) obj;
        String sql = "DELECT FROM pessoa WHERE idPessoa "; 
             
        try {
            PreparedStatement stmt = this.conn.prepareStatement(sql);
            stmt.setInt (1, pessoa.getIdPessoa());
            stmt.execute ();
            stmt.close();
             
           System.out.println ("Removido com Sucesso");
            
        } catch (Exception ex) {
           System.out.println ( "Erro ao deletar Alunno" + ex);
        }
         return null;
    }

    @Override
    public String alterar(Object obj) {
        
        Pessoa pessoa = (Pessoa) obj;
        String sql = "UPDATE pessoa SET nomee=?, email=?, telefone=?, data_nascimento=? WHERE idPessoao=? "; 
        
        try {
            PreparedStatement stmt = this.conn.prepareStatement(sql);
            stmt.setString  (1, pessoa.getNome());
            stmt.setString  (2, pessoa.getEmail());
            stmt.setString  (3, pessoa.getTelefone());
            stmt.setString  (4, pessoa.getDatanascimento());
            stmt.setInt     (5, pessoa.getIdPessoa());
            
            stmt.execute();
            stmt.close();
            
          System.out.println ("Alterado com Sucesso");
            
             
        } catch (Exception ex) {
            System.out.println("Erro ao inserir" + ex);
        }
         String retorno = null;
         return retorno;
    }

    @Override
    public List<Pessoa> listar() {
      
          String sql = "SELECT * FROM pessoa";
       
       try {
           PreparedStatement stmt = this.conn.prepareStatement(sql);
           ResultSet rs = stmt.executeQuery();
           List<Pessoa> listaPessoa = new ArrayList<> ();
           
           while (rs.next()) {
               Pessoa p = new Pessoa ();
        
               p.setIdPessoa(rs.getInt("idPessoa"));
               p.setNome(rs.getString("nome"));
               p.setEmail(rs.getString("email"));
               p.setTelefone(rs.getString ("telefone"));
               p.setDatanascimento(rs.getString("data_nascimento"));
               
          listaPessoa.add(p);

           }
      return listaPessoa;
      
       } catch (Exception ex) {
            System.out.println ( "Erro ao buscar" + ex);
       }
         return null;
    }


}

O FUMULÁRIO:

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@page import = "dao.PessoaDAO" %>
<%@page import = "entidade.Pessoa" %>
<%@page import = "apoio.ConexaoBD" %>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Painel - Cadastro de Dados</title>
    </head>
    <body>
        <br>
        <form name="formPessoa" method="POST" action="">
            ID Pessoa:<input type="text" name="txtId"><br>
            Nome:<input type="text" name="txtNome"><br>
            Email:<input type="text" name="txtEmail"><br>
            Telefone:<input type="text" name="txtTelefone"><br>
            Data nascimento:<input type="text" name="txtData"><br>
            <br>
            <input type="submit" name="btnInserir" value="Cadastrar">
            <input type="submit" name="btnModificar" value="Alterar">
            <input type="submit" name="btnDeletar" value="Excluir">      
        </form>
        
        <br>
    <hr> <center>
        <table border="1">
            <tr>
                <th>ID</th>
                <th>NOME</th>
                <th>EMAIL</th>
                <th>TELEFONE</th>
                <th>DATA NASCIMENTO</th>
            </tr> 
        </table>
    </center>
        
    </body>
</html>

O arquivo xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>listaPessoa.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
        <servlet-name>SERVPessoa</servlet-name>
        <servlet-class>servlet.SERVPessoa</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>SERVPessoa</servlet-name>
        <url-pattern>/SERVPessoa</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

Como disse, sou nova em programção e estou quebrando a cabeça com isso!

17 Respostas

N

o arquivo XML:

O Formulário

L

Vc precisa preencher o atributo action do form com o caminho da servlet:

Pode ser assim:

<form name="formPessoa" method="POST" action="SERVPessoa">

Ou pegando o caminho completo da página, incluindo o contexto da aplicação (acho melhor desse jeito):

<form name="formPessoa" method="POST" action="${pageContext.request.contextPath}/SERVPessoa">
N

obrigado pela resposta, mas infelizmente não tive exito, ao fazer o encaminhamento, ele apresenta o erro 404

N

Estou utilizando netbeans 4.0 e TomCat 10

L

Como ficou o form depois da alteração?

N

ao clicar em uma das opções, que me levara ao servlet, dá o erro

L

Reparei agora que a servlet não tem um package declarado. Ela deveria está no pacote servlet.

N

talvez eu tenha esquecido de colocar, mas está sim

L

Ah sim, faz um outro teste. Tente executar seu projeto usando o tomcat 9 em vez do 10. Se me lembro bem, houve umas mudanças nessa versão 10 que causou incompatibilidade com alguns pacote do javax. Deve ser isso, pq, depois que vc arrumou o action do form, seu código parece estar correto agora.

N

obrigado pela dica, já hávia lido em outras partes por ai, acabei de baixar e instalar o 9.052 e segue dando o mesmo erro…

L

Realmente, não consigo ver mais da que possa está errado no seu código. Dá alguma exception no servidor?

N

Não, nenhuma, unico detalhe que aparece ao excutar es

L

Vc consegue colocar o código em algum local como google drive ou dropbox e mandar o link aqui? Posso tentar rodar para ver o que está errado.

N

Certo, aqui está

https://drive.google.com/drive/folders/1gi9LVkm43Ws-GtHOFZjOfKWkOBL8vz0n?usp=sharing

L
Solucao aceita

Bom, testei aqui e o servlet foi acessado. Não deu erro 404. Rodei no tomcat9 usando a jdk8.

Esse é um print com um breakpoint parado na servlet:

Só teve uma coisa que tive que mudar, mas não sei se foi eu quem fiz algo errado. No web.xml, a servlet estava com a escrita errada:

<servlet-class>servelet.SERVPessoa</servlet-class>

Estava servelet. Foi a única coisa que mudei.

L

Uai, deu certo? Bão uai. O q vc fez?

N

Oi Lucas! eu somente fiz a tua dica, e deu certo! obrigado!

Criado 6 de setembro de 2021
Ultima resposta 9 de set. de 2021
Respostas 17
Participantes 2