HTTP Status 500 – An exception occurred processing

Olá bom dia, alguém poderia me ajudar por favor

Estou fazendo um programa JavaWeb de cadastro de funcionários e quando eu mando executar meu código da isso:

type Exception report

message An exception occurred processing JSP page /mostrartodosfuncionarios.jsp at line 35

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /mostrartodosfuncionarios.jsp at line 35
Apache Tomcat/7.0.47 - Error report

31:
32:


33:
34: <%for(Funcionario funcionario:funcionarios){ %>
35:
36:
37:

Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

root cause

java.lang.NullPointerException br.com.a3.dao.FuncionarioDao.mostrarTodos(FuncionarioDao.java:47) org.apache.jsp.mostrartodosfuncionarios_jsp._jspService(mostrartodosfuncionarios_jsp.java:102) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334) javax.servlet.http.HttpServlet.service(HttpServlet.java:728) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.47 logs.

ArrayList funcionarios = (ArrayList)request.getAttribute(“listaFuncionariosRecebidos”);
%>

Mostrar Todos os Funcionarios

	<a href="cadastrarfuncionario.html"><button>Cadastrar Funcionário</button></a><br><br>
	<table width="80%" border="1" cellspacing="0">
		<thead>
		<tr bgcolor="black" style="color:white">
			<th>Código</th>
			<th>Nome</th>
			<th>Idade</th>
			<th>CPF</th>
			<th>RG</th>
			<th>Cargo</th>
			<th>Salário</th>
			</tr>
		</thead>
		
		<tbody>
		
		<%for(Funcionario funcionario:funcionarios){ %>
				
				<tr>
				
					<td><%=funcionario.getCodigo() %></td>
					<td><%=funcionario.getNome() %></td>
					<td><%=funcionario.getIdade() %></td>
					<td><%=funcionario.getCpf() %></td>
					<td><%=funcionario.getRg() %></td>
					<td><%=funcionario.getCargo() %></td>
					<td><%=funcionario.getSalario() %></td>
					<td><a href="removerfuncionario.do?codigo=<%=funcionario.getCodigo() %>">Excluir</a></td>
					<td><a href="alterarfuncionario.do?codigo=<%=funcionario.getCodigo() %>">Alterar </a></td>
				
				</tr>
		<%} %>
		</tbody>
	</table>

MostrarTodosFunc(Servelet)

@WebServlet("/mostrartodosfunc.do")
public class MostrarTodosFunc extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	FuncionarioDao funcionarioDao = new FuncionarioDao();
	ArrayList<Funcionario> funcionariosRecebidos = funcionarioDao.mostrarTodos();
	
	request.setAttribute("listaFuncionariosRecebidos", funcionariosRecebidos);
	request.getRequestDispatcher("mostrartodosfuncionarios.jsp").forward(request, response);
}

}

FuncionarioDao

public ArrayList mostrarTodos(){

	Connection con = Conexao.receberConexao();
	ArrayList<Funcionario> funcionarios = new ArrayList<Funcionario>();
	
	String sql = "SELECT * FROM funcionario";
	
	try {
		PreparedStatement preparador = con.prepareStatement(sql);
		ResultSet resultado = preparador.executeQuery();
		
		while(resultado.next()) {
			
			Funcionario funcionario = new Funcionario();
			funcionario.setCodigo(resultado.getInt("codigo"));
			funcionario.setNome(resultado.getString("nome"));
			funcionario.setIdade(resultado.getString("idade"));
			funcionario.setCpf(resultado.getString("cpf"));
			funcionario.setRg(resultado.getString("rg"));
			funcionario.setCargo(resultado.getString("cargo"));
			funcionario.setSalario(resultado.getDouble("salario"));
			
			funcionarios.add(funcionario);
			
		}
		
	}catch (SQLException e) {
		e.printStackTrace();
	}

	return funcionarios;
	
}

MostrarTodosFunc(Servelet)

