Erro no encaminhamento de objetos na Servlet

Estou com o seguinte problema:
Estou usando o banco de dados Mysql
Usando o Tomcat 11 ou 10
JSTL 2.0.0

Consigo realizar o cadastro do formulário, normalmente.
Entretanto a Servlet não encaminha o objeto para a página JSP para listar os registros na tabela.
Não tem nenhum erro ou exceção no log do servidor.

Segue os códigos:

context.xml

<?xml version="1.0" encoding="UTF-8"?>

web.xml

<?xml version="1.0" encoding="UTF-8"?> ServletAluno br.com.academia.src.servlets.ServletAluno ServletAluno /ServletAluno

pom.xml

4.0.0
com.mycompany
Academia
1.0-SNAPSHOT
war
Academia-1.0-SNAPSHOT

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <jakartaee>10.0.0</jakartaee>
</properties>

<dependencies>
    <dependency>
        <groupId>jakarta.platform</groupId>
        <artifactId>jakarta.jakartaee-api</artifactId>
        <version>${jakartaee}</version>
        <scope>provided</scope>
    </dependency>
 
    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.33</version>
    </dependency>

    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>jakarta.servlet.jsp.jstl</artifactId>
        <version>2.0.0</version>
    </dependency>

</dependencies>


<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>11</source>
                <target>11</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>3.3.2</version>
        </plugin>
    </plugins>
</build>

Aluno.java
package br.com.academia.src.model;

/**
*

  • @author miche
    */
    public class Aluno {

    private int matriculaAluno;
    private String nomeAluno;
    private String estadoAluno;
    private String cidadeAluno;

    public Aluno() {

    }

    public void setMatriculaAluno(int matriculaAluno) {
    this.matriculaAluno = matriculaAluno;
    }

    public void setNomeAluno(String nomeAluno) {
    this.nomeAluno = nomeAluno;
    }

    public void setEstadoAluno(String estadoAluno) {
    this.estadoAluno = estadoAluno;
    }

    public void setCidadeAluno(String cidadeAluno) {
    this.cidadeAluno = cidadeAluno;
    }

    public int getMatriculaAluno() {
    return matriculaAluno;
    }

    public String getNomeAluno() {
    return nomeAluno;
    }

    public String getEstadoAluno() {
    return estadoAluno;
    }

    public String getCidadeAluno() {
    return cidadeAluno;
    }
    }

DAOAluno.java
package br.com.academia.src.dao;

