Boa noite gente, estou com problema no meu codigo,ta dando um erro aqui,alguem me ajuda prf

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ page import="cadastro.web.bean.coordenador"%>
<%@ page import="java.util.ArrayList"%>
<%
 ArrayList<coordenador> lista = (ArrayList<coordenador>) request.getAttribute("coo");
%>
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="ISO-8859-1">
<title>Coordenadores</title>
<link rel="stylesheet" href="estilos.css">
</head>
<body>
	<h1>Lista de Coordernadores</h1>
	<a href="cadastrar.html" class="Botao">Adicionar Coordenador</a>
	<table>

		<thead>
			<tr>
				<th>Id</th>
				<th>Nome</th>
				<th>Curso</th>
				<th>Periodo</th>
			</tr>
		</thead>
		<tbody>
			<%
			for (int i = 0; i < lista.size(); i++) {
			%>
			<tr>
				<td><%=lista.get(i).getNome()%></td>
				<td><%=lista.get(i).getCurso()%></td>
				<td><%=lista.get(i).getPeriodo()%></td>
			</tr>
			<%
			}
			%>
		</tbody>
	</table>
</body>
</html>

O erro

org.apache.jasper.JasperException: An exception occurred processing [/coordenadores.jsp] at line [30]

27: 		</thead>
28: 		<tbody>
29: 			<%
30: 			for (int i = 0; i < lista.size(); i++) {
31: 			%>
32: 			<tr>
33: 				<td><%=lista.get(i).getNome()%></td>

Provavelmente apareceu uma stacktrace completa na tela por conta do erro. Vc consegue postar ela aqui pra gente ver?

Pela linha onde o erro foi indicado, talvez a variável lista esteja NULL, mas não dá para ter certeza sem ver a stacktrace completa.

Stacktrace:] with root cause
java.lang.NullPointerException: Cannot invoke “java.util.ArrayList.size()” because “lista” is null
at org.apache.jsp.coordenadores_jsp._jspService(coordenadores_jsp.java:150)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:466)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:379)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:327)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:833)

Agora no erro dá para ver a causa do erro:

java.lang.NullPointerException: Cannot invoke “java.util.ArrayList.size()” because “lista” is null

Como vc está setando o valor para o atributo coo?

package cadastro.web.controller;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cadastro.web.bean.coordenador;
import cadastro.web.dao.dao;


@WebServlet(urlPatterns={"/controller","/main","/insert"})
public class controller extends HttpServlet {
	private static final long serialVersionUID = 1L;

	dao dao=new dao();
	
	coordenador coo= new coordenador();
    
    public controller() {
        super();
    }

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		String action =request.getServletPath();
		System.out.println(action);
       if(action.equals("/main")) {
    	   coordenadores(request,response);
          }else if (action.equals("/insert")) {
        	  novoCoordenador(request,response);
          }else {
        	  response.sendRedirect("index.htmal");
          }
}
	protected void coordenadores(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		ArrayList<coordenador>lista = dao.listarCoordenador();
		request.setAttribute("coordenador", lista);
		RequestDispatcher rd= request.getRequestDispatcher("coordenadores.jsp");
		rd.forward(request, response);
	}
	protected void novoCoordenador(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	
     coo.setNome(request.getParameter("nome"));
      coo.setCurso(request.getParameter("curso"));
       coo.setPeriodo(request.getParameter("periodo"));
       dao.inserirCoordenador(coo);
      response.sendRedirect("main");
	}
}
package cadastro.web.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import cadastro.web.bean.coordenador;

public class dao {
	private String driver ="com.mysql.cj.jdbc.Driver";
	private String url="jdbc:mysql://127.0.0.1:3306/dbcadastro";
	private String user="root";
	private String password="ceuvermelho";
	 

	private Connection conectar() {
		Connection con=null;
		try {
		Class.forName(driver);
		con = DriverManager.getConnection(url, user, password);
		return con;
	}catch (Exception e) {
		 System.out.println(e);
			return null;
	}
	}
	public void inserirCoordenador(coordenador coo) {
		String create=" insert into coordenador(nome,cursos,periodo) values (?,?,?)";
	try{
		Connection con=conectar();
		PreparedStatement pst=con.prepareStatement(create);
		pst.setString(1, coo.getNome());
		pst.setString(2, coo.getCurso());
		pst.setString(3, coo.getPeriodo());
		pst.executeUpdate();
		con.close();
}catch (Exception e) {
			System.out.println(e);
		}
	}
	public ArrayList<coordenador> listarCoordenador(){
	  ArrayList<coordenador> coo = new ArrayList<>();
	  String read= "select * from coordenador order by nome";
	try {
		Connection con = conectar();
		PreparedStatement pst = con.prepareStatement(read);
		ResultSet rs = pst.executeQuery();
		while (rs.next()) {
			String nome = rs.getString(1);
			String curso = rs.getString(2);
			String periodo = rs.getString(3);
         coo.add(new coordenador(nome,curso,periodo));
		}
		con.close();
		
		return coo;
	} catch (Exception e) {
     System.out.println(e);
         return null;
}
	}
	}

Na servlet, vc está setando a lista como coordenador.

E na JSP, vc está tentando recuperar como coo.

Vc tem q usar o mesmo nome de atributo para funcionar.

Continua dando erro

qual a mudanca q vc fez? o erro continua o mesmo?

coordenador pra coo

Agora foi , muito obrigado cara
mudei de coo para coordenador

1 curtida