@WebServlet("/mostrartodosfunc.do")
public class MostrarTodosFunc extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	FuncionarioDao funcionarioDao = new FuncionarioDao();
	ArrayList<Funcionario> funcionariosRecebidos = funcionarioDao.mostrarTodos();
	
	request.setAttribute("listaFuncionariosRecebidos", funcionariosRecebidos);
	request.getRequestDispatcher("mostrartodosfuncionarios.jsp").forward(request, response);
}

}

FuncionarioDao

public ArrayList mostrarTodos(){

	Connection con = Conexao.receberConexao();
	ArrayList<Funcionario> funcionarios = new ArrayList<Funcionario>();
	
	String sql = "SELECT * FROM funcionario";
	
	try {
		PreparedStatement preparador = con.prepareStatement(sql);
		ResultSet resultado = preparador.executeQuery();
		
		while(resultado.next()) {
			
			Funcionario funcionario = new Funcionario();
			funcionario.setCodigo(resultado.getInt("codigo"));
			funcionario.setNome(resultado.getString("nome"));
			funcionario.setIdade(resultado.getString("idade"));
			funcionario.setCpf(resultado.getString("cpf"));
			funcionario.setRg(resultado.getString("rg"));
			funcionario.setCargo(resultado.getString("cargo"));
			funcionario.setSalario(resultado.getDouble("salario"));
			
			funcionarios.add(funcionario);
			
		}
		
	}catch (SQLException e) {
		e.printStackTrace();
	}

	return funcionarios;
	
}

Use o debug, marque a linha 47 do método mostrarTodos, veja qual variável está null.

O atributo listaFuncionariosRecebidos foi enviado na requisição?
Ou está solicitando o atributo antes de fazer o set dele nas instrução ?request.setAttribute("listaFuncionariosRecebidos", funcionariosRecebidos);

Quem tem que armazenar o resultado é a sessão, não o request.
(HttpSession)request.getSession().setAttribute("listaFuncionariosRecebidos", funcionariosRecebidos);
Assim, que tem que buscar o resultado é a sessão, não o request.
(HttpSession)request.getSession().getAttribute("listaFuncionariosRecebidos");

Ficaria assim no servelet?

public class MostrarTodosFunc extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String HttpSession = null;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
	FuncionarioDao funcionarioDao = new FuncionarioDao();
	ArrayList<Funcionario> funcionariosRecebidos = funcionarioDao.mostrarTodos();
	
	(HttpSession).request.getSession().setAttribute("listaFuncionariosRecebidos", funcionariosRecebidos);
	(HttpSession).request.getSession().getAttribute("listaFuncionariosRecebidos");
}

}

Consegui resolver com isso, agora está dando NullPointerException na linha 47 como vc tinha mencionado mais eu rodo o debug nela e não da nenhum tipo de erro

A instrução deve ser chamada na página JSP.
Se não chamar ela lá da nullPointerException.
No servlet vc chama o setAttribute (ok).
Na JSP o getAttribute(falta chamar lá).

Na JSP substituir por <%ArrayList funcionarios = (ArrayList)((HttpSession) request.getSession().getAttribute(“listaFuncionariosRecebidos”));
%>

O HttpSession eu preciso criar uma constant uma variavel ou definir um parametro pq ta dando erro. E qualquer um desses que eu crio da erro no request se eu deixar sem o HttpSession ele volta pro primeiro erro que estava dando

se eu deixo apenas o resquest.getSession ele funciona mais da o erro do NullPointer

Meu servelet ta assim:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

	FuncionarioDao funcionarioDao = new FuncionarioDao();
	ArrayList<Funcionario> funcionariosRecebidos = funcionarioDao.mostrarTodos();
	
	
	(HttpSession).request.getSession().setAttribute("listaFuncionariosRecebidos", funcionariosRecebidos);
	(HttpSession).request.getSession().getAttribute("listaFuncionariosRecebidos");

O erro que da no request fala para eu renomear ele

}

}

Se ficar assim da o primeiro erro que deu no começo do tópico