import br.com.academia.src.conexaobd.ConexaoBD;
import br.com.academia.src.model.Aluno;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
*

  • @author miche
    */
    public class DAOAluno {

    private Connection conexao;

    public DAOAluno() {
    this.conexao = new ConexaoBD().getConexao();
    }

    public void inserirAluno(Aluno aluno) {
    String sql = “INSERT INTO aluno (matriculaAluno, nomeAluno, estadoAluno, cidadeAluno) VALUES (?, ?, ?, ?)”;

     try {
         PreparedStatement preparedStatement = conexao.prepareStatement(sql);
         preparedStatement.setInt(1, aluno.getMatriculaAluno());
         preparedStatement.setString(2, aluno.getNomeAluno());
         preparedStatement.setString(3, aluno.getEstadoAluno());
         preparedStatement.setString(4, aluno.getCidadeAluno());
    
         preparedStatement.execute();
    
     } catch (SQLException e) {
         e.printStackTrace(); // Trate a exceção de maneira adequada
     }
    

    }

    public void removerAluno(int matriculaAluno) {
    String sql = “DELETE FROM aluno WHERE matriculaAluno = ?”;

     try {
         PreparedStatement preparedStatement = conexao.prepareStatement(sql);
    
         preparedStatement.setInt(1, matriculaAluno);
    
         preparedStatement.executeUpdate();
    
     } catch (SQLException e) {
         e.printStackTrace(); // Trate a exceção de maneira adequada
     }
    

    }

    public void alterarAluno(Aluno aluno) {
    String sql = “UPDATE aluno SET nomeAluno = ?, estadoAluno = ?, cidadeAluno = ? WHERE matriculaAluno = ?”;

     try {
         PreparedStatement preparedStatement = conexao.prepareStatement(sql);
         preparedStatement.setString(1, aluno.getNomeAluno());
         preparedStatement.setString(2, aluno.getEstadoAluno());
         preparedStatement.setString(3, aluno.getCidadeAluno());
         preparedStatement.setInt(4, aluno.getMatriculaAluno());
    
         preparedStatement.executeUpdate();
    
     } catch (SQLException e) {
         e.printStackTrace(); // Trate a exceção de maneira adequada
     }
    

    }

    public Aluno pesquisarAluno(String nomeAluno) {
    String sql = “SELECT * FROM aluno WHERE nomeAluno LIKE ‘%?%’”;
    Aluno aluno = null;

     try (
             PreparedStatement preparedStatement = conexao.prepareStatement(sql)) {
    
         preparedStatement.setString(1, nomeAluno);
    
         try (ResultSet resultSet = preparedStatement.executeQuery()) {
             if (resultSet.next()) {
                 aluno = new Aluno();
                 aluno.setMatriculaAluno(resultSet.getInt("matriculaAluno"));
                 aluno.setNomeAluno(resultSet.getString("nomeAluno"));
                 aluno.setEstadoAluno(resultSet.getString("estadoAluno"));
                 aluno.setCidadeAluno(resultSet.getString("cidadeAluno"));
             }
         }
    
     } catch (SQLException e) {
         e.printStackTrace(); // Trate a exceção de maneira adequada
     }
    
     return aluno;
    

    }

    public ArrayList listarAlunos() {
    String sql = “SELECT * FROM aluno”;
    ArrayList alunos = new ArrayList<>();

     try (PreparedStatement preparedStatement = conexao.prepareStatement(sql); ResultSet resultSet = preparedStatement.executeQuery()) {
    
         while (resultSet.next()) {
             Aluno aluno = new Aluno();
             aluno.setMatriculaAluno(resultSet.getInt("matriculaAluno"));
             aluno.setNomeAluno(resultSet.getString("nomeAluno"));
             aluno.setEstadoAluno(resultSet.getString("estadoAluno"));
             aluno.setCidadeAluno(resultSet.getString("cidadeAluno"));
             alunos.add(aluno);
         }
    
     } catch (SQLException e) {
         e.printStackTrace(); // Trate a exceção de maneira adequada
     }
    
     return alunos;
    

    }
    }

cadastraraluno.jsp
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1” %>
<%@ taglib prefix=“c” uri=“Oracle Java Technologies | Oracle” %>

Cadastrar Aluno
</head>

<body onload="carregarAluno()">
    <c:out value="${numero}" />
    <h1>Cadastrar Aluno</h1>
    <form action="../ServletAluno" method="post">
        <input type="hidden" name="action" value="cadastrar">
        <!-- Aqui define a ação como "cadastrar" -->
        Matrícula: <input type="text" name="matriculaAluno" required><br>
        Nome: <input type="text" name="nomeAluno" required><br>
        Estado: <input type="text" name="estadoAluno" required><br>
        Cidade: <input type="text" name="cidadeAluno" required><br>
        <input type="submit" value="Cadastrar">
    </form>

    <table>
        <tr>
            <th>Matrícula</th>
            <th>Nome</th>
            <th>Estado</th>
            <th>Cidade</th>
            <th>Ações</th>
        </tr>
        <c:forEach items="${alunos}" var="aluno" >
            <tr>
                <td>${aluno.matriculaAluno}</td>
                <td>${aluno.nomeAluno}</td>
                <td>${aluno.estadoAluno}</td>
                <td>${aluno.cidadeAluno}</td>
                <td><a
                        href="ServletAluno?action=edit&matriculaAluno=${aluno.matriculaAluno}">Editar</a>
                    <a
                        href="ServletAluno?action=delete&matriculaAluno=${aluno.matriculaAluno}">Excluir</a>
                </td>
            </tr>
        </c:forEach>

    </table>

</body>

ServletAluno.java
package br.com.academia.src.servlets;

import br.com.academia.src.dao.DAOAluno;
import br.com.academia.src.model.Aluno;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;

public class ServletAluno extends HttpServlet {

private static final long serialVersionUID = 1L;
private DAOAluno daoAluno;
private ArrayList<Aluno> alunos = new ArrayList<>();

public ServletAluno() {
    daoAluno = new DAOAluno();
}

@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    System.out.println("Testes");
    listarAlunos(request, response);

}

