Listar dados do banco em uma página jsp

Bom dia,

Estou tentando fazer com que uma pequena aplicação web liste todos os dados do BD, em uma tabela no navegador. Mas ele não lista. Alguém poderia me ajudar?

Classe: Lista.jsp



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Alunos</title>
    </head>
    <body>

    <h1>Lista de alunos</h1>
    
    <%@ page import="org.classe.Aluno" %>
             <%@ page import="org.classe.AlunoDAO" %>
             <%@ page import="java.util.ArrayList" %>
             <%@ page import="java.util.Iterator" %>
             
             
             <tr>
                <td>Nome</td>
                <td>Curso</td>
              </tr>
           
            <%
              AlunoDAO aluno = new AlunoDAO();
              ArrayList lista = aluno.listaAlunp();
              for (int i = 0; i < al.size(); i++ ) {
                 Aluno al = (Aluno) lista.get(i);
            %>
            
            <%
            }
            %>
             
             <tr> 
 		<td> <%= al.getNome() %> </td>
 		<td> <%= al.getCurso() %> </td>
 		
             </tr>	
             <%
              }
             %>
    
    </body>
</html>

Classe: ListaServlet



public class ListaServlet extends HttpServlet {
    
 
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
       Aluno al;
        response.setContentType("text/html;charset=UTF-8");
      
        String nome = request.getParameter("nome");
        String curso = request.getParameter("curso");
        
        ArrayList lista = new ArrayList();
        
        try{
       
            AlunoDAO aluno = new AlunoDAO();
            Iterator  iterator = lista.iterator();
            
            while (iterator.hasNext()) {
 	    al= (Aluno)iterator.next();
                                   
            }            
            
        }
        catch(Exception e ){
            
        }  
        
    }
   
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }
    
 
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    public String getServletInfo() {
        return "Short description";
    }
 

Classe: AlunoDAO


public ArrayList listaAluno(Aluno aluno) {
                      
        ArrayList lista = new ArrayList();
        
        try{
            ConexaoJDBC jdbc = new ConexaoJDBC();
            Connection con = jdbc.getConnection();
            Statement stm = con.createStatement();
            String sql = "SELECT * FROM dadosAlunos";
            ResultSet rs = stm.executeQuery(sql);

            while (rs.next())
            {
                aluno = new Aluno();
                aluno.setNome(rs.getString("nome"));
                aluno.setCurso(rs.getString("curso"));
                lista.add(aluno);
            }
            
            stm.close();
            con.close();
            
        }catch(Exception e){
            e.printStackTrace();
        }
        return lista;
    }   

Até mais

Patty

Oi Patty,

Vamos lá.

As boas práticas dizem que o jsp deve ser utilizado somente para apresentação de dados, mas não devemos entender isso como verdade absoluta. Existem casos onde isso não é possível.

Tendo isso como premissa, o que eu fiz no seu código fonte:

:arrow: Eu passei a lógica para o servlet, que chama o método e coloca a lista de alunos como objeto na request;
:arrow: No jsp, eu recupero esta lista de request e faço um loop gerando as linhas da tabela.

Então, ficou assim:

ListaServlet.java

package <especificar o nome da package>;

import java.io.*;
import java.util.*;

import javax.servlet.ServletException;
import javax.servlet.http.*;

public class ListaServlet extends HttpServlet {

	protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        	
		Aluno aluno = null;
         	String nome = request.getParameter("nome");
         	String curso = request.getParameter("curso");
         
         	List lista = null;
         
         	try{
        		AlunoDAO alunoDAO = new AlunoDAO();
             		lista = alunoDAO.listaAlunos(null);
			request.setAttribute("listaAlunos", lista);
			response.sendRedirect("lista.jsp");		
         	} catch(Exception e ){
           		// Tratar a exceção  
         	}  
     	}
    
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	      	processRequest(request, response);
     	}
     
    	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    	  	processRequest(request, response);
     	}
}

lista.jsp

<%@ page import="org.classe.Aluno" %>
<%@ page import="java.util.List" %>
<html>
	<head>
      	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
         	<title>Alunos</title>
     	</head>
     	<body>
     		<h1>Lista de alunos</h1>
     		<table>
			<tr>
				<td>Nome</td>
				<td>Curso</td>
	            	</tr>
        	    	<%
				List lista = (List)request.getAttribute("lista");
				for (int i = 0; i < lista.size(); i++ ) {
			%>
            		<tr> 
  				<td> <%=((Aluno)lista.get(i)).getNome() %> </td>
  				<td> <%=((Aluno)lista.get(i)).getCurso() %> </td>
  			</tr>	 
             		<%
             		}
             		%>
  		</table>     
     	</body>
</html>

Seus outros fontes não foram alterados.

Caso ainda não funcione, post aqui seu web.xml

Ps.: Eu editei tudo isso no notepad, então cole na ide e verifique se esta tudo ok.

[]'s

Obrigada!!!

Vou testar aqui…

Até mais

Patty

aproveitando o assunto… quando tento fazer o import para a classe ele não indentifica dando a mensagem “The import Class cannot be resolved”. Que configuração devo fazer?

Olá

A classe existe? o caminho está correto?

estava usando o default package, dai criei um novo pakage e daí ele conseguio identificar. Valeu.