<%
ArrayList funcionarios = (ArrayList)(HttpSession)request.getSession().getAttribute(“listaFuncionariosRecebidos”);
%>

Nao tem ponto depois do casting (HttpSession) request.getSession().setAttribute("listaFuncionariosRecebidos);

Esta instrução: <%ArrayList funcionarios = (ArrayList)request.getAttribute(“listaFuncionariosRecebidos”);
%> deve ser chamada na JSP.

Qual o Html completo da JSP?

Mostrar Todos os Funcionarios

	<a href="cadastrarfuncionario.html"><button>Cadastrar Funcionário</button></a><br><br>
	<table width="80%" border="1" cellspacing="0">
		<thead>
		<tr bgcolor="black" style="color:white">
			<th>Código</th>
			<th>Nome</th>
			<th>Idade</th>
			<th>CPF</th>
			<th>RG</th>
			<th>Cargo</th>
			<th>Salário</th>
			</tr>
		</thead>
		
		<tbody>
		
		<%for(Funcionario funcionario:funcionarios){ %>
				
				<tr>
				
					<td><%=funcionario.getCodigo() %></td>
					<td><%=funcionario.getNome() %></td>
					<td><%=funcionario.getIdade() %></td>
					<td><%=funcionario.getCpf() %></td>
					<td><%=funcionario.getRg() %></td>
					<td><%=funcionario.getCargo() %></td>
					<td><%=funcionario.getSalario() %></td>
					<td><a href="removerfuncionario.do?codigo=<%=funcionario.getCodigo() %>">Excluir</a></td>
					<td><a href="alterarfuncionario.do?codigo=<%=funcionario.getCodigo() %>">Alterar </a></td>
				
				</tr>
		<%} %>
		</tbody>
	</table>

<%@page import=“br.com.a3.dao.Funcionario” %>
<%@page import=“java.util.ArrayList”%>
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>

Mostrar Todos Funcionarios <% ArrayList funcionarios = (ArrayList)(HttpSession)request.getSession().getAttribute("listaFuncionariosRecebidos"); %>
	<h1>Mostrar Todos os Funcionarios</h1>
	
	<a href="cadastrarfuncionario.html"><button>Cadastrar Funcionário</button></a><br><br>
	<table width="80%" border="1" cellspacing="0">
		<thead>
		<tr bgcolor="black" style="color:white">
			<th>Código</th>
			<th>Nome</th>
			<th>Idade</th>
			<th>CPF</th>
			<th>RG</th>
			<th>Cargo</th>
			<th>Salário</th>
			</tr>
		</thead>
		
		<tbody>
		
		<%for(Funcionario funcionario:funcionarios){ %>
				
				<tr>
				
					<td><%=funcionario.getCodigo() %></td>
					<td><%=funcionario.getNome() %></td>
					<td><%=funcionario.getIdade() %></td>
					<td><%=funcionario.getCpf() %></td>
					<td><%=funcionario.getRg() %></td>
					<td><%=funcionario.getCargo() %></td>
					<td><%=funcionario.getSalario() %></td>
					<td><a href="removerfuncionario.do?codigo=<%=funcionario.getCodigo() %>">Excluir</a></td>
					<td><a href="alterarfuncionario.do?codigo=<%=funcionario.getCodigo() %>">Alterar </a></td>
				
				</tr>
		<%} %>
		</tbody>
	</table>

Eu deixando o:

(HttpSession) request.getSession().setAttribute(“listaFuncionariosRecebidos”, funcionariosRecebidos);
(HttpSession) request.getSession().getAttribute(“listaFuncionariosRecebidos”);

Da esse erro entre o (HttpSession) e o request :

Multiple markers at this line
- Syntax error, insert “AssignmentOperator Expression” to complete Assignment
- Syntax error, insert “;” to complete Statement
- The method setAttribute(String, Object) in the type HttpSession is not applicable for the arguments
(String)

Responder por celular da nisso, erro de sintaxe.

Tente:
No servlet:

@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        FuncionarioDao funcionarioDao = new FuncionarioDao();
	ArrayList<Funcionario> funcionariosRecebidos = funcionarioDao.mostrarTodos();
	HttpSession session = request.getSession();
        session.setAttribute("listaFuncionariosRecebidos", funcionariosRecebidos);
        request.getRequestDispatcher("mostrartodosfuncionario.jsp").forward(request, response);
	
    }