@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String action = request.getParameter("action");
    if (action != null) {
        switch (action) {
            case "cadastrar":
                cadastrarAluno(request, response);
                break;
            case "remover":
                removerAluno(request, response);
                break;
            case "alterar":
                alterarAluno(request, response);
                break;
            case "pesquisar":
                pesquisarAluno(request, response);
                break;
            default:
                response.sendRedirect("../Academia/Aluno/index.jsp"); // Página inicial ou página de erro
        }
    } else {
        response.sendRedirect("../Academia/Aluno/index.jsp"); // Página inicial ou página de erro
    }

}

private void cadastrarAluno(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // Obtenha os parâmetros do formulário
    int matriculaAluno = Integer.parseInt(request.getParameter("matriculaAluno"));
    String nomeAluno = request.getParameter("nomeAluno");
    String estadoAluno = request.getParameter("estadoAluno");
    String cidadeAluno = request.getParameter("cidadeAluno");

    // Crie um objeto Aluno com os parâmetros
    Aluno aluno = new Aluno();
    aluno.setMatriculaAluno(matriculaAluno);
    aluno.setNomeAluno(nomeAluno);
    aluno.setEstadoAluno(estadoAluno);
    aluno.setCidadeAluno(cidadeAluno);
    // Chame o método de inserção do DAO
    daoAluno.inserirAluno(aluno);
   // request.setAttribute("operacaoBemSucedida", true); // ou false, dependendo do resultado da operação
    // Redirecione para a página de sucesso ou outra página desejada
    response.sendRedirect("../Academia/Aluno/cadastraraluno.jsp");
}

private void removerAluno(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    int matriculaAluno = Integer.parseInt(request.getParameter("matriculaAluno"));

    // Chame o método de remoção do DAO
    daoAluno.removerAluno(matriculaAluno);

    // Redirecione para a página de sucesso ou outra página desejada
    response.sendRedirect("../Academia/Aluno/cadastraraluno.jsp");
}

private void alterarAluno(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    // Obtenha os parâmetros do formulário
    int matriculaAluno = Integer.parseInt(request.getParameter("matriculaAluno"));
    String nomeAluno = request.getParameter("nomeAluno");
    String estadoAluno = request.getParameter("estadoAluno");
    String cidadeAluno = request.getParameter("cidadeAluno");

    // Crie um objeto Aluno com os parâmetros
    Aluno aluno = new Aluno();
    aluno.setMatriculaAluno(matriculaAluno);
    aluno.setNomeAluno(nomeAluno);
    aluno.setEstadoAluno(estadoAluno);
    aluno.setCidadeAluno(cidadeAluno);

    // Chame o método de alteração do DAO
    daoAluno.alterarAluno(aluno);

    // Redirecione para a página de sucesso ou outra página desejada
    response.sendRedirect("../Academia/Aluno/cadastraraluno.jsp");
}

private void pesquisarAluno(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String nomeAluno = request.getParameter("nomeAluno");

    // Chame o método de pesquisa do DAO
    Aluno aluno = daoAluno.pesquisarAluno(nomeAluno);

    //Você pode fazer algo com o aluno retornado, como enviá-lo para a página JSP
     request.setAttribute("aluno", aluno);
      request.getRequestDispatcher("../Academia/Aluno/cadastraraluno.jsp").forward(request, response);
}

private void listarAlunos(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    
       Boolean alunosCarregados = (Boolean) request.getSession().getAttribute("alunosCarregados");
       if (alunosCarregados == null || !alunosCarregados) {
            //Restante do código de pesquisa no DAO e redirecionamento
            request.getSession().setAttribute("alunosCarregados", true);
            //dentro do if antes do redirecionamento pra definir a variável de seção
       }
    alunos = daoAluno.listarAlunos();
    System.out.println("Teste2");
    System.out.println(alunos.get(1).getNomeAluno());
    request.setAttribute("alunos", alunos);
    int numero = 10;
    request.setAttribute("numero", numero);
    request.getRequestDispatcher("/Aluno/cadastraraluno.jsp").forward(request, response);
    
}

}