[RESOLVIDO] Dúvida ao fazer mapeamento Servlet

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!

o arquivo XML:

O Formulário

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

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

Estou utilizando netbeans 4.0 e TomCat 10

Como ficou o form depois da alteração?

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

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

talvez eu tenha esquecido de colocar, mas está sim

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.

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…

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

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

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.

Certo, aqui está

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

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.

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

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