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 /ServletAlunopom.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” %>
</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);
}
}