Ola pessoa estou desenvolvendo um cadastro de Fornecedor para Fac, vou postar minhas Classes(Obs está implementado somendo o campo nome do Fornecedor para melhor intendimento)
Classe FornecedorDAO
package Persistencia;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import Negocio.Fornecedor;
public class FornecedorDAO implements DAO<Fornecedor> {
private Connection conexao = null;
private PreparedStatement ps = null;
private String sql = null;
private ResultSet rs = null;
private List<Fornecedor> lst = null;
@Override
public void insert(Fornecedor forn) {
conexao = FabricaConexao.getConexao();
sql = "INSERT Fornecedor (nome) VALUES (?)";
try {
ps = conexao.prepareStatement(sql);
ps.setString(1, forn.getNome());
ps.execute();
System.out.println("Fornecedor inserido com sucesso");
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Erro ao inserir no banco ");
} finally{
try {
ps.close();
conexao.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Erro fechar conexão com o banco ");
}
}
}
@Override
public void update(Fornecedor obj) {
}
@Override
public void delete(Fornecedor obj) {
}
@Override
public List<Fornecedor> read() {
conexao = FabricaConexao.getConexao();
sql = "SELECT * FROM Fornecedor";
Fornecedor f;
try {
ps = conexao.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
f = new Fornecedor(rs.getString("nome"));
lst.add(f);
}
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Erro ao criar lista de fornecedor ");
}finally{
try {
rs.close();
ps.close();
conexao.close();
} catch (SQLException e) {
e.printStackTrace();
System.out.println("Erro fechar conexão com o banco ");
}
}
return lst;
}
}
Classe Fornecedor
package Negocio;
public class Fornecedor {
private String nome;
public Fornecedor() {
}
public Fornecedor(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Classe CadastroFornecedorS - meu Servlet
package Apresentacao;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import Negocio.Fornecedor;
import Persistencia.FornecedorDAO;
public class CadastroFornecedorS extends HttpServlet implements Servlet {
private static final long serialVersionUID = 1L;
private FornecedorDAO fDAO = new FornecedorDAO();
public CadastroFornecedorS() {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doService(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doService(request, response);
}
protected void doService(HttpServletRequest request, HttpServletResponse response){
String nome = request.getParameter("nome");
Fornecedor fornecedor = new Fornecedor(nome);
fDAO.insert(fornecedor);
List<Fornecedor> lst = fDAO.read();
request.setAttribute("Lista",lst);
RequestDispatcher rDispatcher = request.getRequestDispatcher("ListaFornecedor.jsp");
try {
rDispatcher.forward(request,response);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Arquivo JSP que é direcionado pelo Servlet
<?xml version="1.0" encoding="ISO-8859-1" ?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0">
<jsp:directive.page language="java"
contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" />
<jsp:text>
<![CDATA[ <?xml version="1.0" encoding="ISO-8859-1" ?> ]]>
</jsp:text>
<jsp:text>
<![CDATA[ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> ]]>
</jsp:text>
<%@page import="java.util.List" %>
<%@page import="Negocio.Fornecedor" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Lista de Fornecedor</title>
</head>
<h1>Lista de Fornecedor</h1>
<table>
<tr>
<th>Número</th>
<th>Nome</th>
</tr>
<%
List<Fornecedor> lstForn = (List<Fornecedor>) request.getAttribute("Lista");
int num = 1;
for(Fornecedor forn : lstForn){
%>
<tr>
<th><%=num++%></th>
<th><%=forn.getNome()%></th>
</tr>
<%
}
%>
</table>
<p></p>
<p><a href="CadastroFornecedor.html">Voltar</a></p>
<body>
</body>
</html>
</jsp:root>
Arquivo HTML para o cadastro do Fornecedo
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<title>Cadastro de Fornecedor</title>
</head>
<body>
<h1>Cadastro de Fornecedor</h1>
<p></p>
<form name="frmCadastroFornecedor" method="post" action="CadastroFornecedorS">
<p><input type="text" name="nome" size="50"/></p>
<p><input type="submit" value="Cadastrar"/></p>
</form>
<p></p>
<p><a href='index.html'>Voltar</a></p>
</body>
</html>
Quando eu envio a requisição para meu Servlet apartir do botão cadastrar gera o seguinte erro
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
java.lang.NullPointerException
Persistencia.FornecedorDAO.read(FornecedorDAO.java:63)
Apresentacao.CadastroFornecedorS.doService(CadastroFornecedorS.java:42)
Apresentacao.CadastroFornecedorS.doPost(CadastroFornecedorS.java:30)
javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
note The full stack trace of the root cause is available in the Apache Tomcat/5.5.28 logs.
Pessoal o que pode ser? O problema é o Servlet eu acho!