Na JSP:

<% 
    
    ArrayList<Funcionario> funcionarios = (ArrayList<Funcionario>)session.getAttribute("listaFuncionariosRecebidos"); 
%>

	<h1>Mostrar Todos os Funcionarios</h1>
	
	<a href="cadastrarfuncionario.html"><button>Cadastrar Funcionário</button></a><br><br>
	<table width="80%" border="1" cellspacing="0">
		<thead>
		<tr bgcolor="black" style="color:white">
			<th>Código</th>
			<th>Nome</th>
			<th>Idade</th>
			<th>CPF</th>
			<th>RG</th>
			<th>Cargo</th>
			<th>Salário</th>
			</tr>
		</thead>
		
		<tbody>
		
		<%for(Funcionario funcionario:funcionarios){ %>
				
				<tr>
				
					<td><%=funcionario.getCodigo() %></td>
					<td><%=funcionario.getNome() %></td>
					<td><%=funcionario.getIdade() %></td>
					<td><%=funcionario.getCpf() %></td>
					<td><%=funcionario.getRg() %></td>
					<td><%=funcionario.getCargo() %></td>
					<td><%=funcionario.getSalario() %></td>
					<td><a href="removerfuncionario.do?codigo=<%=funcionario.getCodigo() %>">Excluir</a></td>
					<td><a href="alterarfuncionario.do?codigo=<%=funcionario.getCodigo() %>">Alterar </a></td>
				
				</tr>
		<%} %>
		</tbody>
	</table>

Resultado emulado:

image

Continuou dando nullPointer

Vai ter que ser no debug.

Vc vai marcar todas as linhas do doGet e procurar por alguma variável que esteja null.

Depois vc vai marcar a linha:

E ver quem está como null.

Depois imprima a lista de erros.
Não restou a mim muitas suposições.

Por precaução, imprima o método mostrarTodos(), pra ver se ele retorna null;

Certo apareceu aqui que minha con na classe coxnexao está null é a unica que tem, tem uma forma de fazer a conexao sem ser null?

Connection con = null;

		try {
			Class.forName("com.mysql.jdbc.Driver");
			con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bdfuncionarios","root","");
			System.out.println("Banco de Dados Conectado com Sucesso!");
			
		} catch (SQLException | ClassNotFoundException e) {
			System.err.println("Erro ao Conectar ao Banco de Dados!");
			e.printStackTrace();
		}
		
		return con;
	}

}

Quando eu rodo o mostrarTodos no java ele mostra todos os dados cadastrado no banco de dados certinho

funcionarios também está null

No servlet marque a linha acima.
Execute o projeto com debug.
Veja se a variável funcionariosRecebidos está null.
Imprima o método mostrarTodos() aqui.
Imprima a pilha de erro aqui.

Eu não posso fazer muito apenas sugerir:
opçao 1

try{
        Class.forName("com.mysql.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bdfuncionarios","root","");
        System.out.println("Banco de Dados Conectado com Sucesso!");
} //manter o resto 

opçao 2

try{
        Class.forName("com.mysql.cj.jdbc.Driver");
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bdfuncionarios","root","");
        System.out.println("Banco de Dados Conectado com Sucesso!");
} //manter o resto 

opçao 3
1ª vá no projeto
2ª clique com o botão auxiliar em blibliotecas
3º clique em adicionar biblioteca
4º selecione a opção Driver JDBC do MySql
5º remover o Class.forName, como se segue:

try{
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/bdfuncionarios","root","");
        System.out.println("Banco de Dados Conectado com Sucesso!");
} //manter o resto