Boa noite! Estou tendo a mesma mensagem de erro que a do KBas, mas já conferi o set na servlet e a recuperação na JSP.

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

<%@ page import=“model.JavaBeans”%>

<%@ page import=“java.util.ArrayList”%>

<%

@SuppressWarnings(“unchecked”)

ArrayList lista = (ArrayList) request.getAttribute(“jogos”);

%>

package controller;

import java.io.IOException;
import java.util.ArrayList;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

import model.DAO;
import model.JavaBeans;

@WebServlet(urlPatterns = { “/Controller”, “/main”, “/insert”, “/select”, “/update”, “/delete”, “/report” })
public class Controller extends HttpServlet {
private static final long serialVersionUID = 1L;
DAO dao = new DAO();
JavaBeans jogo = new JavaBeans();

public Controller() {
	super();
}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	String action = request.getServletPath();
	if (action.equals("/main")) {
		jogos(request, response);
	} else if (action.equals("/insert")) {
		novoJogo(request, response);
	} else if (action.equals("/select")) {
		listarJogo(request, response);
	} else if (action.equals("/update")) {
		editarJogo(request, response);
	} else if (action.equals("/delete")) {
		removerJogo(request, response);
	} else if (action.equals("/report")) {
		gerarRelatorio(request, response);
	} else {
		response.sendRedirect("index.html");
	}
}

// Listar jogos
protected void jogos(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	// Criando um objeto que irá receber os dados JavaBeans
	ArrayList<JavaBeans> lista = dao.listarJogos();
	// Encaminhar a lista ao documento jogo.jsp
	request.setAttribute("jogos", lista);
	RequestDispatcher rd = request.getRequestDispatcher("jogo.jsp");
	rd.forward(request, response);
}

// Novo jogo
protected void novoJogo(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	response.sendRedirect("jogo.jsp");
	// Setar as variáveis JavaBeans
	jogo.setNome(request.getParameter("nome"));
	jogo.setPlataforma(request.getParameter("plataforma"));
	jogo.setDesenvolvedor(request.getParameter("desenvolvedor"));
	// Invocar o método inserirJogo passando o objeto jogo
	dao.inserirJogo(jogo);
	// Redirecionar para o documento jogo.jsp
	response.sendRedirect("main");
}

// Listar jogo
protected void listarJogo(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	// recebimento do id do jogo que será editado
	// Setar a variável JavaBeans
	jogo.setIdjogo(request.getParameter("idjogo"));
	// Executar o método selecionarJogo
	dao.selecionarJogo(jogo);
	// Setar os atributos do formulário com o conteúdo JavaBeans
	request.setAttribute("idjogo", jogo.getIdjogo());
	request.setAttribute("nome", jogo.getNome());
	request.setAttribute("plataforma", jogo.getPlataforma());
	request.setAttribute("desenvolvedor", jogo.getDesenvolvedor());
	// Encaminhar ao documento editar.jsp
	RequestDispatcher rd = request.getRequestDispatcher("editar.jsp");
	rd.forward(request, response);
}
// Editar jogo
protected void editarJogo(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	// Setar as variáveis JavaBeans
	jogo.setIdjogo(request.getParameter("idjogo"));
	jogo.setNome(request.getParameter("nome"));
	jogo.setPlataforma(request.getParameter("plataforma"));
	jogo.setDesenvolvedor(request.getParameter("desenvolvedor"));
	// Executar o método alterarJogo
	dao.alterarJogo(jogo);
	// Redirecionar para o documento jogo.jsp (atualizando as alterações)
	response.sendRedirect("main");
}

// Remover um jogo
protected void removerJogo(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	// recebimento do id do jogo a ser excluído (validador.js)
	String idjogo = request.getParameter("idjogo");
	// Setar a variavel idjogo JavaBeans
	jogo.setIdjogo(idjogo);
	// Executar o método deletarJogo (DAO) passando o objeto jogo como parâmetro
	dao.deletarJogo(jogo);
	// Redirecionar para o documento jogo.jsp (atualizando as alterações)
	response.sendRedirect("main");
}
// Gerar relatório em PDF
protected void gerarRelatorio(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {
	Document documento = new Document();
	try {
		// Tipo de conteúdo
		response.setContentType("apllication/pdf");
		// Nome do documento
		response.addHeader("Content-Disposition", "inline; filename=" + "jogos.pdf");
		// Criar o documento
		PdfWriter.getInstance(documento, response.getOutputStream());
		// Abrir o documento
		documento.open();
		documento.add(new Paragraph("Lista de jogos: "));
		documento.add(new Paragraph(" "));
		// Criar uma tabela
		PdfPTable tabela = new PdfPTable(3);
		// Cabeçalho
		PdfPCell col1 = new PdfPCell(new Paragraph("Nome"));
		PdfPCell col2 = new PdfPCell(new Paragraph("Plataforma"));
		PdfPCell col3 = new PdfPCell(new Paragraph("Desenvolvedor"));
		tabela.addCell(col1);
		tabela.addCell(col2);
		tabela.addCell(col3);
		// Incrementar a tabela com os jogos
		ArrayList<JavaBeans> lista = dao.listarJogos();
		for (int i = 0; i < lista.size(); i++ ) {
			tabela.addCell(lista.get(i).getNome());
			tabela.addCell(lista.get(i).getPlataforma());
			tabela.addCell(lista.get(i).getDesenvolvedor());
		}
		documento.add(tabela);
		documento.close();
	} catch (Exception e) {
		System.out.println(e);
		documento.close();
	}
}

}